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.94.2) (envelope-from ) id 1tQAkq-000ZHN-0h for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 19:39:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tQAko-007zi0-92 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 19:39:42 +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.94.2) (envelope-from ) id 1tQAkm-007zej-Qy for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2024 19:39:41 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tQAkj-000O1s-0p for pgsql-hackers@postgresql.org; Tue, 24 Dec 2024 19:39:39 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-aa69077b93fso775230066b.0 for ; Tue, 24 Dec 2024 11:39:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735069175; x=1735673975; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kke47oMB+T9a7w+qM5sOcInfAXsnSPCbnJOog6nJX2A=; b=UZ08hrQ3+XD2+IEkqPTyYFmjDprMBYjCIK7zHO+Ps1mHwyNerZYs/wntpOY+SJ6B7f hWmWT0qtPErzgDzC/esptRFmV8KJsBzOuyStYbak/nzerJfEI9v9XLY1WbfDCuRn9j1Y SeXR0KB2uuBfPXB27nSvDVtk0rt50mHZr7WgGD3j6rLyUbz8iowHYafdakbyw4wiWFxs aG9xT8FausiqTnavUAe803zdyx80t8PwX2oKo/UFtG1dQHLhEHBOWhwupcI+mcVXO0MR uHIOqqbhlwndfwsDgoDqePf77G1n2wUERxsbaNyEEeeAo2n1aKB5UPqdZPoZbDalHsIi xUBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735069175; x=1735673975; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kke47oMB+T9a7w+qM5sOcInfAXsnSPCbnJOog6nJX2A=; b=MW2H6hzvTtlMQKYthQFn8PddVwKd+UpcF8IUi8dRHnkfE1WdWDZMsXw8oXgW94faGq KWC4DJA359L8K5CadvzLVLmYqda/WRdMew7EVb2L91wX7HuziTIrw0qa71hPbEuzwvdA ocKItka+I2Too2KfWS4uAZOOjAmEP3FeDQhykeix8E3gXf5m2B10Hxi9uWo1pgsvxoGq v2VzpcFapVfIXMhPPk/rYlMLErQ1NZyQZNUD+bmLMpRv/FO/XhrIFSbkzDD5Is0TW6/o 0XAvibhYHQ2IQuffVNTV+NM4yrl+7kmZhb3nyZ+pepfGVJ39cCANa36NNuGg2eJcDBnJ VvqA== X-Gm-Message-State: AOJu0YxP4Ib32HNEiY2ThgxESdICnns+vbidM+vbsY7+z0ddmrYbm8bZ IhlCa5cQbq1yJe232/NNGpPBvhTTLM7sGnpLblVAwiuLtWkXq5jgHmESbFIuScn/2DPH9c/6D/j WzpdVsb0hVKapE/5FCXL0IppItqU= X-Gm-Gg: ASbGncuL1S4teKJd5SjP5bZbj0lrpZKzRIvDkxM1k3TSgzgLNApjUjw564B7rtWy/+A zdBSoESXP/izHMv241v4DqQ/07b09rOkmpUjCQKs/DdejlFInWsONP1BlxCJUeV6tqdnJuQZ1 X-Google-Smtp-Source: AGHT+IFE36bgK4oBhvGFS1bcsvYQe/Fq6ll+ySs4YHJvb/JBF++sATEePGVLEbKYHre1vWuQ8Z9ptF6+EEIYy1BQgBQ= X-Received: by 2002:a17:907:3f9e:b0:aa6:7f99:81aa with SMTP id a640c23a62f3a-aac2d446f68mr1521536866b.6.1735069174592; Tue, 24 Dec 2024 11:39:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Tue, 24 Dec 2024 20:39:23 +0100 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Matthias van de Meent Cc: PostgreSQL Hackers , Andrey Borodin , Melanie Plageman Content-Type: multipart/mixed; boundary="000000000000d0b3b0062a094531" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d0b3b0062a094531 Content-Type: multipart/alternative; boundary="000000000000d0b3ae062a09452f" --000000000000d0b3ae062a09452f Content-Type: text/plain; charset="UTF-8" Hello! Rebased + snapshot resetting during validation + removed PROC_IN_SAFE_IC. Going to do some benchmarks soon. Best regards, Mikhail. > --000000000000d0b3ae062a09452f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hello!

Rebased=C2=A0+ snapshot resetting during validation=C2=A0+=C2=A0removed=C2=A0PROC_IN_SAF= E_IC.
Going to do some benchmarks soon.

= Best regards,
Mikhail.
--000000000000d0b3ae062a09452f-- --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0005-Allow-snapshot-resets-in-concurrent-unique-index-.patch" Content-Disposition: attachment; filename="v9-0005-Allow-snapshot-resets-in-concurrent-unique-index-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddch4 RnJvbSA4NmQ0OThkMThjMjMyYTYyYzRkYTRlNTg0OTI1OGMxYWIwOWY2OWIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2OSA1Lzld IEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVpbGRz CgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZpeGVk IHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVuZXNz IGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVwIGRl YWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNvbmN1 cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5pcXVl bmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNoZWNr cyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9hZCB0 aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZhbHVl cwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5uaW5n IGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVuZm9y Y2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAg IHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8 IDE3MyArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3Bs aXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGls cy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAg ICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFy aWFudHMuYyAgICB8ICA2NyArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAg ICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAg ICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAg ICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91 dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwg ODQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVB RE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3 ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9S RUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4 NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVm b3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZv ciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5k ZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55 IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9y d2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBk YXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhl IHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92 ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0 ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitm b3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMg dXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNo b3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRo ZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJv a2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVn dWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0 IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFs dWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5z ZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQg Zm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtl CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA4MTQ0NzQzYzMz OC4uMGY3MDY1NTM2MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0 byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxk LCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJ ICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0 IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVu aXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQg Y29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJl bnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNh bGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBs ZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYm Ci0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRh bG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBW QUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA0NTZk ODZiNTFjOS4uMzFiNTkyNjVhMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMK QEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3Rh cnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNl LCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0 ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9o dGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90 dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWws CiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVk dXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChf YnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYK KwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBO VUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXAp KQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5k aW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJl bGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0 ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRl bSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0 ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVw bGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zh c3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNf ZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1 ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNzgzNDg5NjAwZmMu LjM4MzU1NjAxNDIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMsNiAr ODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJ aXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFk X2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJv b2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJv b2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDMs MTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVj dCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlz dGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpz cG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlz IGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5z dGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNw b29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQg YnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8gc3Bv b2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4K IAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0zMDMs OCArMzAzLDYgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9C VUlMRF9TVEFUUyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5p cXVlOwotCWJ1aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxs c05vdERpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRl LmhlYXAgPSBoZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzc5LDYgKzM3Nywx MSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJYnRzcG9vbC0+aW5kZXggPSBpbmRleDsKIAlidHNw b29sLT5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25v dF9kaXN0aW5jdCA9IGluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsKKyAgICAvKgorICAg ICAqIFdlIG5lZWQgdG8gaWdub3JlIGRlYWQgdHVwbGVzIGZvciB1bmlxdWUgY2hlY2tzIGluIGNh c2Ugb2YgY29uY3VycmVudCBidWlsZC4KKyAgICAgKiBJdCBpcyByZXF1aXJlZCBiZWNhdXNlIG9y IHBlcmlvZGljIHJlc2V0IG9mIHNuYXBzaG90LgorICAgICAqLworCWJ0c3Bvb2wtPnVuaXF1ZV9k ZWFkX2lnbm9yZWQgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYgaW5kZXhJbmZvLT5paV9V bmlxdWU7CiAKIAkvKiBTYXZlIGFzIHByaW1hcnkgc3Bvb2wgKi8KIAlidWlsZHN0YXRlLT5zcG9v bCA9IGJ0c3Bvb2w7CkBAIC00MjcsOCArNDMwLDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCSAq IHRoZSB1c2Ugb2YgcGFyYWxsZWxpc20gb3IgYW55IG90aGVyIGZhY3Rvci4KIAkgKi8KIAlidWls ZHN0YXRlLT5zcG9vbC0+c29ydHN0YXRlID0KLQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KGhlYXAsIGluZGV4LCBidWlsZHN0YXRlLT5pc3VuaXF1ZSwKLQkJCQkJCQkJCWJ1aWxkc3RhdGUt Pm51bGxzX25vdF9kaXN0aW5jdCwKKwkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAs IGluZGV4LCBidHNwb29sLT5pc3VuaXF1ZSwKKwkJCQkJCQkJCWJ0c3Bvb2wtPm51bGxzX25vdF9k aXN0aW5jdCwKKwkJCQkJCQkJCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJ CQltYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCVRVUExFU09SVF9O T05FKTsKIApAQCAtNDM2LDggKzQ0MCwxMiBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogSWYg YnVpbGRpbmcgYSB1bmlxdWUgaW5kZXgsIHB1dCBkZWFkIHR1cGxlcyBpbiBhIHNlY29uZCBzcG9v bCB0byBrZWVwCiAJICogdGhlbSBvdXQgb2YgdGhlIHVuaXF1ZW5lc3MgY2hlY2suICBXZSBleHBl Y3QgdGhhdCB0aGUgc2Vjb25kIHNwb29sIChmb3IKIAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0 IHZlcnkgZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtLgorCSAqCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIGRlYWQgdHVwbGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQg aW50byBpbmRleAorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhh biByZWZlcmVuY2Ugc25hcHNob3QgZHVyaW5nIHRoZQorCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJ ICovCi0JaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlKQorCWlmIChpbmRleEluZm8tPmlpX1VuaXF1 ZSAmJiAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KQogCXsKIAkJQlRTcG9vbCAgICAqYnRzcG9v bDIgPSAoQlRTcG9vbCAqKSBwYWxsb2MwKHNpemVvZihCVFNwb29sKSk7CiAJCVNvcnRDb29yZGlu YXRlIGNvb3JkaW5hdGUyID0gTlVMTDsKQEAgLTQ2OCw3ICs0NzYsNyBAQCBfYnRfc3Bvb2xzX2hl YXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsCiAJCSAqIGZ1bGwsIHNvIHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJ YnVpbGRzdGF0ZS0+c3Bvb2wyLT5zb3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2J0cmVlKGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3Jr X21lbSwKIAkJCQkJCQkJCQljb29yZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAt MTE0NywxMyArMTE1NSwxMTYgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwog CWludDY0CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFp bF9vbl9hbGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19z dGFydF9yZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0g d3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJ CUJUR2V0RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlx dWVfZGVhZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFs aXZlCisJICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3Vj aCB0aGluZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdl ZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1l cmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2 ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9 IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNs b3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRU U09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFi bGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+ aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBs ZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQor CQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBm aXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBO VUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJl diAhPSBOVUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9v bAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBz b21ldGhpbmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICov CisJCQkJCQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlm IHRoaXMgdHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+ aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJ CQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4 LCBwcmV2LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJ LyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYg IWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7 CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMg dHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJ CQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNl ZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RT ZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0 cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVw LT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gs ICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJ CQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAq LworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIg KmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0 YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlE YXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUo aXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJ bmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJ CQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFy ZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2co ImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVz YyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJ CQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRh YmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUg fD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7 CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9 CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2 KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyog UmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJ CX0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhf ZmV0Y2hfZW5kKGZldGNoKTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewogCQkvKgogCQkgKiBB bm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdlIGhhdmUgdG8gbWVy Z2UKQEAgLTEzMTQsNyArMTQyNSw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCQlJbnZhbGlkT2Zm c2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRl LT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtleXN6ICYmCisJCQkJ CQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQo ZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQxMSw3ICsxNTIyLDYgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJw YXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRy dWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJYm9vbAkJd2FpdF9mb3Jfc25hcHNob3RfYXR0 YWNoOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC0xNDMwLDIxICsxNTQwLDEyIEBAIF9idF9iZWdp bl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBp bnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMg PyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZvciBjb25jdXJyZW50IG5v bi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90 cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZl IHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcg YWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEg c3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50 cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+ aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRp b24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVj YXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAq IHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBs ZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mg c25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0 LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBj YXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hp bGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICgh aXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTIsMTYgKzE1NTMsMTYgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJZWxzZQogCXsKKwkJ LyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5 IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFu Y2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgorCQkgKi8KIAkJc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBz aG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxf S0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzMSw2ICsxNjMyLDcgQEAgX2J0 X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJl bnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVsYXRpb25HZXRSZWxp ZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRzcG9vbC0+aXN1bmlx dWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9k aXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1 ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsK IAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJ YnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CkBAIC0xNTQ1LDcg KzE2NDcsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNo YXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJCSAgcmVzZXRfc25h cHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJl ZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpA QCAtMTYyNiw3ICsxNzI4LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugd2hl biBsZWFkZXIgZ29pbmcgdG8gcmVzZXQgb3duIGFjdGl2ZSBzbmFwc2hvdCBhcyB3ZWxsIC0gd2Ug bmVlZCB0bwogCSAqIHdhaXQgdW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFw c2hvdC4KIAkgKi8KLQl3YWl0X2Zvcl9zbmFwc2hvdF9hdHRhY2ggPSByZXNldF9zbmFwc2hvdCAm JiBsZWFkZXJwYXJ0aWNpcGF0ZXM7CisJd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoID0gaXNjb25j dXJyZW50ICYmIGxlYWRlcnBhcnRpY2lwYXRlczsKIAogCWlmICh3YWl0X2Zvcl9zbmFwc2hvdF9h dHRhY2gpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKQEAg LTE3NDIsNiArMTg0NCw3IEBAIF9idF9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRzdGF0ZS0+ c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUgPSBidWlsZHN0YXRlLT5zcG9v bC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3RfZGlzdGluY3QgPSBidWlsZHN0 YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRlcndvcmtlci0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJ LyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVkICovCiAJaWYgKCFidGxlYWRl ci0+YnRzaGFyZWQtPmlzdW5pcXVlKQpAQCAtMTg0NSwxMSArMTk0OCwxMiBAQCBfYnRfcGFyYWxs ZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJYnRzcG9vbC0+ aW5kZXggPSBpbmRleFJlbDsKIAlidHNwb29sLT5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1 ZTsKIAlidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QgPSBidHNoYXJlZC0+bnVsbHNfbm90X2Rp c3RpbmN0OworCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQgPSBidHNoYXJlZC0+dW5pcXVl X2RlYWRfaWdub3JlZDsKIAogCS8qIExvb2sgdXAgc2hhcmVkIHN0YXRlIHByaXZhdGUgdG8gdHVw bGVzb3J0LmMgKi8KIAlzaGFyZWRzb3J0ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfVFVQTEVTT1JULCBmYWxzZSk7CiAJdHVwbGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVkc29y dCwgc2VnKTsKLQlpZiAoIWJ0c2hhcmVkLT5pc3VuaXF1ZSkKKwlpZiAoIWJ0c2hhcmVkLT5pc3Vu aXF1ZSB8fCBidHNoYXJlZC0+aXNjb25jdXJyZW50KQogCXsKIAkJYnRzcG9vbDIgPSBOVUxMOwog CQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0xOTI4LDYgKzIwMzIsNyBAQCBfYnRfcGFyYWxsZWxf c2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJCQkJ CQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPmlzdW5pcXVl LAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QsCisJCQkJCQkJCQkJ CQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJCQkJCQkJIHNvcnRtZW0s IGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJIFRVUExFU09SVF9OT05FKTsKIApAQCAtMTk1MCwx NCArMjA1NSwxMiBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMiwKIAkJY29vcmRpbmF0ZTItPm5QYXJ0aWNpcGFudHMgPSAtMTsK IAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0MjsKIAkJYnRzcG9vbDItPnNv cnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoYnRzcG9vbC0+aGVhcCwg YnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwKKwkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9i dHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwK IAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29ya19tZW0pLCBjb29yZGluYXRlMiwKIAkJCQkJCQkJ CQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBpbiBidWlsZHN0YXRlIGZvciBfYnRfYnVpbGRfY2Fs bGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7Ci0J YnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3Rp bmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBi dHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBidHNwb29sOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4IDFmNDBkNDAyNjNlLi5lMmVkNDUzNzAyNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYwpAQCAtNjg3LDcgKzY4Nyw3 IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJl ciBtYXhvZmYsCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHN0YXRlLT5vcmlncGFnZSwg bWF4b2ZmKTsKIAkJdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHN0YXRlLT5vcmlncGFn ZSwgaXRlbWlkKTsKLQkJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwkJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAogCQlpZiAoa2VlcG5h dHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJCXsKQEAgLTcxOCw3ICs3MTgsNyBA QCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBPZmZzZXROdW1iZXIg bWF4b2ZmLAogCQkhX2J0X2FkamFjZW50aHRpZCgmdHVwLT50X3RpZCwgJnN0YXRlLT5uZXdpdGVt LT50X3RpZCkpCiAJCXJldHVybiBmYWxzZTsKIAkvKiBDaGVjayBzYW1lIGNvbmRpdGlvbnMgYXMg cmlnaHRtb3N0IGl0ZW0gY2FzZSwgdG9vICovCi0Ja2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNf ZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwlrZWVwbmF0dHMgPSBfYnRf a2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwog CiAJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRzIDw9IG5rZXlhdHRzKQogCXsKQEAgLTk2 Nyw3ICs5NjcsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9p bnQgKmxlZnRwYWdlLAogCSAqIGF2b2lkIGFwcGVuZGluZyBhIGhlYXAgVElEIGluIG5ldyBoaWdo IGtleSwgd2UncmUgZG9uZS4gIEZpbmlzaCBzcGxpdAogCSAqIHdpdGggZGVmYXVsdCBzdHJhdGVn eSBhbmQgaW5pdGlhbCBzcGxpdCBpbnRlcnZhbC4KIAkgKi8KLQlwZXJmZWN0cGVuYWx0eSA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCk7CisJcGVy ZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCBy aWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRua2V5YXR0cykKIAkJ cmV0dXJuIHBlcmZlY3RwZW5hbHR5OwogCkBAIC05ODgsNyArOTg4LDcgQEAgX2J0X3N0cmF0ZWd5 KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkgKiBJZiBwYWdl IGlzIGVudGlyZWx5IGZ1bGwgb2YgZHVwbGljYXRlcywgYSBzaW5nbGUgdmFsdWUgc3RyYXRlZ3kg c3BsaXQKIAkgKiB3aWxsIGJlIHBlcmZvcm1lZC4KIAkgKi8KLQlwZXJmZWN0cGVuYWx0eSA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCk7CisJcGVy ZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCBy aWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRua2V5YXR0cykKIAl7 CiAJCSpzdHJhdGVneSA9IFNQTElUX01BTllfRFVQTElDQVRFUzsKQEAgLTEwMjcsNyArMTAyNyw3 IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBh Z2UsCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdlLCBQX0hJS0VZKTsK IAkJaGlrZXkgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVt aWQpOwogCQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg aGlrZXksCi0JCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSk7CisJCQkJCQkJCQkJCSBzdGF0ZS0+ bmV3aXRlbSwgTlVMTCk7CiAJCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRua2V5YXR0cykKIAkJ CSpzdHJhdGVneSA9IFNQTElUX1NJTkdMRV9WQUxVRTsKIAkJZWxzZQpAQCAtMTE0OSw3ICsxMTQ5 LDcgQEAgX2J0X3NwbGl0X3BlbmFsdHkoRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQg KnNwbGl0KQogCWxhc3RsZWZ0ID0gX2J0X3NwbGl0X2xhc3RsZWZ0KHN0YXRlLCBzcGxpdCk7CiAJ Zmlyc3RyaWdodCA9IF9idF9zcGxpdF9maXJzdHJpZ2h0KHN0YXRlLCBzcGxpdCk7CiAKLQlyZXR1 cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCk7 CisJcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGFzdGxlZnQsIGZpcnN0 cmlnaHQsIE5VTEwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCmlu ZGV4IGE1MzFkMzc5MDhhLi5lNzI5YjRhNGQ3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 dXRpbHMuYwpAQCAtMTAwLDggKzEwMCw2IEBAIHN0YXRpYyBib29sIF9idF9jaGVja19yb3djb21w YXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyLCBib29sICpjb250 aW51ZXNjYW4pOwogc3RhdGljIHZvaWQgX2J0X2NoZWNra2V5c19sb29rX2FoZWFkKEluZGV4U2Nh bkRlc2Mgc2NhbiwgQlRSZWFkUGFnZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgaW50IHR1cG5h dHRzLCBUdXBsZURlc2MgdHVwZGVzYyk7Ci1zdGF0aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKLQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKIAogCiAvKgpAQCAtNDY3Niw3ICs0Njc0LDcg QEAgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYm ICFCVHJlZVR1cGxlSXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1h bnkgYXR0cmlidXRlcyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5h dHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkp OworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQs IGl0dXBfa2V5LCBOVUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2Ug dHJ1bmNhdGlvbiB0byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAt NDc5NCwxNyArNDc5MiwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxl IGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMg LSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisg KiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJp bmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0 dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxs ZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92aWRlcyB0 d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9u CiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdz IGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFz bnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55 IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRo YXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBm b3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxl ciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBs ZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbklu c2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wg Kmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9m S2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVz Y3IocmVsKTsKQEAgLTQ4MzAsNiArNDgzNSw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJl bCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVt MSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsK IAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAm aXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJCSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8 IGlzTnVsbDIpOwogCiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTQ4 NDksNyArNDg1Niw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVx dWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8 fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBm aXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwg bGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBA IC00ODYwLDcgKzQ4NjcsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVw bGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQg c28gdGhhdCBhIGNhbmRpZGF0ZSBzcGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAg KiBzdWZmaXggdHJ1bmNhdGlvbiBpbmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1l IHdoZW4gZmluZGluZyBhCiAgKiBzcGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHBy b2FjaCB0byBkYXR1bSBjb21wYXJpc29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAq IHNhdmUgY3ljbGVzLiBBbHNvLCBpdCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9u IGR1cmluZyBjb25jdXJyZW50CisgKiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhl IGFwcHJvYWNoIHRha2VuIGhlcmUgdXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMg X2J0X2tlZXBfbmF0dHMKICAqIHdpbGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9t IGEgaGVhcGtleXNwYWNlIGluZGV4KSwgc2luY2UgdGhlCkBAIC00ODY5LDYgKzQ4NzcsOCBAQCBf YnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVw bGUgZmlyc3RyaWdodCwKICAqICJlcXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFy YW50ZWVkIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3Vs ZC4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxs IGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFj dCB0aGF0IGF0dHJpYnV0ZXMgY29uc2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVs eSBhbHNvIGVxdWFsIGFjY29yZGluZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBp bmRleCB1c2VzCiAgKiBhbiBvcGNsYXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1 YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgpAQCAtNDg3Nyw3ICs0ODg3LDggQEAgX2J0X2tl ZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZp cnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9r ZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1 cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhU dXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxs cykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50 CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBA IC00ODk0LDYgKzQ5MDUsOCBAQCBfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5k ZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGlu ZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0 dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxs Mik7CisJCWlmIChoYXNudWxscykKKwkJCSpoYXNudWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIp OwogCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAK IAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBmY2I2ZTk0MGZm Mi4uNzM0NTRhY2NmNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlk YXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0 ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3Rs ZXZlbCk7CkBAIC0zMjkzLDkgKzMyOTMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4g IFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBh bnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAg KgotICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09f UkVTRVRfU05BUFNIT1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hv dCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3Ig dGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhl cm1vcmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNl cyBuZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRo ZSByZWFzb24gIGZvciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBm b3J3YXJkLgogICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0 IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNh Y3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKaW5kZXggNmMxZmNlOGVkMjUuLmEwMjcyOTkxMWZlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwpAQCAtMTY3MCw4ICsxNjcwLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5k IHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5 cy4KIAkgKgotCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJl IHZpc2libGUgdXNpbmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hv dHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQg dGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBs ZQorCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1Qg dXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUg aW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBk aWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xs ZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBp dHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCBlMDdi YTRlYTRiMS4uYWE0ZmNhYWM5YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQv dHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMKQEAgLTEyMyw2ICsxMjMsNyBAQCB0eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJ ZW5mb3JjZVVuaXF1ZTsJLyogY29tcGxhaW4gaWYgd2UgZmluZCBkdXBsaWNhdGUgdHVwbGVzICov CiAJYm9vbAkJdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsgLyogdW5pcXVlIGNvbnN0cmFpbnQgbnVs bCB0cmVhdG1lbnQgKi8KKwlib29sCQl1bmlxdWVEZWFkSWdub3JlZDsgLyogaWdub3JlIGRlYWQg dHVwbGVzIGluIHVuaXF1ZSBjaGVjayAqLwogfSBUdXBsZXNvcnRJbmRleEJUcmVlQXJnOwogCiAv KgpAQCAtMzQ5LDYgKzM1MCw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlv biBoZWFwUmVsLAogCQkJCQkJCVJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCWJvb2wgZW5mb3Jj ZVVuaXF1ZSwKIAkJCQkJCQlib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJYm9v bCB1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQlpbnQgd29ya01lbSwKIAkJCQkJCQlTb3J0Q29v cmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCWludCBzb3J0b3B0KQpAQCAtMzkxLDYgKzM5Myw3 IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+ aW5kZXguaW5kZXhSZWwgPSBpbmRleFJlbDsKIAlhcmctPmVuZm9yY2VVbmlxdWUgPSBlbmZvcmNl VW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3REaXN0aW5jdCA9IHVuaXF1ZU51bGxzTm90RGlz dGluY3Q7CisJYXJnLT51bmlxdWVEZWFkSWdub3JlZCA9IHVuaXF1ZURlYWRJZ25vcmVkOwogCiAJ aW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CiAKQEAgLTE1MjAs NiArMTUyMyw3IEBAIGNvbXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1 cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tF WVNdOwogCQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwogCQljaGFyCSAgICprZXlfZGVz YzsKKwkJYm9vbAkJdW5pcXVlQ2hlY2tGYWlsID0gdHJ1ZTsKIAogCQkvKgogCQkgKiBTb21lIHJh dGhlciBicmFpbi1kZWFkIGltcGxlbWVudGF0aW9ucyBvZiBxc29ydCAoc3VjaCBhcyB0aGUgb25l IGluCkBAIC0xNTI5LDE4ICsxNTMzLDU3IEBAIGNvbXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJl YWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJCSAqLwogCQlBc3Nl cnQodHVwbGUxICE9IHR1cGxlMik7CiAKLQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVw RGVzLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNj cmlwdGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAotCQkJCSBl cnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCi0JCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSksCi0JCQkJIGtleV9kZXNj ID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgotCQkJCSBl cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAotCQkJCSBlcnJ0YWJsZWNvbnN0cmFp bnQoYXJnLT5pbmRleC5oZWFwUmVsLAotCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo YXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCS8qIFRoaXMgaXMgZmFpbC1mYXN0IGNoZWNrLCBz ZWUgX2J0X2xvYWQgZm9yIGRldGFpbHMuICovCisJCWlmIChhcmctPnVuaXF1ZURlYWRJZ25vcmVk KQorCQl7CisJCQlib29sCWFueV90dXBsZV9kZWFkLAorCQkJCQljYWxsX2FnYWluID0gZmFsc2Us CisJCQkJCWlnbm9yZWQ7CisKKwkJCVR1cGxlVGFibGVTbG90CSpzbG90ID0gTWFrZVNpbmdsZVR1 cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoYXJnLT5pbmRleC5oZWFwUmVsKSwKKwkJCQkJ CQkJCQkJCQkJCSAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0 aWQgPSB0dXBsZTEtPnRfdGlkOworCisJCQlJbmRleEZldGNoVGFibGVEYXRhICpmZXRjaCA9IHRh YmxlX2luZGV4X2ZldGNoX2JlZ2luKGFyZy0+aW5kZXguaGVhcFJlbCk7CisJCQlhbnlfdHVwbGVf ZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxm LCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCisJCQlpZiAoIWFueV90dXBsZV9kZWFk KQorCQkJeworCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQl0aWQgPSB0dXBsZTItPnRfdGlk OworCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAm dHVwbGUyLT50X3RpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwKKwkJCQkJCQkJ CQkJCQkJICAmaWdub3JlZCk7CisJCQl9CisKKwkJCWlmIChhbnlfdHVwbGVfZGVhZCkKKwkJCXsK KwkJCQllbG9nKERFQlVHNSwgInNraXBwaW5nIGR1cGxpY2F0ZSB2YWx1ZXMgYmVjYXVzZSBzb21l IG9mIHRoZW0gYXJlIGRlYWQ6ICgldSwldSkgdnMgKCV1LCV1KSIsCisJCQkJCSBJdGVtUG9pbnRl ckdldEJsb2NrTnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zm c2V0TnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJnR1cGxlMi0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1 cGxlMi0+dF90aWQpKTsKKworCQkJCXVuaXF1ZUNoZWNrRmFpbCA9IGZhbHNlOworCQkJfQorCQkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCXRhYmxlX2luZGV4X2ZldGNo X2VuZChmZXRjaCk7CisJCX0KKwkJaWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhf ZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9k ZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFs dWVzLCBpc251bGwpOworCisJCQkvKiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdp dGggdGhlIHNhbWUgaW4gX2J0X2xvYWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3Qg Y3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRh aWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWls KCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJn LT5pbmRleC5oZWFwUmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShh cmctPmluZGV4LmluZGV4UmVsKSkpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5k ZXggMTIzZmJhNjI0ZGIuLjQyMDBkMmJkMjBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMjk3LDgg KzEyOTcsMTAgQEAgZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0 bm8sCiBleHRlcm4gY2hhciAqYnRidWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRl cm4gSW5kZXhUdXBsZSBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3Rs ZWZ0LAogCQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5KTsKK2V4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxl IGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQg aXR1cF9rZXksIGJvb2wgKmhhc251bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFz dChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUg Zmlyc3RyaWdodCk7CisJCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVs bHMpOwogZXh0ZXJuIGJvb2wgX2J0X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFw a2V5c3BhY2UsIFBhZ2UgcGFnZSwKIAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVy biB2b2lkIF9idF9jaGVja190aGlyZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCmluZGV4IDY2ZTFhZDgzZjFhLi4wZWNjMzE0N2JiZCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oCkBAIC0xNzk5LDkgKzE3OTksOCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90 dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRo aXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8g YmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBv ZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlz IGFwcGxpZWQKLSAqIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNo b3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbgotICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJ biBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBw bGllZCBmb3IgdGhlIHNjYW4uCisgKiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMg b24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMg aW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWws CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IGNkZTgzZjYyMDE1Li5hZTVmNGQyOGZkYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvdHVwbGVzb3J0LmgKQEAgLTQyOCw2ICs0MjgsNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUg KnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJ CQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlx dWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJ CQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtN ZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9w dCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJl bGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXgg NTk1YTQwMDBjZTAuLjlmMDNmYTMwMzNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hv dHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxU RVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v9-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddcd1 RnJvbSAyM2MzYzlmMDZjYTQ0NmYxYjI4NDBjMThlNTExYTExYzgyN2NiYzE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMi85 XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFkZCBj b21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z LCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdyaXR5 IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4IHR5 cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcgaW5k ZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29ya2Vy IGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFiaWxp dHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29uZGl0 aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNyYy9i aW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxNDQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1 aWxkCmluZGV4IDI5MmIzM2ViMDk0Li40YThmNGZiYzhiMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwnLAog ICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3NfZGFt YWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNoZWNr L3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTQy ZThmYjg0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2lj LnBsCkBAIC0wLDAgKzEsMTQ0IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZIHdp dGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor VGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBpZiBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2RlLCAk cmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50IHBy aW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1bHQg MCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCkpKTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3df cmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBo ZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMg Ym9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VU RSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykp OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHBy ZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0Ug cGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQk OworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25j dXJyZW50X29wcycgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6Omlu dGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2 YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFu dCByYW5kb20oMCwgNSkKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYg Omxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6 dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJs KGksIHVwZGF0ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9zdGFibGUoKTsKKwkJCQkJXGVsaWYgOnZh cmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChp LCB1cGRhdGVkX2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9 IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0 ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9jb25zdChpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA0 CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChwcmVkaWNhdGVf Y29uc3QoaSkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDUKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9h dCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEw IG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9 PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7 CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5k b20oMTAwMCwgMTAwMDAwKQorCQkJCUJFR0lOOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMo Zmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERP IFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxV RVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRibCBW QUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNU KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRP IHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENP TkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBz ZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQkJQ09NTUlUOworCQkJXGVuZGlmCisJCSkK Kwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRi bDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgdW5pcXVlIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWScsCisJeworCQknY29uY3VycmVu dF9vcHNfdW5pcXVlX2lkeCcgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0 Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNU IG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGkpOworCQkJCQlcc2xl ZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRl eGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRl eF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0 cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0Ymwg VkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElD VChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFs KCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUtPnN0 b3A7Citkb25lX3Rlc3RpbmcoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjQz LjAKCg== --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0004-Allow-snapshot-resets-during-parallel-concurrent-.patch" Content-Disposition: attachment; filename="v9-0004-Allow-snapshot-resets-during-parallel-concurrent-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddcg3 RnJvbSA0MzY2MmEyMjM2M2RkYWI3NzVlYzQzNzM3MTFiZTBjZjM5YmNjMWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyIERlYyAyMDI0IDAxOjMzOjIxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2OSA0Lzld IEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleAog YnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhyb3Vn aG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9uIGFu ZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBwcmV2 aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFsbGVs IGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2VzOgot IEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBwYXJh bGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8gc3Vw cG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3JrZXJz IHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlCiAgcHJvY2VlZGluZyB3 aXRoIHNjYW4KLSBBZGQgcmVncmVzc2lvbiB0ZXN0cyB0byB2ZXJpZnkgYmVoYXZpb3Igd2l0aCB2 YXJpb3VzIGluZGV4IHR5cGVzCgpUaGUgc25hcHNob3QgcmVzZXQgYXBwcm9hY2ggaXMgc2FmZSBm b3Igbm9uLXVuaXF1ZSBpbmRleGVzIHNpbmNlIHRoZXkgZG9uJ3QKbmVlZCBzbmFwc2hvdCBjb25z aXN0ZW5jeSBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBGb3IgdW5pcXVlIGluZGV4ZXMsIHdlCmNv bnRpbnVlIHRvIG1haW50YWluIGEgY29uc2lzdGVudCBzbmFwc2hvdCB0byBwcm9wZXJseSBlbmZv cmNlIHVuaXF1ZW5lc3MKY29uc3RyYWludHMuCgpUaGlzIGhlbHBzIHJlZHVjZSB0aGUgeG1pbiBo b3Jpem9uIGltcGFjdCBvZiBsb25nLXJ1bm5pbmcgY29uY3VycmVudCBpbmRleApidWlsZHMgaW4g cGFyYWxsZWwgbW9kZSwgaW1wcm92aW5nIFZBQ1VVTSdzIGFiaWxpdHkgdG8gY2xlYW4gdXAgZGVh ZCB0dXBsZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAg ICAgIHwgNDMgKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYyAgICAgIHwgMTIgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzNyArKysrKysrKysrKystLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArKy0tCiAuLi4v ZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAyMyArKysrKysrKy0K IC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQog MTMgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYwppbmRleCBkODAzOTQ3NjZkNS4uZjA3NmNlZGNjMmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKQEAgLTE0Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVh ZGVyCiAJICovCiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRz b3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZl clVzYWdlICpidWZmZXJ1c2FnZTsKIH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBz dGF0aWMgdm9pZCBicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwK IHN0YXRpYyB2b2lkIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJp bkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXpl IF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBz bmFwc2hvdCk7CitzdGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVs YXRpb24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5C dWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJy aW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBh dGVfYXNfd29ya2VyKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMjM1Nyw3ICsyMzU2 LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogewogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsK IAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwotCVNuYXBzaG90CXNuYXBzaG90OwogCVNpemUJ CWVzdGJyaW5zaGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlCcmluU2hhcmVkICpicmluc2hhcmVk OwpAQCAtMjM2Nyw2ICsyMzY1LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJv b2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJd2FpdF9mb3Jfc25h cHNob3RfYXR0YWNoOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJf UEFSVElDSVBBVElPTgpAQCAtMjM4OCwyNSArMjM4NywyNSBAQCBfYnJpbl9iZWdpbl9wYXJhbGxl bChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9y bWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3Qg cmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3Mg KGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCi0J ICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQg aW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogY29uY3Vy cmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgcHVzaCBpdCBh cyBhY3RpdmUuCisJICogTGF0ZXIgd2UgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0 byB0aGF0IHNuYXBzaG90IHdoaWxlIHRoYXQKKwkgKiBzbmFwc2hvdCBpcyByZXNldCBwZXJpb2Rp Y2FsbHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewogCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7Ci0JCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJQXNzZXJ0KCFBY3RpdmVTbmFw c2hvdFNldCgpKTsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CiAJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tF WV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0YnJpbnNoYXJlZCA9IF9icmluX3Bh cmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwLCBzbmFwc2hvdCk7CisJZXN0YnJpbnNoYXJlZCA9 IF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGJyaW5zaGFyZWQpOwogCWVzdHNvcnQgPSB0dXBs ZXNvcnRfZXN0aW1hdGVfc2hhcmVkKHNjYW50dXBsZXNvcnRzdGF0ZXMpOwogCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0c29ydCk7CkBAIC0yNDQ2LDggKzI0NDUs NiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNu YXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJh bGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpAQCAt MjQ3Miw3ICsyNDY5LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21C cmluU2hhcmVkKGJyaW5zaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJICBp c2NvbmN1cnJlbnQgPyBJbnZhbGlkU25hcHNob3QgOiBTbmFwc2hvdEFueSwKKwkJCQkJCQkJICBp c2NvbmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUg c3RhdGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1MTgsNyArMjUxNiw2IEBA IF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJYnJpbmxlYWRlci0+bnBhcnRpY2lwYW50dHVwbGVz b3J0cysrOwogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVkOwogCWJyaW5sZWFk ZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWJyaW5sZWFkZXItPnNuYXBzaG90ID0gc25h cHNob3Q7CiAJYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKIAlicmlubGVhZGVyLT5i dWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0yNTM0LDYgKzI1MzEsMTYgQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xl YXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJzX2xlYWRlciA9IGJy aW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hv dHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBJbiBjYXNlIHdoZW4g bGVhZGVyIGdvaW5nIHRvIHJlc2V0IG93biBhY3RpdmUgc25hcHNob3QgYXMgd2VsbCAtIHdlIG5l ZWQgdG8KKwkgKiB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNo b3QuCisJICovCisJd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoID0gaXNjb25jdXJyZW50ICYmIGxl YWRlcnBhcnRpY2lwYXRlczsKKworCWlmICh3YWl0X2Zvcl9zbmFwc2hvdF9hdHRhY2gpCisJCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVh cCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xl YWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAt MjU0Miw3ICsyNTQ5LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVk cyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UK IAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZv cmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlm ICghd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoKQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0yNTY1LDkgKzI1NzMsNiBAQCBfYnJpbl9lbmRfcGFy YWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZv ciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQog CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZi cmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1W Q0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlu bGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFw c2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0 UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzY3LDE0ICsyNzcyLDE0IEBAIF9icmluX3BhcmFsbGVs X21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBz aGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBi cmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3 aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9w YXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3Qp CitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBj LmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAly ZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3Bh cmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGQ5ZmNlMDdlOGFkLi44 MTQ0NzQzYzMzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBA IC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmll dmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1 c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25j dXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkND IHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhh dC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxl IHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBu b24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBz aG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29t ZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2Fu IHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAly ZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5k ZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAsOCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhf YnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290 c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hv dCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwot CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90 cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2Mp IHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDg2NDc0MjJlZDA1Li43 ODM0ODk2MDBmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTE0MTEsNiAr MTQxMSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7 CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSB0cnVlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90OworCWJvb2wJCXdhaXRf Zm9yX3NuYXBzaG90X2F0dGFjaDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVf TEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MjgsMTIgKzE0MzAsMjEgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJl cXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVu aXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJ ICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2lu Y2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jv c3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFi bGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgor ICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3Vu aXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4g IEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNl IHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVh bCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcyku ICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFw c2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJ ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVz ZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwog CWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NDEsNiArMTQ1MiwxMSBAQCBfYnRfYmVnaW5f cGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50 IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNu YXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC0xNTAxLDcgKzE1MTcsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQog CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK KwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFw c2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxs ZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTI4LDcgKzE1NDQs OCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFs c2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90 KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Ig d2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjA0LDYgKzE2MjEsMTYgQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVp bGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7 CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdv aW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBJbiBjYXNlIHdoZW4gbGVhZGVyIGdv aW5nIHRvIHJlc2V0IG93biBhY3RpdmUgc25hcHNob3QgYXMgd2VsbCAtIHdlIG5lZWQgdG8KKwkg KiB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICov CisJd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoID0gcmVzZXRfc25hcHNob3QgJiYgbGVhZGVycGFy dGljaXBhdGVzOworCisJaWYgKHdhaXRfZm9yX3NuYXBzaG90X2F0dGFjaCkKKwkJV2FpdEZvclBh cmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4g b3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRlcl9wYXJ0 aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjEyLDcgKzE2MzksOCBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hl ZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVy ZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFy YWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCF3YWl0X2Zvcl9zbmFwc2hvdF9hdHRh Y2gpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAg LTE2MzYsNyArMTY2NCw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRMZWFkZXIgKmJ0bGVhZGVyKQog CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnRs ZWFkZXItPndhbHVzYWdlW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBz bmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVy LT5zbmFwc2hvdCkpCisJaWYgKGJ0bGVhZGVyLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3Qg JiYgSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNuYXBzaG90KSkKIAkJVW5yZWdpc3RlclNuYXBz aG90KGJ0bGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChidGxlYWRl ci0+cGN4dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKaW5kZXggYmQ4NzE1YjY3OTcuLmNhYzdhOWVhODhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAot CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRT bmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3os IEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBz aG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8 IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwt PnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQzLDIxICsx NDMsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNo b3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0 aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qg c25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hv dCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nh bl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBz bmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICog SW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdp dGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBp bmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1h cmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsK KwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25h cHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOwor CQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQor CWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBz aG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsK IAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9z bmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25h cHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFw c2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJ fQogfQogCkBAIC0xNzAsNyArMTg1LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxh dGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJl bEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0 b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2Nh bnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4g YWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRp YWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlB c3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9U OworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBz aG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQg Ki8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+ cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRl eCAwYTFlMDg5ZWMxZC4uZDQ5YzZlZTQxMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFy YWxsZWwuYwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVS X1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZG RkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5U NjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3Rh dGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIs MTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJ CQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGlt YXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJh cnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpA QCAtMzcyLDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQg KnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0 ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAg ICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2Vy aWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkz LDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0 cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRy eXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50 c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8g cGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAq LworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0 LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChp ID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5z bmFwc2hvdF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihi b29sKTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJ fQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNU T1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vy c190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0 Miw2ICs1NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBj eHQtPnNlZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxh ZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAq c25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVk X3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7 ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAv KgpAQCAtNjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250 ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVy cm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRv IGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBw YXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90 LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBl bnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9y ZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRo YXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51 bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5p dGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVy IG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAg TGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhp cyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWlu dAkJCWk7CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4 dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAh PSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hl ZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJ CSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25h cHNob3QgfHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJ CQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4 dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93 bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3Rh dHVzID09IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0 YXRlICpmcHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7 CiAJY2hhcgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ4OSw2ICsxNTI3LDEwIEBAIFBhcmFsbGVs V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRl cl9wZ3Byb2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNo b3QgaXMgcmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICov CisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQg d2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJ ICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjNWE5MDBmMWIyOS4uZmNiNmU5 NDBmZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFs b2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZv LT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlB c3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBp bmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDdjYjEyYTExYzJkLi4yOTA3YjM2Njc5 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yNjIsNyArMjYyLDggQEAgRXhl Y1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90 b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBw c2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUt PmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXgg MTAxYTAyYzViNjAuLjE1M2FjMjhkYjNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90 aW1lL3NuYXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAt MjgzLDE0ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAog R2V0TGF0ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8g cmVsYXggdGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5l ZWRzIGl0LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0J CQkgImNhbm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3Bl cmF0aW9uIik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5n IHN1cHBvcnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNv ZGluZywgYnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cGFyYWxsZWwuaAppbmRleCA2OWZmZTU0OThmOS4uOTY0YTdlOTQ1YmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJh bGxlbC5oCkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5m bwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxl ICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29y a2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3 IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBj eHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0 ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxl bENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1 bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4 dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQg KnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBE ZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9v bCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCA4Y2E4 Zjc4OTYxNy4uZDgwMWFjYTgyYTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0 b3IgcGhzX2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlw aHNfc3luY3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAli b29sCQlwaHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9k YXRhPyAqLworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBT SE9UPyAqLwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICov CiB9IFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRh YmxlU2NhbkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApp bmRleCBhMzI4ZjNhZWE2Yi4uNjZlMWFkODNmMWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4 MCw3ICsxMTgwLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJl bGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxl bFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJ CQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25h cHNob3QpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRv IGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk4LDkgKzE3OTksOSBAQCB0YWJsZV9z Y2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQg T2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0s IGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIu CiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29u Y3VycmVudCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNj YW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBh bGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNv bmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZv ciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkg dG8gYWxsb3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUg ZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA1ZGI1NDUzMGYxNy4uNTk1YTQwMDBj ZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEy IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFC TEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQg SU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwMCkgcyhpKTsKQEAgLTcyLDI0ICs3OCwzNSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhl IHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBz aW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VM RUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMg TEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKQEAgLTk3LDcgKzExNCw5IEBAIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3Fs IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNo b3RzLnNxbAppbmRleCA1MDcyNTM1YjM1NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25h cHNob3RzLnNxbApAQCAtMyw3ICszLDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAn bm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nh bl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7 CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0 X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGlu IHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9Mik7CiAKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0 ICs4Niw0IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAog RFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0003-Allow-advancing-xmin-during-non-unique-non-parall.patch" Content-Disposition: attachment; filename="v9-0003-Allow-advancing-xmin-during-non-unique-non-parall.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddcf2 RnJvbSA0ZWU4MDJiYjkyOWI0ZDQwMWEzYzY5Yjg3OTI3NWZkZTA2NTkxODY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNzo0MToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMy85 XSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwgbm9uLXBhcmFsbGVsIAog Y29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgcGVyaW9kaWNhbGx5IHJlc2V0dGluZyBzbmFwc2hv dHMKCkxvbmctcnVubmluZyB0cmFuc2FjdGlvbnMgbGlrZSB0aG9zZSB1c2VkIGJ5IENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggQ09OQ1VSUkVOVExZIGNhbiBob2xkIGJhY2sg dGhlIGdsb2JhbCB4bWluIGhvcml6b24sIHByZXZlbnRpbmcgVkFDVVVNIGZyb20gY2xlYW5pbmcg dXAgZGVhZCB0dXBsZXMgYW5kIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gdHJhbnNhY3Rpb24gSUQg d3JhcGFyb3VuZCBpc3N1ZXMuIEluIFBvc3RncmVTUUwgMTQsIGNvbW1pdCBkOWQwNzYyMjJmNWIg YXR0ZW1wdGVkIHRvIGFsbG93IFZBQ1VVTSB0byBpZ25vcmUgaW5kZXhpbmcgdHJhbnNhY3Rpb25z IHdpdGggQ09OQ1VSUkVOVExZIHRvIG1pdGlnYXRlIHRoaXMgcHJvYmxlbS4gSG93ZXZlciwgdGhp cyB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0IGUyOGJiODg1MTk2OSBiZWNhdXNlIGl0IGNvdWxkIGNh dXNlIGluZGV4ZXMgdG8gbWlzcyBoZWFwIHR1cGxlcyB0aGF0IHdlcmUgSE9ULXVwZGF0ZWQgYW5k IEhPVC1wcnVuZWQgZHVyaW5nIHRoZSBpbmRleCBjcmVhdGlvbiwgbGVhZGluZyB0byBpbmRleCBj b3JydXB0aW9uLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc2FmZSBhbHRlcm5hdGl2ZSBieSBw ZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyBub24tdW5pcXVl LCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMuIEJ5IHJlc2V0dGluZyB0aGUg c25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2Nhbiwgd2UgYWxsb3cgdGhl IHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlIHdpdGhvdXQgcmlza2luZyBpbmRleCBjb3JydXB0aW9u LiBUaGlzIGFwcHJvYWNoIGlzIHNhZmUgZm9yIG5vbi11bmlxdWUgaW5kZXggYnVpbGRzIGJlY2F1 c2UgdGhleSBkbyBub3QgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIHRoYXQgcmVxdWly ZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4KCkN1cnJlbnRs eSwgdGhpcyB0ZWNobmlxdWUgaXMgYXBwbGllZCB0bzoKCk5vbi1wYXJhbGxlbCBpbmRleCBidWls ZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHdpbGwg YmUgYWRkcmVzc2VkIGluIGEgZnV0dXJlIGNvbW1pdC4KTm9uLXVuaXF1ZSBpbmRleGVzOiBVbmlx dWUgaW5kZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNuYXBzaG90IHRvIGVu Zm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cywgYW5kIHN1cHBvcnQgZm9yIHRoZW0gbWF5IGJl IGFkZGVkIGluIHRoZSBmdXR1cmUuCk9ubHkgZHVyaW5nIHRoZSBmaXJzdCBzY2FuIG9mIHRoZSBo ZWFwOiBUaGUgc2Vjb25kIHNjYW4gZHVyaW5nIGluZGV4IHZhbGlkYXRpb24gc3RpbGwgdXNlcyBh IHNpbmdsZSBzbmFwc2hvdCB0byBlbnN1cmUgaW5kZXggY29ycmVjdG5lc3MuCgpUbyBpbXBsZW1l bnQgdGhpcywgYSBuZXcgc2NhbiBvcHRpb24gU09fUkVTRVRfU05BUFNIT1QgaXMgaW50cm9kdWNl ZC4gV2hlbiBzZXQsIGl0IGNhdXNlcyB0aGUgc25hcHNob3QgdG8gYmUgcmVzZXQgZXZlcnkgU09f UkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVh cCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQgdG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBp bmRleCBidWlsZCBjb2RlIGlzIG1vZGlmaWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBu b3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vycy4KClRoaXMgYWRkcmVzc2VzIHRoZSBpc3N1ZXMgdGhh dCBsZWQgdG8gdGhlIHJldmVyc2lvbiBvZiBjb21taXQgZDlkMDc2MjIyZjViLCBwcm92aWRpbmcg YSBzYWZlIHdheSB0byBhbGxvdyB4bWluIGFkdmFuY2VtZW50IGR1cmluZyBsb25nLXJ1bm5pbmcg bm9uLXVuaXF1ZSwgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdoaWxlIGVu c3VyaW5nIGluZGV4IGNvcnJlY3RuZXNzLgoKUmVncmVzc2lvbiB0ZXN0cyBhcmUgYWRkZWQgdG8g dmVyaWZ5IHRoZSBiZWhhdmlvci4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICAgICAgICAgfCAgIDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUu YyAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAg ICAgICAgICAgICAgIHwgIDE0ICsrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg ICAgICAgICAgICAgIHwgIDQ2ICsrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICAgICAgfCAgNTcgKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMTQgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAxNCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaCAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKystCiBzcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDEwNyArKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAuLi4vc3Fs L2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgODYgKysrKysrKysrKysr KysKIDE1IGZpbGVzIGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZmZlNGY3MjE2NzIuLjdmYjA1MmNlM2RlIDEwMDY0 NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTY4OSw3ICs2ODksOCBAQCBidF9jaGVja19ldmVyeV9s ZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAog CQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICov Ci0JCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHRydWUsIC8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAogCQkvKgogCQkgKiBTY2FuIHdp bGwgYmVoYXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDQ4Y2I4ZjU5YzRmLi5mZjdjYzA3ZGY5 OSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2Nv bnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHBnc3Rh dF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQkJIGVycm1z Zygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkvKiBEaXNhYmxlIHN5bmNzY2Fu IGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6ZXJvIHVwd2FyZHMgKi8KLQlz Y2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRy dWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RB bnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0eSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKaW5kZXggOWFmNDQ1Y2RjZGQuLmQ4MDM5NDc2NmQ1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCkBAIC0yMzY2LDYgKzIzNjYsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2Fs VXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxl YWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJ Q0lQQVRJT04KQEAgLTIzOTEsOSArMjM5MiwxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7 CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFu eTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJ CXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkv KgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVE IHdvcmtzcGFjZS4KQEAgLTI0MzYsNiArMjQ0NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFs IGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25h cHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVz dHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MTUsNiArMjUyNSw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5j aGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19s YXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTI1MzEsNiArMjU0Myw4IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBo YW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQp OworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDMyOWU3MjdmODBkLi5jMjg2 MGViYmYzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3BjY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIK IAogCiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFyZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRp b24sIEhlYXBUdXBsZSB0dXAsCkBAIC01NjgsNiArNTY5LDM2IEBAIGhlYXBfcHJlcGFyZV9wYWdl c2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9D S19VTkxPQ0spOwogfQogCisvKgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBkdXJpbmcg YSBzY2FuLgorICogVGhpcyBlbnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFuY2Ugd2hp bGUgbWFpbnRhaW5pbmcgc2FmZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8gb3RoZXIg c25hcHNob3Qgc2hvdWxkIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisgKi8KK3N0 YXRpYyBpbmxpbmUgdm9pZAoraGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2NhbkRlc2Mg c3NjYW4pCit7CisJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0 aXZlLiAqLworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hv dCk7CisJLyogQW5kIG1ha2Ugc3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQu ICovCisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJUG9w QWN0aXZlU25hcHNob3QoKTsKKworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hv dDsgLyoganVzdCBvdCBiZSB0aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZl U25hcHNob3QoKSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyogR29hbCBv ZiBzbmFwc2hvdCByZXNldCBpcyB0byBhbGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNU SU9OX1BPSU5UUworCS8qIEluIHNvbWUgY2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1 ZSB4aWQgYXNzaWduLiAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUi KTsKKyNlbmRpZgorCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwor CXNzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBo ZWFwX2ZldGNoX25leHRfYnVmZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20g TUFJTl9GT1JLTlVNLgogICoKQEAgLTYwOSw3ICs2NDAsMTMgQEAgaGVhcF9mZXRjaF9uZXh0X2J1 ZmZlcihIZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19j YnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwp OwogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Js b2NrID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisjZGVmaW5lIFNPX1JF U0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIDY0CisJCWlmICgoc2Nhbi0+cnNfYmFzZS5yc19mbGFn cyAmIFNPX1JFU0VUX1NOQVBTSE9UKSAmJgorCQkJKHNjYW4tPnJzX2NibG9jayAlIFNPX1JFU0VU X1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApKQorCQkJaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xMjM2LDYgKzEyNzMsMTUg QEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKHNjYW4tPnJzX3BhcmFs bGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2FuLT5yc19wYXJhbGxlbHdvcmtlcmRh dGEpOwogCisJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkK Kwl7CisJCUFzc2VydCghKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9U KSk7CisJCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4g Ki8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsK KwkJLyogQW5kIG1ha2Ugc3VyZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwkJQXNz ZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJfQorCiAJaWYgKHNj YW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlVbnJlZ2lzdGVyU25h cHNob3Qoc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDUzZjU3MmYzODRiLi5kOWZjZTA3ZThhZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTkwLDYgKzExOTAsOCBA QCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ RXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNuYXBzaG90CXNuYXBzaG90OwogCWJvb2wJCW5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90cyA9IGZhbHNlOwogCVRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9IEludmFsaWRC bG9ja051bWJlcjsKIAlCbG9ja051bWJlciByb290X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVy OwpAQCAtMTIyNCw5ICsxMjI2LDYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mgc2NhbiB0dXBs ZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVkaWNhdGUsIGlm IGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVk aWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2Ug cmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RB bnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGlt ZQpAQCAtMTIzNiw2ICsxMjM1LDE1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKKwkvKgorCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNu YXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4g c29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCisJICogdG8gcGVyZm9ybSBz Y2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KKwkgKi8K KwlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKKwkJCQkJICAh aW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKKwkJCQkJICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1 c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGlnbm9yZSBsYXp5IFZBQ1VVTXMgaGVy ZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpICYmICFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjQ0LDI0ICsxMjUyLDQxIEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAl7CiAJCS8qCiAJCSAq IFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVzdCBiZWdpbiBvdXIgb3duIGhlYXAg c2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCi0JCSAqIHJlZ2lzdGVyIGEg c25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgogCQkg Ki8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSkKIAkJewotCQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCQlu ZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJc25hcHNob3QgPSBHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBiZWdpbiBvdXIgb3duIGhlYXAgc2Nh biBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCisJCQkgKiByZWdpc3RlciBhIHNu YXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJvbC4KKwkJCSAq IEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIHNuYXBzaG90IGR1cmluZyB0aGUgc2NhbiByZWdpc3Ry YXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ugc25hcHNob3QgaXMgZ29pbmcgdG8g YmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJCQkgKi8KKwkJCWlmICghcmVzZXRf c25hcHNob3RzKQorCQkJeworCQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCX0KKwkJCUFzc2Vy dCghQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3Qp OworCQkJLyogc3RvcmUgbGluayB0byBzbmFwc2hvdCBiZWNhdXNlIGl0IG1heSBiZSBjb3BpZWQg Ki8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQoIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQl9CiAKIAkJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9uICov CiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyogbnVt YmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJ IHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSBhbGxvd19z eW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3luYywJLyogc3luY3Nj YW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0IHNuYXBzaG90cz8g Ki8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI3NSw2ICsxMzAwLDggQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9vdHN0 cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNob3Qg PSBzY2FuLT5yc19zbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJ bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAl9CiAKIAloc2NhbiA9IChIZWFwU2Nh bkRlc2MpIHNjYW47CkBAIC0xMjg5LDYgKzEzMTYsMTMgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFw c2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pIDoKIAkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8 fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9y IHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRl eEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBDbGVhciByZWZlcmVuY2UgdG8gc25h cHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIHNjYW4gaXRzZWxmLiAqLworCWlm IChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OwogCiAJLyog UHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0x NzI0LDYgKzE3NTgsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYgKG5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3ZSBjYW4gbm93IGZv cmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1cyAqLwogCWlmIChu ZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7 CkBAIC0xNzk2LDcgKzE4MzIsOCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJ CQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mg c3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90IE9LICovCisJ CQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAJ aHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK aW5kZXggNGI0ZWJmZjZhMTcuLmExMDRiYTlkZjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0u YwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhl YXBSZWxhdGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtleSwKLQkJCQkJCQkJ CQkJICB0cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAkJ c3lzc2Nhbi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YwppbmRleCAyODUyMmMwYWMxYy4uODY0NzQyMmVkMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2Fs VXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxl YWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJ Q0lQQVRJT04KQEAgLTE0MzUsOSArMTQzNiwxNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6 ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBA IC0xNDkxLDYgKzE0OTksOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNl Z21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAo cGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQor CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK IAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRl eHQocGN4dCk7CkBAIC0xNTg1LDYgKzE1OTUsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiAr MTYxMyw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUt dG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3Qp CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNjk3 NjI0OWU5ZTkuLmM1YTkwMGYxYjI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC03OSw2ICs3OSw3IEBA CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rpb25zICov CiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4X3BnX2NsYXNzX29pZCA9IEludmFsaWRP aWQ7CkBAIC0xNDkxLDggKzE0OTIsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5k ZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1ha2Ugc3VyZSB0aGF0IGEgc25hcHNob3Qg aXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCUFzc2VydCghVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3BlbiBhbmQgbG9jayB0aGUgcGFyZW50IGhl YXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVfb3BlbihoZWFwUmVsYXRpb25JZCwgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MTAsMTkgKzE1MTEsMjggQEAgaW5kZXhfY29u Y3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAogCWluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBCdWls ZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hvdCBmb3IgZXhwcmVzc2lvbnMgYW5kIHBy ZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQgdGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNp bmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1pdCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hl cmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVhdGVkIGF0CiAJICogdGhlIGNhdGFsb2cg bGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7 CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlBc3Nl cnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKKwlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogTm93IGJ1 aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGlu ZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90 IGp1c3QgZm9yIGFzc2VydCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3Nl cnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVl KSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkvKiBSb2xsIGJh Y2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9Y YWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCkBAIC0xNTMzLDEyICsxNTQzLDE5IEBA IGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJdGFibGVfY2xv c2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2sp OwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxl IGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLwor CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICog VXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0aGUgaW5kZXggYXMgcmVhZHkgZm9yIGlu c2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFu c2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVz IGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFuZCBub24tSE9UIHVwZGF0ZXMuCiAJICov CiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NF VF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KKwlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIwNiw3ICszMjIzLDggQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIg b2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUs CS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIHRydWUpOyAvKiBzeW5j c2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZh bHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2Fu RGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMjY5LDEyICszMjg3LDE2IEBAIEluZGV4Q2hlY2tF eGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRo ZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKICAq IGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNlbnRseS1kZWFkIHR1cGxlcy4gIFRoaXMg aXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0aGUgaW5kZXggdmFsaWQgdW50aWwgYWxs IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUKLSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMg YXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lkCisgKiB0byBz ZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9mIHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQg aXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3Vy cmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUg c2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdl IHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4g aW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0 YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgorICogRnVydGhlcm1vcmUsIGluIGNh c2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQor ICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2 ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhl IHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJp bmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRo ZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZv ciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhl IHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA5 MzI4NTRkNmM2MC4uNmMxZmNlOGVkMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0x NjcwLDIzICsxNjcwLDE3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNoYWlucyBj YW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRo ZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBub3cg dGFrZSBhIG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVz IHRoYXQKLQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90LiAgV2UgY2FuIGJlIHN1cmUg dGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxs IHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgorCSAqIG11bHRpcGxlIHJl ZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNp bmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25v dyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4g IFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKIAkgKiBI T1QtY2hhaW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUgY2hhaW4gaXMgSE9ULXNhZmUgZm9yIHRo aXMgaW5kZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25z IGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJmb3JtIGNvbmN1cnJlbnQgYnVpbGQgb2Yg aW5kZXggKi8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFibGVJZCwgaW5kZXhSZWxhdGlv bklkKTsKIAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCi0JUG9wQWN0 aXZlU25hcHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFr ZSB0aGUgaW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4KIAkgKi8KQEAgLTQwODQsOSArNDA3OCw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlmIChuZXdpZHgtPnNhZmUpCiAJCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBm dW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KLQkJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dy ZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAq IHRhYmxlIGludm9sdmVkLgpAQCAtNDEwMSw3ICs0MDkyLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIG5ldyBpbmRleCAqLwogCQlp bmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQp OwogCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDc0Njg5NjFiMDE3 Li4xZWY2YzcyMTZmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjEs NiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZG91YmxlCQljdXJzb3JfdHVwbGVfZnJh Y3Rpb24gPSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFDVElPTjsKQEAgLTY3NzgsNiArNjc3OSw3 IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQp CiAJUmVsYXRpb24JaGVhcDsKIAlSZWxhdGlvbglpbmRleDsKIAlSZWxPcHRJbmZvICpyZWw7CisJ Ym9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJaW50CQkJcGFyYWxsZWxf d29ya2VyczsKIAlCbG9ja051bWJlciBoZWFwX2Jsb2NrczsKIAlkb3VibGUJCXJlbHR1cGxlczsK QEAgLTY4MzMsNiArNjgzNSwxMSBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJs ZU9pZCwgT2lkIGluZGV4T2lkKQogCWhlYXAgPSB0YWJsZV9vcGVuKHRhYmxlT2lkLCBOb0xvY2sp OwogCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleE9pZCwgTm9Mb2NrKTsKIAorCS8qIFNldCBBY3Rp dmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8K KwlpZiAoIUFjdGl2ZVNuYXBzaG90U2V0KCkpIHsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7 CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgogCSAqCkBA IC02ODkwLDYgKzY4OTcsOCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9p ZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlpbmRleF9j bG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaAppbmRleCBiYjMyZGUxMWVhMC4uYTMyOGYzYWVhNmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVMVF9UQUJM RV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiArNzAsMTcgQEAgdHlwZWRlZiBlbnVtIFNj YW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBkYXRhIG1heSBiZSBuZWVkZWQsIHNldCBT T19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RVUExFUyA9IDEgPDwgMTAsCisJLyoKKwkg KiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywg ZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFw c2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFwc2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0 IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoKKwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBz Y2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICogR29hbCBvZiBzdWNoIG1vZGUgaXMga2Vl cCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2FyZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJICovCisJU09fUkVTRVRfU05BUFNIT1Qg PSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtOTM1LDcgKzk0Nyw4IEBAIGV4 dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0 aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkgIGludCBu a2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBhbGxvd19zdHJhdCwg Ym9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wgYWxsb3dfc3lu YywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19U WVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTQzLDYgKzk1NiwxNSBAQCB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ ZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJCWZsYWdzIHw9IFNP X0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5U KCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIik7CisJCS8qIEFjdGl2ZSBz bmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBz aG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNob3Qgc2hvdWxkIG5vdCBiZSBy ZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2 ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdzIHw9IChTT19SRVNFVF9TTkFQ U0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNu YXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBAIC0xNzc1LDYgKzE3OTcsMTAg QEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFu c2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhhcmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhl eSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGNoYWluIHRpcC4KICAqIFRoaXMgb25s eSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2Vu ZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCisgKgorICogSW4gY2FzZSBvZiBub24t dW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVudCBidWlsZAorICogU09fUkVT RVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5n aW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFn YXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihS ZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFr ZWZpbGUKaW5kZXggZjhmODZlOGYzYjYuLjczODkzZDM1MWJiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9 IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJ TEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50 cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jCitSRUdSRVNTID0g aW5qZWN0aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2ljX3Jlc2V0X3NuYXBzaG90cwogUkVHUkVT U19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNP TEFUSU9OID0gYmFzaWMgaW5wbGFjZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVkYjU0NTMwZjE3Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVj dGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0wLDAgKzEsMTA3IEBACitDUkVBVEUgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKKyBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworIGluamVjdGlv bl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1h cnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGks IGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKK0NSRUFURSBGVU5DVElP TiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpIFJFVFVSTlMgYm9vbCBJ TU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBF WEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBNT0QoJDEsIDIpID0g MDsKK0VORDsgJCQ7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VB R0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50 KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CistLS0tLS0tLS0tLS0tLS0tCitBTFRF UiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlX25vX3BhcmFtKCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKy0tIFRoZSBzYW1lIGluIHBh cmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9Mik7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2Fz Y2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxl IGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRf c25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9tZXNvbi5idWlsZAppbmRleCA5MWZjOGNlNjg3Zi4uZjI4ODYzM2RhNGYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM1LDYgKzM1LDcg QEAgdGVzdHMgKz0gewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAg ICAgICAncmVpbmRleF9jb25jJywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBd LAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8g J3NyYy90ZXN0L3JlZ3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVz dGVyLXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2Np Y19yZXNldF9zbmFwc2hvdHMuc3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKwor Q1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9z bmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkp OworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRl Z2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBS RVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFC TEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRF ICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisK Ky0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBh cmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikg V0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK KworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGks IGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBV U0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBU aGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwg MiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor RFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0001-this-is-https-commitfest.postgresql.org-50-5160-m.patch" Content-Disposition: attachment; filename="v9-0001-this-is-https-commitfest.postgresql.org-50-5160-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddc70 RnJvbSBkNjk0MDIwYmI4YzliOGZhNmUzNDYwMjliYmEyNTAwYzBhMGYwNmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxMTozNjoyOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMS85 XSB0aGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwogbWVy Z2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Ygc3Ry ZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAg ICAgfCAxMTkgKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAg ICAgICAgIHwgMTM1ICsrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5j ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv TWFrZWZpbGUgICAgfCAgIDcgKy0KIC4uLi9leHBlY3RlZC9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0Lm91dCAgICB8ICA4MCArKysrKysKIC4uLi9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3By ZWRpY2F0ZS5vdXQgICB8ICA4MCArKysrKysKIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJl bnRseV91cHNlcnQub3V0ICB8IDIzOCArKysrKysrKysrKysrKysrKysKIC4uLm5kZXhfY29uY3Vy cmVudGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dCB8IDIzOCArKysrKysrKysrKysrKysrKysK IC4uLmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3BhcnRpdGlvbmVkLm91dCB8IDIzOCArKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5i dWlsZCB8ICAxMSArCiAuLi4vc3BlY3MvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5zcGVjICAg ICAgfCAgNjggKysrKysKIC4uLi9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3ByZWRpY2F0ZS5z cGVjICB8ICA3MCArKysrKysKIC4uLi9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQu c3BlYyAgICB8ICA4NiArKysrKysrCiAuLi5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9jb25z dHJhaW50LnNwZWMgfCAgODYgKysrKysrKwogLi4uaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9w YXJ0aXRpb25lZC5zcGVjIHwgIDg4ICsrKysrKysKIDE4IGZpbGVzIGNoYW5nZWQsIDE1MDUgaW5z ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2luZGV4X2NvbmN1cnJlbnRseV91cHNl cnQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVu dGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJlbnRseV91 cHNlcnRfcGFydGl0aW9uZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQuc3BlYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVj cy9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3ByZWRpY2F0ZS5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29u Y3VycmVudGx5X3Vwc2VydC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50LnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3MvcmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3BhcnRpdGlvbmVk LnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDQwNDljZTFhMTBmLi45MzI4NTRk NmM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE3NjYsNiArMTc2Niw3IEBAIERl ZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2Fz IHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1p Z2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCSAqLworCUlOSkVDVElPTl9QT0lOVCgiZGVmaW5l X2luZGV4X2JlZm9yZV9zZXRfdmFsaWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwpA QCAtNDIwNiw3ICs0MjA3LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiB0aGUgc2Ft ZSB0aW1lIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGdldCBjb25zdHJhaW50IHZpb2xhdGlvbnMgZnJv bSB0aGUKIAkgKiBpbmRleGVzIHdpdGggdGhlIGNvcnJlY3QgbmFtZXMuCiAJICovCi0KKwlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIik7 CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCS8qCkBAIC00Mjg1LDYgKzQyODYsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIGluZGV4X2Ryb3AoKSBmb3IgbW9yZSBkZXRh aWxzLgogCSAqLwogCisJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc2V0X2RlYWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzQpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2ssIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBmMGE1 Zjg4NzlhOS4uODIwNzQ5MjM5Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBA IC0xMTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNp bmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgor I2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVu dCB0byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBl bnVtCkBAIC05MzYsNiArOTM3LDggQEAgcmV0cnk6CiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxl ID0gc2F2ZV9zY2FudHVwbGU7CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KGV4aXN0 aW5nX3Nsb3QpOworCWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhj bHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Iik7CiAKIAlyZXR1cm4gIWNv bmZsaWN0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYy MjkxLi5hZWVlZTQxZDVmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAt NDgzLDYgKzQ4Myw0OCBAQCBFeGVjRmluZFBhcnRpdGlvbihNb2RpZnlUYWJsZVN0YXRlICptdHN0 YXRlLAogCXJldHVybiBycmk7CiB9CiAKKy8qCisgKiBJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRl cgorICogCQlDaGVja3MgaWYgdGhlIGluZGV4ZXMgYXJlIGlkZW50aWNhbCBpbiB0ZXJtcyBvZiBi ZWluZyB1c2VkCisgKiAJCWFzIGFyYml0ZXJzIGZvciB0aGUgSU5TRVJUIE9OIENPTkZMSUNUIG9w ZXJhdGlvbiBieSBjb21wYXJpbmcKKyAqIAkJdGhlbSB0byB0aGUgcHJvdmlkZWQgYXJiaXRlciBp bmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSB0cnVlIGlmIGluZGV4ZXMgYXJlIGNvbXBhdGlibGUu CisgKi8KK3N0YXRpYyBib29sCitJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRlcihSZWxhdGlvbglh cmJpdGVySW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5mbyAgKmFyYml0ZXJJbmRleElu Zm8sCisJCQkJCQkgICBSZWxhdGlvbglpbmRleFJlbGF0aW9uLAorCQkJCQkJICAgSW5kZXhJbmZv ICAqaW5kZXhJbmZvKQoreworCWludCBpOworCisJaWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX1Vu aXF1ZSAhPSBpbmRleEluZm8tPmlpX1VuaXF1ZSkKKwkJcmV0dXJuIGZhbHNlOworCS8qIGl0IGlz IG5vdCBzdXBwb3J0ZWQgZm9yIGNhc2VzIG9mIGV4Y2x1c2lvbiBjb25zdHJhaW50cy4gKi8KKwlp ZiAoYXJiaXRlckluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwgfHwgaW5kZXhJbmZv LT5paV9FeGNsdXNpb25PcHMgIT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChhcmJpdGVy SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZG5rZXlhdHRzICE9IGluZGV4UmVsYXRpb24tPnJk X2luZGV4LT5pbmRua2V5YXR0cykKKwkJcmV0dXJuIGZhbHNlOworCisJZm9yIChpID0gMDsgaSA8 IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0czsgaSsrKQorCXsKKwkJaW50CQkJ YXJiaXRlckF0dG9ObyA9IGFyYml0ZXJJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5ka2V5LnZh bHVlc1tpXTsKKwkJaW50CQkJYXR0b05vID0gaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtl eS52YWx1ZXNbaV07CisJCWlmIChhcmJpdGVyQXR0b05vICE9IGF0dG9ObykKKwkJCXJldHVybiBm YWxzZTsKKwl9CisKKwlpZiAobGlzdF9kaWZmZXJlbmNlKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNz aW9ucyhhcmJpdGVySW5kZXhSZWxhdGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoaW5kZXhSZWxhdGlvbikpICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGxp c3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGFyYml0ZXJJbmRleFJlbGF0 aW9uKSwKKwkJCQkJCVJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoaW5kZXhSZWxhdGlvbikpICE9 IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCXJldHVybiB0cnVlOworfQorCiAvKgogICogRXhlY0lu aXRQYXJ0aXRpb25JbmZvCiAgKgkJTG9jayB0aGUgcGFydGl0aW9uIGFuZCBpbml0aWFsaXplIFJl c3VsdFJlbEluZm8uICBBbHNvIHNldHVwIG90aGVyCkBAIC02OTMsNiArNzM1LDggQEAgRXhlY0lu aXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRl LAogCQlpZiAocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyAh PSBOSUwpCiAJCXsKIAkJCUxpc3QJICAgKmNoaWxkSWR4czsKKwkJCUxpc3QgCSAgICpub25BbmNl c3RvcklkeHMgPSBOSUw7CisJCQlpbnQJCSAgIGksIGosIGFkZGl0aW9uYWxfYXJiaXRlcnMgPSAw OwogCiAJCQljaGlsZElkeHMgPSBSZWxhdGlvbkdldEluZGV4TGlzdChsZWFmX3BhcnRfcnJpLT5y aV9SZWxhdGlvbkRlc2MpOwogCkBAIC03MDMsMjMgKzc0Nyw3NCBAQCBFeGVjSW5pdFBhcnRpdGlv bkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCQkJTGlz dENlbGwgICAqbGMyOwogCiAJCQkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMo Y2hpbGRJZHgpOwotCQkJCWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25m bGljdEFyYml0ZXJJbmRleGVzKQorCQkJCWlmIChhbmNlc3RvcnMpCiAJCQkJewotCQkJCQlpZiAo bGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0X29pZChsYzIpKSkKLQkJCQkJCWFyYml0 ZXJJbmRleGVzID0gbGFwcGVuZF9vaWQoYXJiaXRlckluZGV4ZXMsIGNoaWxkSWR4KTsKKwkJCQkJ Zm9yZWFjaChsYzIsIHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMpCisJCQkJCXsKKwkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoYW5jZXN0b3JzLCBsZmlyc3Rf b2lkKGxjMikpKQorCQkJCQkJCWFyYml0ZXJJbmRleGVzID0gbGFwcGVuZF9vaWQoYXJiaXRlcklu ZGV4ZXMsIGNoaWxkSWR4KTsKKwkJCQkJfQogCQkJCX0KKwkJCQllbHNlIC8qIE5vIGFuY2VzdG9y IHdhcyBmb3VuZCBmb3IgdGhhdCBpbmRleC4gU2F2ZSBpdCBmb3IgcmVjaGVja2luZyBsYXRlci4g Ki8KKwkJCQkJbm9uQW5jZXN0b3JJZHhzID0gbGFwcGVuZF9vaWQobm9uQW5jZXN0b3JJZHhzLCBj aGlsZElkeCk7CiAJCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CiAJCQl9CisKKwkJCS8qCisJCQkg KiBJZiBhbnkgbm9uLWFuY2VzdG9yIGluZGV4ZXMgYXJlIGZvdW5kLCB3ZSBuZWVkIHRvIGNvbXBh cmUgdGhlbSB3aXRoIG90aGVyCisJCQkgKiBpbmRleGVzIG9mIHRoZSByZWxhdGlvbiB0aGF0IHdp bGwgYmUgdXNlZCBhcyBhcmJpdGVycy4gVGhpcyBpcyBuZWNlc3NhcnkKKwkJCSAqIHdoZW4gYSBw YXJ0aXRpb25lZCBpbmRleCBpcyBwcm9jZXNzZWQgYnkgUkVJTkRFWCBDT05DVVJSRU5UTFkuIEJv dGggaW5kZXhlcworCQkJICogbXVzdCBiZSBjb25zaWRlcmVkIGFzIGFyYml0ZXJzIHRvIGVuc3Vy ZSB0aGF0IGFsbCBjb25jdXJyZW50IHRyYW5zYWN0aW9ucworCQkJICogdXNlIHRoZSBzYW1lIHNl dCBvZiBhcmJpdGVycy4KKwkJCSAqLworCQkJaWYgKG5vbkFuY2VzdG9ySWR4cykKKwkJCXsKKwkJ CQlmb3IgKGkgPSAwOyBpIDwgbGVhZl9wYXJ0X3JyaS0+cmlfTnVtSW5kaWNlczsgaSsrKQorCQkJ CXsKKwkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChub25BbmNlc3RvcklkeHMsIGxlYWZfcGFydF9y cmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJ CQl7CisJCQkJCQlSZWxhdGlvbiBub25BbmNlc3RvckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV07CisJCQkJCQlJbmRleEluZm8gKm5vbkFuY2Vz dG9ySW5kZXhJbmZvID0gbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkluZm9baV07CisJ CQkJCQlBc3NlcnQoIWxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5kZXhlcywgbm9uQW5jZXN0b3JJ bmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCkpOworCisJCQkJCQkvKiBJdCBpcyB0 b28gZWFybHkgdG8gdXMgbm9uLXJlYWR5IGluZGV4ZXMgYXMgYXJiaXRlcnMgKi8KKwkJCQkJCWlm ICghbm9uQW5jZXN0b3JJbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cykKKwkJCQkJCQljb250 aW51ZTsKKworCQkJCQkJZm9yIChqID0gMDsgaiA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGlj ZXM7IGorKykKKwkJCQkJCXsKKwkJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFyYml0ZXJJbmRl eGVzLAorCQkJCQkJCQkJCQkJbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2pd LT5yZF9pbmRleC0+aW5kZXhyZWxpZCkpCisJCQkJCQkJeworCQkJCQkJCQlSZWxhdGlvbiBhcmJp dGVySW5kZXhSZWxhdGlvbiA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XTsKKwkJCQkJCQkJSW5kZXhJbmZvICphcmJpdGVySW5kZXhJbmZvID0gbGVhZl9wYXJ0X3JyaS0+ cmlfSW5kZXhSZWxhdGlvbkluZm9bal07CisKKwkJCQkJCQkJLyogSWYgbm9uLWFuY2VzdG9yIGlu ZGV4IGFyZSBjb21wYXRpYmxlIHRvIGFyYml0ZXIgLSB1c2UgaXQgYXMgYXJiaXRlciB0b28uICov CisJCQkJCQkJCWlmIChJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRlcihhcmJpdGVySW5kZXhSZWxh dGlvbiwgYXJiaXRlckluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgIG5vbkFuY2VzdG9ySW5k ZXhSZWxhdGlvbiwgbm9uQW5jZXN0b3JJbmRleEluZm8pKQorCQkJCQkJCQl7CisJCQkJCQkJCQlh cmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLAorCQkJCQkJCQkJCQkJ CQkJCSBub25BbmNlc3RvckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRleHJlbGlkKTsKKwkJ CQkJCQkJCWFkZGl0aW9uYWxfYXJiaXRlcnMrKzsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJ CX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWxpc3RfZnJlZShub25BbmNlc3RvcklkeHMpOwor CisJCQkvKgorCQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5n dGgsIHNvbWV0aGluZyBpcyB3cm9uZy4KKwkJCSAqIChUaGlzIHNob3VsZG4ndCBoYXBwZW4sIHNp bmNlIGFyYml0ZXIgaW5kZXggc2VsZWN0aW9uIHNob3VsZCBub3QKKwkJCSAqIHBpY2sgdXAgYSBu b24tcmVhZHkgaW5kZXguKQorCQkJICoKKwkJCSAqIEJ1dCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGFu IGFkZGl0aW9uYWwgYXJiaXRlciBpbmRleGVzIGFsc28uCisJCQkgKi8KKwkJCWlmIChsaXN0X2xl bmd0aChyb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzKSAhPQor CQkJCWxpc3RfbGVuZ3RoKGFyYml0ZXJJbmRleGVzKSAtIGFkZGl0aW9uYWxfYXJiaXRlcnMpCisJ CQkJZWxvZyhFUlJPUiwgImludmFsaWQgYXJiaXRlciBpbmRleCBsaXN0Iik7CiAJCX0KLQotCQkv KgotCQkgKiBJZiB0aGUgcmVzdWx0aW5nIGxpc3RzIGFyZSBvZiBpbmVxdWFsIGxlbmd0aCwgc29t ZXRoaW5nIGlzIHdyb25nLgotCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSBhcmJp dGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90Ci0JCSAqIHBpY2sgdXAgYW4gaW52YWxpZCBp bmRleC4pCi0JCSAqLwotCQlpZiAobGlzdF9sZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29u Q29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0KLQkJCWxpc3RfbGVuZ3RoKGFyYml0ZXJJbmRleGVz KSkKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQlsZWFm X3BhcnRfcnJpLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBhcmJpdGVySW5kZXhlczsK IAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBjNDQ1YzQz M2RmNC4uNjdiZWZiNmNiYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCiAKIAogdHlwZWRlZiBzdHJ1Y3QgTVRUYXJnZXRSZWxMb29rdXAK QEAgLTEwODcsNiArMTA4OCw3IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250 ZXh0LAogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9CiAJCQl9CisJCQlJTkpFQ1RJT05fUE9JTlQo ImV4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUiKTsKIAogCQkJLyoKIAkJCSAq IEJlZm9yZSB3ZSBzdGFydCBpbnNlcnRpb24gcHJvcGVyLCBhY3F1aXJlIG91ciAic3BlY3VsYXRp dmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBjMzFjYzNlZTY5Zi4uYjRm OTY0MWU1ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTcxNCwxMiAr NzE0LDE0IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAlMaXN0 CSAgICppbmRleExpc3Q7CiAJTGlzdENlbGwgICAqbDsKIAotCS8qIE5vcm1hbGl6ZWQgaW5mZXJl bmNlIGF0dHJpYnV0ZXMgYW5kIGluZmVyZW5jZSBleHByZXNzaW9uczogKi8KLQlCaXRtYXBzZXQg ICppbmZlckF0dHJzID0gTlVMTDsKLQlMaXN0CSAgICppbmZlckVsZW1zID0gTklMOworCS8qIE5v cm1hbGl6ZWQgcmVxdWlyZWQgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnM6ICovCisJQml0bWFw c2V0ICAqcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBOVUxMOworCUxpc3QJICAgKnJlcXVpcmVkQXJi aXRlckVsZW1zID0gTklMOworCUxpc3QJICAgKnJlcXVpcmVkSW5kZXhQcmVkRXhwcnMgPSAoTGlz dCAqKSBvbmNvbmZsaWN0LT5hcmJpdGVyV2hlcmU7CiAKIAkvKiBSZXN1bHRzICovCiAJTGlzdAkg ICAqcmVzdWx0cyA9IE5JTDsKKwlib29sCSAgIGZvdW5kVmFsaWQgPSBmYWxzZTsKIAogCS8qCiAJ ICogUXVpY2tseSByZXR1cm4gTklMIGZvciBPTiBDT05GTElDVCBETyBOT1RISU5HIHdpdGhvdXQg YW4gaW5mZXJlbmNlCkBAIC03NTQsOCArNzU2LDggQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBs YW5uZXJJbmZvICpyb290KQogCiAJCWlmICghSXNBKGVsZW0tPmV4cHIsIFZhcikpCiAJCXsKLQkJ CS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiBpbmZlckVsZW1zIGZvciBu b3cgKi8KLQkJCWluZmVyRWxlbXMgPSBsYXBwZW5kKGluZmVyRWxlbXMsIGVsZW0tPmV4cHIpOwor CQkJLyogSWYgbm90IGEgcGxhaW4gVmFyLCBqdXN0IHNob3ZlIGl0IGluIHJlcXVpcmVkQXJiaXRl ckVsZW1zIGZvciBub3cgKi8KKwkJCXJlcXVpcmVkQXJiaXRlckVsZW1zID0gbGFwcGVuZChyZXF1 aXJlZEFyYml0ZXJFbGVtcywgZWxlbS0+ZXhwcik7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC03 NjcsMzAgKzc2OSw3NiBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3Qp CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVy cm1zZygid2hvbGUgcm93IHVuaXF1ZSBpbmRleCBpbmZlcmVuY2Ugc3BlY2lmaWNhdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQiKSkpOwogCi0JCWluZmVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihpbmZl ckF0dHJzLAorCQlyZXF1aXJlZEFyYml0ZXJBdHRycyA9IGJtc19hZGRfbWVtYmVyKHJlcXVpcmVk QXJiaXRlckF0dHJzLAogCQkJCQkJCQkJYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyKTsKIAl9CiAKKwlpbmRleExpc3QgPSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWxh dGlvbik7CisKIAkvKgogCSAqIExvb2t1cCBuYW1lZCBjb25zdHJhaW50J3MgaW5kZXguICBUaGlz IGlzIG5vdCBpbW1lZGlhdGVseSByZXR1cm5lZAotCSAqIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFs IHNhbml0eSBjaGVja3MgYXJlIHJlcXVpcmVkLgorCSAqIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFs IHNhbml0eSBjaGVja3MgYXJlIHJlcXVpcmVkLiBBZGRpdGlvbmFsbHksIHdlCisJICogbmVlZCB0 byBwcm9jZXNzIG90aGVyIGluZGV4ZXMgYXMgcG90ZW50aWFsIGFyYml0ZXJzIHRvIGFjY291bnQg Zm9yCisJICogY2FzZXMgd2hlcmUgUkVJTkRFWCBDT05DVVJSRU5UTFkgaXMgcHJvY2Vzc2luZyBh biBpbmRleCB1c2VkIGFzIGEKKwkgKiBuYW1lZCBjb25zdHJhaW50LgogCSAqLwogCWlmIChvbmNv bmZsaWN0LT5jb25zdHJhaW50ICE9IEludmFsaWRPaWQpCiAJewogCQlpbmRleE9pZEZyb21Db25z dHJhaW50ID0gZ2V0X2NvbnN0cmFpbnRfaW5kZXgob25jb25mbGljdC0+Y29uc3RyYWludCk7CiAK IAkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQgPT0gSW52YWxpZE9pZCkKKwkJewogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0J CQkJCSBlcnJtc2coImNvbnN0cmFpbnQgaW4gT04gQ09ORkxJQ1QgY2xhdXNlIGhhcyBubyBhc3Nv Y2lhdGVkIGluZGV4IikpKTsKKwkJCQkJZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNU IGNsYXVzZSBoYXMgbm8gYXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCX0KKworCQkvKgorCQkgKiBG aW5kIHRoZSBuYW1lZCBjb25zdHJhaW50IGluZGV4IHRvIGV4dHJhY3QgaXRzIGF0dHJpYnV0ZXMg YW5kIHByZWRpY2F0ZXMuCisJCSAqIFdlIG9wZW4gYWxsIGluZGV4ZXMgaW4gdGhlIGxvb3AgdG8g YXZvaWQgZGVhZGxvY2sgb2YgY2hhbmdlZCBvcmRlciBvZiBsb2Nrcy4KKwkJICogKi8KKwkJZm9y ZWFjaChsLCBpbmRleExpc3QpCisJCXsKKwkJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChs KTsKKwkJCVJlbGF0aW9uCWlkeFJlbDsKKwkJCUZvcm1fcGdfaW5kZXggaWR4Rm9ybTsKKwkJCUF0 dHJOdW1iZXIJbmF0dDsKKworCQkJaWR4UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5y ZWxsb2NrbW9kZSk7CisJCQlpZHhGb3JtID0gaWR4UmVsLT5yZF9pbmRleDsKKworCQkJaWYgKGlk eEZvcm0tPmluZGlzcmVhZHkpCisJCQl7CisJCQkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQg PT0gaWR4Rm9ybS0+aW5kZXhyZWxpZCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFByZXBhcmUg cmVxdWlyZW1lbnRzIGZvciBvdGhlciBpbmRleGVzIHRvIGJlIHVzZWQgYXMgYXJiaXRlciB0b2dl dGhlcgorCQkJCQkgKiB3aXRoIGluZGV4T2lkRnJvbUNvbnN0cmFpbnQuIEl0IGlzIHJlcXVpcmVk IHRvIGludm9sdmUgYm90aCBlcXVhbHMgaW5kZXhlcworCQkJCQkgKiBpbiBjYXNlIG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZLgorCQkJCQkgKi8KKwkJCQkJZm9yIChuYXR0ID0gMDsgbmF0dCA8IGlk eEZvcm0tPmluZG5rZXlhdHRzOyBuYXR0KyspCisJCQkJCXsKKwkJCQkJCWludAkJCWF0dG5vID0g aWR4UmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tuYXR0XTsKKworCQkJCQkJaWYgKGF0dG5v ICE9IDApCisJCQkJCQkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1 aXJlZEFyYml0ZXJBdHRycywKKwkJCQkJCQkJCQkJCQkJICBhdHRubyAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQl9CisJCQkJCXJlcXVpcmVkQXJiaXRlckVsZW1z ID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlkeFJlbCk7CisJCQkJCXJlcXVpcmVkSW5k ZXhQcmVkRXhwcnMgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGlkeFJlbCk7CisJCQkJCS8q IFdlIGFyZSBkb25lLCBzbywgcXVpdGUgdGhlIGxvb3AuICovCisJCQkJCWluZGV4X2Nsb3NlKGlk eFJlbCwgTm9Mb2NrKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaW5kZXhfY2xvc2Uo aWR4UmVsLCBOb0xvY2spOworCQl9CiAJfQogCiAJLyoKIAkgKiBVc2luZyB0aGF0IHJlcHJlc2Vu dGF0aW9uLCBpdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgaW5kZXhlcyBvbiB0aGUKIAkgKiB0 YXJnZXQgcmVsYXRpb24gdG8gdHJ5IGFuZCBmaW5kIGEgbWF0Y2gKIAkgKi8KLQlpbmRleExpc3Qg PSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWxhdGlvbik7Ci0KIAlmb3JlYWNoKGwsIGluZGV4TGlz dCkKIAl7CiAJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChsKTsKQEAgLTgxMyw3ICs4NjEs MTMgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQlpZHhSZWwg PSBpbmRleF9vcGVuKGluZGV4b2lkLCBydGUtPnJlbGxvY2ttb2RlKTsKIAkJaWR4Rm9ybSA9IGlk eFJlbC0+cmRfaW5kZXg7CiAKLQkJaWYgKCFpZHhGb3JtLT5pbmRpc3ZhbGlkKQorCQkvKgorCQkg KiBXZSBuZWVkIHRvIGNvbnNpZGVyIGJvdGggaW5kaXN2YWxpZCBhbmQgaW5kaXNyZWFkeSBpbmRl eGVzIGJlY2F1c2UKKwkJICogdGhlbSBtYXkgYmVjb21lIGluZGlzdmFsaWQgYmVmb3JlIGV4ZWN1 dGlvbiBwaGFzZS4gSXQgaXMgcmVxdWlyZWQKKwkJICogdG8ga2VlcCBzZXQgb2YgaW5kZXhlcyB1 c2VkIGFzIGFyYml0ZXIgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbAorCQkgKiBjb25jdXJyZW50IHRy YW5zYWN0aW9ucy4KKwkJICovCisJCWlmICghaWR4Rm9ybS0+aW5kaXNyZWFkeSkKIAkJCWdvdG8g bmV4dDsKIAogCQkvKgpAQCAtODMzLDI3ICs4ODcsMjMgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVz KFBsYW5uZXJJbmZvICpyb290KQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkJCSBlcnJtc2coIk9OIENPTkZMSUNUIERP IFVQREFURSBub3Qgc3VwcG9ydGVkIHdpdGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzIikpKTsKLQot CQkJcmVzdWx0cyA9IGxhcHBlbmRfb2lkKHJlc3VsdHMsIGlkeEZvcm0tPmluZGV4cmVsaWQpOwot CQkJbGlzdF9mcmVlKGluZGV4TGlzdCk7Ci0JCQlpbmRleF9jbG9zZShpZHhSZWwsIE5vTG9jayk7 Ci0JCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKLQkJCXJldHVybiByZXN1bHRzOwor CQkJZ290byBmb3VuZDsKIAkJfQogCQllbHNlIGlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ICE9 IEludmFsaWRPaWQpCiAJCXsKLQkJCS8qIE5vIHBvaW50IGluIGZ1cnRoZXIgd29yayBmb3IgaW5k ZXggaW4gbmFtZWQgY29uc3RyYWludCBjYXNlICovCi0JCQlnb3RvIG5leHQ7CisJCQkvKiBJbiB0 aGUgY2FzZSBvZiAiT04gY29uc3RyYWludF9uYW1lIERPIFVQREFURSIgd2UgbmVlZCB0byBza2lw IG5vbi11bmlxdWUgY2FuZGlkYXRlcy4gKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUg JiYgb25jb25mbGljdC0+YWN0aW9uID09IE9OQ09ORkxJQ1RfVVBEQVRFKQorCQkJCWdvdG8gbmV4 dDsKKwkJfSAgZWxzZSB7CisJCQkvKgorCQkJICogT25seSBjb25zaWRlcmluZyBjb252ZW50aW9u YWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAorCQkJICogY29uc3RyYWludHMp LCBzbyBpbmRleCB1bmRlciBjb25zaWRlcmF0aW9uIGNhbiBiZSBpbW1lZGlhdGVseQorCQkJICog c2tpcHBlZCBpZiBpdCdzIG5vdCB1bmlxdWUKKwkJCSAqLworCQkJaWYgKCFpZHhGb3JtLT5pbmRp c3VuaXF1ZSkKKwkJCQlnb3RvIG5leHQ7CiAJCX0KIAotCQkvKgotCQkgKiBPbmx5IGNvbnNpZGVy aW5nIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgYXQgdGhpcyBwb2ludCAobm90IG5hbWVkCi0JCSAq IGNvbnN0cmFpbnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRp YXRlbHkKLQkJICogc2tpcHBlZCBpZiBpdCdzIG5vdCB1bmlxdWUKLQkJICovCi0JCWlmICghaWR4 Rm9ybS0+aW5kaXN1bmlxdWUpCi0JCQlnb3RvIG5leHQ7Ci0KIAkJLyoKIAkJICogU28tY2FsbGVk IHVuaXF1ZSBjb25zdHJhaW50cyB3aXRoIFdJVEhPVVQgT1ZFUkxBUFMgYXJlIHJlYWxseQogCQkg KiBleGNsdXNpb24gY29uc3RyYWludHMsIHNvIHNraXAgdGhvc2UgdG9vLgpAQCAtODczLDcgKzky Myw3IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJfQogCiAJ CS8qIE5vbi1leHByZXNzaW9uIGF0dHJpYnV0ZXMgKGlmIGFueSkgbXVzdCBtYXRjaCAqLwotCQlp ZiAoIWJtc19lcXVhbChpbmRleGVkQXR0cnMsIGluZmVyQXR0cnMpKQorCQlpZiAoIWJtc19lcXVh bChpbmRleGVkQXR0cnMsIHJlcXVpcmVkQXJiaXRlckF0dHJzKSkKIAkJCWdvdG8gbmV4dDsKIAog CQkvKiBFeHByZXNzaW9uIGF0dHJpYnV0ZXMgKGlmIGFueSkgbXVzdCBtYXRjaCAqLwpAQCAtODgx LDYgKzkzMSwxMCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJ CWlmIChpZHhFeHBycyAmJiB2YXJubyAhPSAxKQogCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikg aWR4RXhwcnMsIDEsIHZhcm5vLCAwKTsKIAorCQkvKgorCQkgKiBJZiBhcmJpdGVyRWxlbXMgYXJl IHByZXNlbnQsIGNoZWNrIHRoZW0uIElmIG5hbWUgPmNvbnN0cmFpbnQgaXMKKwkJICogcHJlc2Vu dCBhcmJpdGVyRWxlbXMgPT0gTklMLgorCQkgKi8KIAkJZm9yZWFjaChlbCwgb25jb25mbGljdC0+ YXJiaXRlckVsZW1zKQogCQl7CiAJCQlJbmZlcmVuY2VFbGVtICplbGVtID0gKEluZmVyZW5jZUVs ZW0gKikgbGZpcnN0KGVsKTsKQEAgLTkxOCwyNyArOTcyLDM1IEBAIGluZmVyX2FyYml0ZXJfaW5k ZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJfQogCiAJCS8qCi0JCSAqIE5vdyB0aGF0IGFsbCBp bmZlcmVuY2UgZWxlbWVudHMgd2VyZSBtYXRjaGVkLCBlbnN1cmUgdGhhdCB0aGUKKwkJICogSW4g Y2FzZSBvZiB0aGUgY29udmVudGlvbmFsIGluZmVyZW5jZSBpbnZvbHZlZCBlbnN1cmUgdGhhdCB0 aGUKIAkJICogZXhwcmVzc2lvbiBlbGVtZW50cyBmcm9tIGluZmVyZW5jZSBjbGF1c2UgYXJlIG5v dCBtaXNzaW5nIGFueQogCQkgKiBjYXRhbG9nZWQgZXhwcmVzc2lvbnMuICBUaGlzIGRvZXMgdGhl IHJpZ2h0IHRoaW5nIHdoZW4gdW5pcXVlCiAJCSAqIGluZGV4ZXMgcmVkdW5kYW50bHkgcmVwZWF0 IHRoZSBzYW1lIGF0dHJpYnV0ZSwgb3IgaWYgYXR0cmlidXRlcwogCQkgKiByZWR1bmRhbnRseSBh cHBlYXIgbXVsdGlwbGUgdGltZXMgd2l0aGluIGFuIGluZmVyZW5jZSBjbGF1c2UuCisJCSAqCisJ CSAqIEluIHRoZSBjYXNlIG9mIG5hbWVkIGNvbnN0cmFpbnQgZW5zdXJlIGNhbmRpZGF0ZSBoYXMg ZXF1YWwgc2V0CisJCSAqIG9mIGV4cHJlc3Npb25zIGFzIHRoZSBuYW1lZCBjb25zdHJhaW50IGlu ZGV4LgogCQkgKi8KLQkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgaW5mZXJFbGVtcykg IT0gTklMKQorCQlpZiAobGlzdF9kaWZmZXJlbmNlKGlkeEV4cHJzLCByZXF1aXJlZEFyYml0ZXJF bGVtcykgIT0gTklMKQogCQkJZ290byBuZXh0OwogCi0JCS8qCi0JCSAqIElmIGl0J3MgYSBwYXJ0 aWFsIGluZGV4LCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1wbGllZCBieSB0aGUgT04KLQkJICog Q09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCi0JCSAqLwogCQlwcmVkRXhwcnMgPSBSZWxhdGlvbkdl dEluZGV4UHJlZGljYXRlKGlkeFJlbCk7CiAJCWlmIChwcmVkRXhwcnMgJiYgdmFybm8gIT0gMSkK IAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIHByZWRFeHBycywgMSwgdmFybm8sIDApOwogCi0J CWlmICghcHJlZGljYXRlX2ltcGxpZWRfYnkocHJlZEV4cHJzLCAoTGlzdCAqKSBvbmNvbmZsaWN0 LT5hcmJpdGVyV2hlcmUsIGZhbHNlKSkKKwkJLyoKKwkJICogSWYgaXQncyBhIHBhcnRpYWwgaW5k ZXggYW5kIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UsIGl0cyBwcmVkaWNhdGUgbXVzdCBiZSBpbXBs aWVkCisJCSAqIGJ5IHRoZSBPTiBDT05GTElDVCdzIFdIRVJFIGNsYXVzZS4KKwkJICovCisJCWlm IChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQgJiYgIXByZWRpY2F0ZV9pbXBs aWVkX2J5KHByZWRFeHBycywgcmVxdWlyZWRJbmRleFByZWRFeHBycywgZmFsc2UpKQorCQkJZ290 byBuZXh0OworCQkvKiBJZiBpdCdzIGEgcGFydGlhbCBpbmRleCBhbmQgbmFtZWQgY29uc3RyYWlu dCBwcmVkaWNhdGVzIG11c3QgYmUgZXF1YWwuICovCisJCWlmIChpbmRleE9pZEZyb21Db25zdHJh aW50ICE9IEludmFsaWRPaWQgJiYgbGlzdF9kaWZmZXJlbmNlKHByZWRFeHBycywgcmVxdWlyZWRJ bmRleFByZWRFeHBycykgIT0gTklMKQogCQkJZ290byBuZXh0OwogCitmb3VuZDoKIAkJcmVzdWx0 cyA9IGxhcHBlbmRfb2lkKHJlc3VsdHMsIGlkeEZvcm0tPmluZGV4cmVsaWQpOworCQlmb3VuZFZh bGlkIHw9IGlkeEZvcm0tPmluZGlzdmFsaWQ7CiBuZXh0OgogCQlpbmRleF9jbG9zZShpZHhSZWws IE5vTG9jayk7CiAJfQpAQCAtOTQ2LDcgKzEwMDgsOCBAQCBuZXh0OgogCWxpc3RfZnJlZShpbmRl eExpc3QpOwogCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOwogCi0JaWYgKHJlc3VsdHMg PT0gTklMKQorCS8qIEl0IGlzIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGluZGlzdmFs aWQgaW5kZXggZHVyaW5nIHRoZSBwbGFubmluZy4gKi8KKwlpZiAocmVzdWx0cyA9PSBOSUwgfHwg IWZvdW5kVmFsaWQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBlcnJtc2coInRoZXJlIGlzIG5vIHVuaXF1ZSBv ciBleGNsdXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09ORkxJQ1Qgc3BlY2lmaWNh dGlvbiIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDZlYjI5Yjk5NzM1Li4xMDFh MDJjNWI2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTY0LDYgKzY0LDcgQEAKICNp bmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2lu dC5oIgogCiAKIC8qCkBAIC0zODgsNiArMzg5LDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCh2b2lkKQogCQlwYWlyaW5naGVhcF9yZW1vdmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMsICZDYXRh bG9nU25hcHNob3QtPnBoX25vZGUpOwogCQlDYXRhbG9nU25hcHNob3QgPSBOVUxMOwogCQlTbmFw c2hvdFJlc2V0WG1pbigpOworCQlJTkpFQ1RJT05fUE9JTlQoImludmFsaWRhdGVfY2F0YWxvZ19z bmFwc2hvdF9lbmQiKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9NYWtlZmlsZQppbmRleCAwNzUzYTlkZjU4Yy4uZjhmODZlOGYzYjYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTEzLDcgKzEzLDEyIEBAIFBHRklM RURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRz IgogUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jCiBSRUdSRVNTX09QVFMg PSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwogCi1JU09MQVRJT04g PSBiYXNpYyBpbnBsYWNlCitJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIFwKKwkJCXJlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydCBcCisJCQlpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0IFwKKwkJ CXJlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZCBcCisJCQlyZWluZGV4X2Nv bmN1cnJlbnRseV91cHNlcnRfb25fY29uc3RyYWludCBcCisJCQlpbmRleF9jb25jdXJyZW50bHlf dXBzZXJ0X3ByZWRpY2F0ZQogCiBUQVBfVEVTVFMgPSAxCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9pbmRl eF9jb25jdXJyZW50bHlfdXBzZXJ0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uN2YwNjU5ZTgzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5vdXQK QEAgLTAsMCArMSw4MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDQgc2Vzc2lvbnMKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X2NyZWF0ZV9pbmRleCBzMV9zdGFydF91cHNlcnQg czRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIHMyX3N0YXJ0X3Vwc2VydCBz NF93YWtldXBfczFfZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QgczRfd2FrZXVwX3My IHM0X3dha2V1cF9zMQoraW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFy dF9jcmVhdGVfaW5kZXg6IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9wa2V5 X2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChpKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9zdGFydF91 cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qo aSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkOiAKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxp ZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2Fr ZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBzM19zdGFydF9jcmVhdGVfaW5kZXg6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg b24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxX2Zyb21faW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90 OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2ludmFsaWRhdGVfY2F0YWxvZ19z bmFwc2hvdF9lbmQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2ludmFsaWRh dGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3Bl Y3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0 X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25m bGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vw c2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wcmVkaWNhdGUu b3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2luZGV4X2Nv bmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMjMwMGQ1MTY1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2Vy dF9wcmVkaWNhdGUub3V0CkBAIC0wLDAgKzEsODAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0 IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9jcmVhdGVfaW5kZXgg czFfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCBz Ml9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxX2Zyb21faW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBz aG90IHM0X3dha2V1cF9zMiBzNF93YWtldXBfczEKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczNfc3RhcnRfY3JlYXRlX2luZGV4OiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSB0YmxfcGtleV9zcGVjaWFsX2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChhYnMoaSkpIFdI RVJFIGkgPCAxMDAwMDsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9zdGFydF91cHNlcnQ6IElOU0VS VCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoYWJzKGkpKSB3aGVy ZSBpIDwgMTAwIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZDogCisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcp OworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZGVmaW5lX2luZGV4X2JlZm9yZV9z ZXRfdmFsaWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfY3JlYXRlX2luZGV4OiA8Li4uIGNvbXBsZXRl ZD4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMs bm93KCkpICBvbiBjb25mbGljdChhYnMoaSkpIHdoZXJlIGkgPCAxMDAgZG8gdXBkYXRlIHNldCB1 cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxX2Zyb21f aW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKwor aW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4 ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsK KworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVw X3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZs aWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193 YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9j b25jdXJyZW50bHlfdXBzZXJ0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNGJiYmNiZGQ4OAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1 cnJlbnRseV91cHNlcnQub3V0CkBAIC0wLDAgKzEsMjM4IEBACitQYXJzZWQgdGVzdCBzcGVjIHdp dGggNCBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRfcmVpbmRleCBz MV9zdGFydF91cHNlcnQgczRfd2FrZXVwX3RvX3N3YXAgczJfc3RhcnRfdXBzZXJ0IHM0X3dha2V1 cF9zMSBzNF93YWtldXBfczIgczRfd2FrZXVwX3RvX3NldF9kZWFkCitpbmplY3Rpb25fcG9pbnRz X2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50 c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIHRlc3QudGJsX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfc3RhcnRfdXBzZXJ0 OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRv IHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dh a2V1cF90b19zd2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhf cmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcp OworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVw CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygx Myxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25m bGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vw c2VydDogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVj dGlvbl9wb2ludHNfZGV0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZl Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVf aW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5q ZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2Rl YWQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFj aAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4 OiA8Li4uIGNvbXBsZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X3JlaW5k ZXggczJfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzNF93 YWtldXBfczEgczRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVhZAoraW5qZWN0aW9uX3Bv aW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9w b2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyA8d2FpdGluZyAuLi4+CitzdGVwIHMyX3N0YXJ0X3Vw c2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChp KSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz NF93YWtldXBfdG9fc3dhcDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3 YXAnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dh a2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxV RVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5v dygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9f Y29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1 c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCitpbmplY3Rpb25fcG9p bnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFy dF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxh dGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfdG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3Nl dF9kZWFkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0 aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19k ZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVp bmRleDogPC4uLiBjb21wbGV0ZWQ+CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9y ZWluZGV4IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzMl9zdGFydF91cHNlcnQg czRfd2FrZXVwX3MxIHM0X3dha2V1cF90b19zZXRfZGVhZCBzNF93YWtldXBfczIKK2luamVjdGlv bl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rp b25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtl dXBfdG9fc3dhcDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4X3Jl bGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsK KworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMs bm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50Ymwg VkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQg PSBub3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 X25vX2NvbmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19l eGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9u X3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFf c3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFk OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29u Y3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dh a2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisK K2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdl eGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7 CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMl9zdGFy dF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfb25fY29uc3RyYWludC5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxY2ZkMTczMWM4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dApAQCAtMCwwICsxLDIzOCBAQAor UGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDQgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMzX3N0YXJ0X3JlaW5kZXggczFfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMyX3N0 YXJ0X3Vwc2VydCBzNF93YWtldXBfczEgczRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVh ZAoraW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyA8d2FpdGluZyAuLi4+Citz dGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygp KSBvbiBjb25mbGljdCBvbiBjb25zdHJhaW50IHRibF9wa2V5IGRvIHVwZGF0ZSBzZXQgdXBkYXRl ZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF90b19zd2FwOiAKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCitpbmplY3Rpb25fcG9p bnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFy dF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxp Y3Qgb24gY29uc3RyYWludCB0YmxfcGtleSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3co KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2Nv bmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9uX3BvaW50 c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3RhcnRf dXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRp dmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9y ZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitp bmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFkOiAKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRf ZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlv bl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0 YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5k ZXg6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRfcmVp bmRleCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3RvX3N3YXAgczFfc3RhcnRfdXBzZXJ0IHM0 X3dha2V1cF9zMSBzNF93YWtldXBfczIgczRfd2FrZXVwX3RvX3NldF9kZWFkCitpbmplY3Rpb25f cG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9u X3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHRlc3QudGJsX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRf dXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0 IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXA6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3 YXAnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5T RVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdCBvbiBjb25zdHJh aW50IHRibF9wa2V5IGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAu Li4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNo KCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFydF91cHNlcnQ6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVj dWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2lu dHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzNF93YWtldXBfdG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRs eV9iZWZvcmVfc2V0X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogPC4uLiBjb21w bGV0ZWQ+CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9yZWluZGV4IHM0X3dha2V1 cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxIHM0 X3dha2V1cF90b19zZXRfZGVhZCBzNF93YWtldXBfczIKK2luamVjdGlvbl9wb2ludHNfYXR0YWNo CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFj aAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg dGVzdC50YmxfcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfdG9fc3dhcDogCisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVp bmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsKKworaW5qZWN0aW9uX3Bv aW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZs aWN0IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93 KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0 LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkg ZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRf d2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1 c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25v X2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3Bv aW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2lu amVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxh dGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4 X2NvbmN1cnJlbnRseV91cHNlcnRfcGFydGl0aW9uZWQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0 aXRpb25lZC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM5NWZm MjY0ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZC5vdXQK QEAgLTAsMCArMSwyMzggQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0IHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9yZWluZGV4IHMxX3N0YXJ0X3Vwc2VydCBzNF93 YWtldXBfdG9fc3dhcCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxIHM0X3dha2V1cF9zMiBz NF93YWtldXBfdG9fc2V0X2RlYWQKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0 aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFy dGl0aW9uX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQg SU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBz ZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF90b19z d2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCitpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg b24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1 ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3Nw ZWN1bGF0aXZlJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3Bv aW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2lu amVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiA8Li4uIGNv bXBsZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X3JlaW5kZXggczJfc3Rh cnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzNF93YWtldXBfczEg czRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVhZAoraW5qZWN0aW9uX3BvaW50c19hdHRh Y2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEg cm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0 YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSB0ZXN0LnRibF9wYXJ0aXRpb25fcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMl9zdGFydF91 cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qo aSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czRfd2FrZXVwX3RvX3N3YXA6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVp bmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z d2FwJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193 YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFM VUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBu b3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25v X2NvbmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19leGNs dXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9uX3Bv aW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2Jl Zm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFkOiAKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z ZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxh dGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3Jl aW5kZXg6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRf cmVpbmRleCBzNF93YWtldXBfdG9fc3dhcCBzMV9zdGFydF91cHNlcnQgczJfc3RhcnRfdXBzZXJ0 IHM0X3dha2V1cF9zMSBzNF93YWtldXBfdG9fc2V0X2RlYWQgczRfd2FrZXVwX3MyCitpbmplY3Rp b25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0 aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OyA8d2FpdGluZyAuLi4+Citz dGVwIHM0X3dha2V1cF90b19zd2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZv cmVfc3dhcCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2lu dHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJs IFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0 ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5U TyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQg dXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVl X2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtl dXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor CitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCBzMV9zdGFydF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzNF93YWtldXBf dG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9y ZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0 X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRz X3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3Bl Y3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5kZXggNThmMTkwMDExNTcuLjkxZmM4Y2U2 ODdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk CkBAIC00NCw3ICs0NCwxNiBAQCB0ZXN0cyArPSB7CiAgICAgJ3NwZWNzJzogWwogICAgICAgJ2Jh c2ljJywKICAgICAgICdpbnBsYWNlJywKKyAgICAgICdyZWluZGV4X2NvbmN1cnJlbnRseV91cHNl cnQnLAorICAgICAgJ2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQnLAorICAgICAgJ3JlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZCcsCisgICAgICAncmVpbmRleF9jb25jdXJy ZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQnLAorICAgICAgJ2luZGV4X2NvbmN1cnJlbnRseV91 cHNlcnRfcHJlZGljYXRlJywKICAgICBdLAorICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJl IGNsdXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKKyAgICAncnVubmluZ2NoZWNr JzogZmFsc2UsCisgICAgIyBXZSB3YWl0aW5nIGZvciBhbGwgc25hcHNob3RzLCBzbywgYXZvaWQg cGFyYWxsZWwgdGVzdCBleGVjdXRpb25zCisgICAgJ3J1bm5pbmdjaGVjay1wYXJhbGxlbCc6IGZh bHNlLAogICB9LAogICAndGFwJzogewogICAgICdlbnYnOiB7CkBAIC01Myw1ICs2Miw3IEBAIHRl c3RzICs9IHsKICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfc3RhdHMucGwnLAogICAgIF0s CisgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxl IGluc3RhbGxjaGVjaworICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwKICAgfSwKIH0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25j dXJyZW50bHlfdXBzZXJ0LnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3BlY3MvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4wNzU0NTA5MzViNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0LnNwZWMKQEAgLTAsMCArMSw2OCBAQAorIyBUZXN0IHJhY2UgY29uZGl0aW9ucyBpbnZvbHZp bmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxlCisjIC0gczI6IFVQU0VSVCB0aGUgc2FtZSB0dXBs ZQorIyAtIHMzOiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWQorIyAtIHM0OiBvcGVy YXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9H R0VEIFRBQkxFIHRlc3QudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFt cCk7CisJQUxURVIgVEFCTEUgdGVzdC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworfQor Cit0ZWFyZG93bgoreworCURST1AgU0NIRU1BIHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOworfQorCitzZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAn d2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZV9jYXRh bG9nX3NuYXBzaG90X2VuZCcsICd3YWl0Jyk7Cit9CitzdGVwIHMxX3N0YXJ0X3Vwc2VydAl7IElO U0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBk YXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0 Jyk7Cit9CitzdGVwIHMyX3N0YXJ0X3Vwc2VydAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVF UygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93 KCk7IH0KKworc2Vzc2lvbiBzMworc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZGVmaW5lX2luZGV4 X2JlZm9yZV9zZXRfdmFsaWQnLCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9jcmVhdGVfaW5k ZXgJCXsgQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRl IE9OIHRlc3QudGJsKGkpOyB9CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3MxCQl7CisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVl X2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtl dXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor fQorc3RlcCBzNF93YWtldXBfczFfZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QJewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBz aG90X2VuZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW52YWxpZGF0ZV9j YXRhbG9nX3NuYXBzaG90X2VuZCcpOworfQorc3RlcCBzNF93YWtldXBfczIJCXsKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2Jl Zm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKK30KK3N0ZXAgczRfd2FrZXVwX2RlZmluZV9pbmRl eF9iZWZvcmVfc2V0X3ZhbGlkCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2Rl ZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcpOworfQorCitwZXJtdXRhdGlv bgorCXMzX3N0YXJ0X2NyZWF0ZV9pbmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9k ZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1 cF9zMV9mcm9tX2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdAorCXM0X3dha2V1cF9zMgorCXM0 X3dha2V1cF9zMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0X3ByZWRpY2F0ZS5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nw ZWNzL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLnNwZWMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcwYTI3NDc1ZTEwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2luZGV4X2NvbmN1cnJl bnRseV91cHNlcnRfcHJlZGljYXRlLnNwZWMKQEAgLTAsMCArMSw3MCBAQAorIyBUZXN0IHJhY2Ug Y29uZGl0aW9ucyBpbnZvbHZpbmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxlCisjIC0gczI6IFVQ U0VSVCB0aGUgc2FtZSB0dXBsZQorIyAtIHMzOiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWQorIyAtIHM0OiBvcGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAor eworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRl c3Q7CisJQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRlc3QudGJsKGkgaW50LCB1cGRhdGVkX2F0IHRp bWVzdGFtcCk7CisKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRibF9wa2V5X3NwZWNpYWwgT04gdGVz dC50YmwoYWJzKGkpKSBXSEVSRSBpIDwgMTAwMDsKKwlBTFRFUiBUQUJMRSB0ZXN0LnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9MCk7Cit9CisKK3RlYXJkb3duCit7CisJRFJPUCBTQ0hFTUEgdGVz dCBDQVNDQURFOworCURST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Cit9CisKK3Nlc3Np b24gczEKK3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcsICd3YWl0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdpbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3RfZW5kJywgJ3dhaXQnKTsKK30K K3N0ZXAgczFfc3RhcnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5v dygpKSBvbiBjb25mbGljdChhYnMoaSkpIHdoZXJlIGkgPCAxMDAgZG8gdXBkYXRlIHNldCB1cGRh dGVkX2F0ID0gbm93KCk7IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0Jyk7Cit9CitzdGVw IHMyX3N0YXJ0X3Vwc2VydAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg IG9uIGNvbmZsaWN0KGFicyhpKSkgd2hlcmUgaSA8IDEwMCBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRf YXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdkZWZp bmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcsICd3YWl0Jyk7Cit9CitzdGVwIHMzX3N0YXJ0X2Ny ZWF0ZV9pbmRleAkJeyBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSB0YmxfcGtleV9z cGVjaWFsX2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChhYnMoaSkpIFdIRVJFIGkgPCAxMDAwMDt9CisK K3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3MxCQl7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxp Y3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworfQorc3RlcCBzNF93YWtldXBfczFf ZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QJeworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90X2VuZCcpOworCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90X2VuZCcp OworfQorc3RlcCBzNF93YWtldXBfczIJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRp dmUnKTsKK30KK3N0ZXAgczRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkCXsK KwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2RlZmluZV9pbmRleF9iZWZvcmVfc2V0 X3ZhbGlkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdkZWZpbmVfaW5kZXhf YmVmb3JlX3NldF92YWxpZCcpOworfQorCitwZXJtdXRhdGlvbgorCXMzX3N0YXJ0X2NyZWF0ZV9p bmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3Nl dF92YWxpZAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9zMV9mcm9tX2ludmFsaWRhdGVf Y2F0YWxvZ19zbmFwc2hvdAorCXM0X3dha2V1cF9zMgorCXM0X3dha2V1cF9zMQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQuc3BlYyBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNl cnQuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzhiODZkODQz NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3BlY3MvcmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnNwZWMKQEAgLTAsMCArMSw4NiBAQAor IyBUZXN0IHJhY2UgY29uZGl0aW9ucyBpbnZvbHZpbmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxl CisjIC0gczI6IFVQU0VSVCB0aGUgc2FtZSB0dXBsZQorIyAtIHMzOiBSRUlOREVYIGNvbmN1cnJl bnQgcHJpbWFyeSBrZXkgaW5kZXgKKyMgLSBzNDogb3BlcmF0aW9ucyB3aXRoIGluamVjdGlvbiBw b2ludHMKKworc2V0dXAKK3sKKwlDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisJ Q1JFQVRFIFNDSEVNQSB0ZXN0OworCUNSRUFURSBVTkxPR0dFRCBUQUJMRSB0ZXN0LnRibChpIGlu dCBwcmltYXJ5IGtleSwgdXBkYXRlZF9hdCB0aW1lc3RhbXApOworCUFMVEVSIFRBQkxFIHRlc3Qu dGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKK30KKwordGVhcmRvd24KK3sKKwlEUk9QIFND SEVNQSB0ZXN0IENBU0NBREU7CisJRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30K Kworc2Vzc2lvbiBzMQorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2Nh bCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2tfZXhjbHVzaW9uX29y X3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0JywgJ3dhaXQnKTsKK30KK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25m bGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMy CitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1 bGF0aXZlJywgJ3dhaXQnKTsKK30KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8g dGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVw ZGF0ZWRfYXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVj dGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnLCAnd2FpdCcp OworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25j dXJyZW50bHlfYmVmb3JlX3N3YXAnLCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9yZWluZGV4 CQkJeyBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyB9CisKK3Nlc3Np b24gczQKK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCcpOworfQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWlu dF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tf ZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9CitzdGVwIHM0 X3dha2V1cF9zMgkJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNl cnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworfQorc3Rl cCBzNF93YWtldXBfdG9fc2V0X2RlYWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50 bHlfYmVmb3JlX3NldF9kZWFkJyk7Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRl eAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczJfc3RhcnRfdXBzZXJ0 CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisK K3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dh a2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVw X3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVp bmRleAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJfc3RhcnRfdXBz ZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRfd2FrZXVwX3My ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50LnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mv cmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQuc3BlYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2Q4ZTM3MWJiMGEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvcmVpbmRleF9jb25j dXJyZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQuc3BlYwpAQCAtMCwwICsxLDg2IEBACisjIFRl c3QgcmFjZSBjb25kaXRpb25zIGludm9sdmluZzoKKyMgLSBzMTogVVBTRVJUIGEgdHVwbGUKKyMg LSBzMjogVVBTRVJUIHRoZSBzYW1lIHR1cGxlCisjIC0gczM6IFJFSU5ERVggY29uY3VycmVudCBw cmltYXJ5IGtleSBpbmRleAorIyAtIHM0OiBvcGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50 cworCitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVB VEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRlc3QudGJsKGkgaW50IHBy aW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7CisJQUxURVIgVEFCTEUgdGVzdC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworfQorCit0ZWFyZG93bgoreworCURST1AgU0NIRU1B IHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfQorCitz ZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5p cXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAnd2FpdCcpOworfQorc3RlcCBzMV9zdGFydF91 cHNlcnQJeyBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0 IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0Jyk7Cit9CitzdGVwIHMyX3N0YXJ0X3Vwc2Vy dAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qgb24g Y29uc3RyYWludCB0YmxfcGtleSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgfQor CitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2Nv bmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnLCAnd2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAn LCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9yZWluZGV4CQkJeyBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyB9CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVw X3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVs YXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOwor fQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9j b25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9CitzdGVwIHM0X3dha2V1cF9zMgkJeworCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVj dWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRf YmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworfQorc3RlcCBzNF93YWtldXBfdG9fc2V0X2Rl YWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7 Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMxX3N0YXJ0X3Vwc2VydAor CXM0X3dha2V1cF90b19zd2FwCisJczJfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRf d2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3Rh cnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3Rh cnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3Nl dF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXM0X3dha2V1cF90b19z d2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJ czRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRfd2FrZXVwX3MyClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nw ZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZC5zcGVjIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vw c2VydF9wYXJ0aXRpb25lZC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5iOTI1MzQ2MzAzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcGFydGl0aW9u ZWQuc3BlYwpAQCAtMCwwICsxLDg4IEBACisjIFRlc3QgcmFjZSBjb25kaXRpb25zIGludm9sdmlu ZzoKKyMgLSBzMTogVVBTRVJUIGEgdHVwbGUKKyMgLSBzMjogVVBTRVJUIHRoZSBzYW1lIHR1cGxl CisjIC0gczM6IFJFSU5ERVggY29uY3VycmVudCBwcmltYXJ5IGtleSBpbmRleAorIyAtIHM0OiBv cGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAoreworCUNSRUFURSBFWFRF TlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFRB QkxFIHRlc3QudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKKwlDUkVBVEUgVEFCTEUgdGVzdC50YmxfcGFydGl0aW9uIFBB UlRJVElPTiBPRiB0ZXN0LnRibAorCQlGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDAwMCkKKwkJ V0lUSCAocGFyYWxsZWxfd29ya2VycyA9IDApOworfQorCit0ZWFyZG93bgoreworCURST1AgU0NI RU1BIHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfQor CitzZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja19leGNsdXNpb25fb3Jf dW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAnd2FpdCcpOworfQorc3RlcCBzMV9zdGFy dF91cHNlcnQJeyBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZs aWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyB9CisKK3Nlc3Npb24gczIK K3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOworfQorc3RlcCBzMl9zdGFydF91cHNlcnQJeyBJTlNFUlQgSU5UTyB0 ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBk YXRlZF9hdCA9IG5vdygpOyB9CisKK3Nlc3Npb24gczMKK3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcsICd3YWl0Jyk7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1 cnJlbnRseV9iZWZvcmVfc3dhcCcsICd3YWl0Jyk7Cit9CitzdGVwIHMzX3N0YXJ0X3JlaW5kZXgJ CQl7IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OyB9 CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z d2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9u X2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworfQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9 CitzdGVwIHM0X3dha2V1cF9zMgkJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn ZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScp OworfQorc3RlcCBzNF93YWtldXBfdG9fc2V0X2RlYWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVh ZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9j b25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3Rh cnRfcmVpbmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczJfc3Rh cnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3Nl dF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2Vy dAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJ czRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNf c3RhcnRfcmVpbmRleAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJf c3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRf d2FrZXVwX3MyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0006-Add-STIR-Short-Term-Index-Replacement-access-meth.patch" Content-Disposition: attachment; filename="v9-0006-Add-STIR-Short-Term-Index-Replacement-access-meth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddci5 RnJvbSAyOTc2ZDQ2YzRjNjVjODQ0YzFmZTVjMzY5YzZiOTk0MmNjYWYxNGNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgNi85 XSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhvZAoK VGhpcyBwYXRjaCBwcm92aWRlcyBmb3VuZGF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgZm9yIHVwY29t aW5nIGVuaGFuY2VtZW50cyB0bwpjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBpbnRyb2R1Y2lu ZzoKCi0gKippaV9BdXhpbGlhcnkqKiBpbiBgSW5kZXhJbmZvYDogSW5kaWNhdGVzIHRoYXQgYW4g aW5kZXggaXMgYW4gYXV4aWxpYXJ5CiAgaW5kZXgsIHNwZWNpZmljYWxseSBmb3IgdXNlIGR1cmlu ZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4KLSAqKnZhbGlkYXRlX2luZGV4KiogaW4gYEluZGV4 VmFjdXVtSW5mb2A6IFNpZ25hbHMgd2hlbiBhIHZhY3V1bSBvciBjbGVhbnVwCiAgb3BlcmF0aW9u IGlzIHZhbGlkYXRpbmcgYSBuZXdseSBidWlsdCBpbmRleCAoZS5nLiwgZHVyaW5nIGNvbmN1cnJl bnQgYnVpbGQpLgoKQWRkaXRpb25hbGx5LCBhIG5ldyAqKlNUSVIgKFNob3J0LVRlcm0gSW5kZXgg UmVwbGFjZW1lbnQpKiogYWNjZXNzIG1ldGhvZCBpcwppbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xl bHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlhcnkgdXNhZ2UuIFNUSVIgZnVuY3Rpb25zCmFzIGFu IGVwaGVtZXJhbCBoZWxwZXIgZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3Jh cmlseSBzdG9yaW5nIFRJRHMKd2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2Yg YSB0eXBpY2FsIGluZGV4LiBBcyBzdWNoLCBpdCByYWlzZXMKd2FybmluZ3Mgb3IgZXJyb3JzIHdo ZW4gYWNjZXNzZWQgb3V0c2lkZSBpdHMgc3BlY2lhbGl6ZWQgdXNhZ2UgcGF0aC4KClRoZXNlIGNo YW5nZXMgbGF5IGVzc2VudGlhbCBncm91bmR3b3JrIGZvciBmdXJ0aGVyIGltcHJvdmVtZW50cyB0 byBjb25jdXJyZW50CmluZGV4IGJ1aWxkcy4KLS0tCiBjb250cmliL3Bnc3RhdHR1cGxlL3Bnc3Rh dHR1cGxlLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSAgICAgICAgIHwgIDE4ICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkICAgICAgfCAgIDUgKwogc3JjL2JhY2tl bmQvYWNjZXNzL3N0aXIvc3Rpci5jICAgICAgICAgICB8IDU3NiArKysrKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25z LmggICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmggICAgICAgICAg ICAgICAgfCAxMTcgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0ICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdCAgICAgICB8ICAg NCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvdXRp bHMvaW5kZXhfc2VsZnVuY3MuaCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2FtdXRpbHMub3V0ICAgIHwgICA4ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29w cl9zYW5pdHkub3V0IHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 ICAgICAgIHwgIDI0ICstCiAyMyBmaWxlcyBjaGFuZ2VkLCA3ODAgaW5zZXJ0aW9ucygrKSwgMTgg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv TWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNv bi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKCmRpZmYgLS1n aXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1 cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggZmY3Y2MwN2RmOTkuLjAwN2VmYzRlZDBjIDEwMDY0NAot LS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0yODIsNiArMjgyLDkgQEAgcGdzdGF0X3JlbGF0aW9u KFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQljYXNlIFNQR0lTVF9B TV9PSUQ6CiAJCQkJZXJyID0gInNwZ2lzdCBpbmRleCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIFNU SVJfQU1fT0lEOgorCQkJCWVyciA9ICJzdGlyIGluZGV4IjsKKwkJCQlicmVhazsKIAkJCWNhc2Ug QlJJTl9BTV9PSUQ6CiAJCQkJZXJyID0gImJyaW4gaW5kZXgiOwogCQkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01h a2VmaWxlCmluZGV4IDE5MzJkMTFkMTU0Li5jZDY1MjRhNTRhYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQpA QCAtOSw2ICs5LDYgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAogU1VCRElSUwkgICAgPSBicmluIGNvbW1vbiBn aW4gZ2lzdCBoYXNoIGhlYXAgaW5kZXggbmJ0cmVlIHJtZ3JkZXNjIHNwZ2lzdCBcCi0JCQkgIHNl cXVlbmNlIHRhYmxlIHRhYmxlc2FtcGxlIHRyYW5zYW0KKwkJCSAgc3RpciBzZXF1ZW5jZSB0YWJs ZSB0YWJsZXNhbXBsZSB0cmFuc2FtCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2Vu ZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBmMmNhOTQz MDU4MS4uYmVjNzliNDhjYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAg LTI1MzgsNiArMjUzOCw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWws IEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBE RUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3Ry YXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxz ZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KQEAgLTI1 ODksNiArMjU5MCw3IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJ bmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9 IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmlu Zm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNl YmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5i dWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZAppbmRleCA2MmEzNzFkYjdmNy4u NjNlZTBlZjEzNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcgQEAgc3Vi ZGlyKCduYnRyZWUnKQogc3ViZGlyKCdybWdyZGVzYycpCiBzdWJkaXIoJ3NlcXVlbmNlJykKIHN1 YmRpcignc3BnaXN0JykKK3N1YmRpcignc3RpcicpCiBzdWJkaXIoJ3RhYmxlJykKIHN1YmRpcign dGFibGVzYW1wbGUnKQogc3ViZGlyKCd0cmFuc2FtJykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9zdGlyL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhZTU4OThiOGQ3Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUKQEAgLTAsMCAr MSwxOCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZpbGUtLQorIyAgICBNYWtlZmls ZSBmb3IgYWNjZXNzL3N0aXIKKyMKKyMgSURFTlRJRklDQVRJT04KKyMgICAgc3JjL2JhY2tlbmQv YWNjZXNzL3N0aXIvTWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNy Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAorCitPQkpTID0gXAorCXN0aXIu bworCitpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzljNmVjYTg0OGQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApAQCAtMCwwICsxLDUg QEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorCitiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisJJ3N0aXIuYycsCispClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv c3Rpci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44M2FhMjU1MTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpAQCAtMCwwICsxLDU3NiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogc3Rpci5jCisgKgkgIEltcGxlbWVudGF0aW9uIG9mIFNob3J0LVRl cm0gSW5kZXggUmVwbGFjZW1lbnQuCisgKgorICogU1RJUiBpcyBhIHNwZWNpYWxpemVkIGFjY2Vz cyBtZXRob2QgdHlwZSBkZXNpZ25lZCBmb3IgdGVtcG9yYXJ5IHN0b3JhZ2UKKyAqIG9mIFRJRCB2 YWx1ZXMgZHVyaW5nIGNvbmN1cmVybnQgaW5kZXggYnVpbGQgb3BlcmF0aW9ucy4KKyAqCisgKiBU aGUgdHlwaWNhbCBsaWZlY3ljbGUgb2YgYSBTVElSIGluZGV4IGlzOgorICogMS4gY3JlYXRlZCBh cyBhbiBhdXhpbGlhcnkgaW5kZXggZm9yIENJQy9SSUMKKyAqIDIuIGFjY2VwdHMgaW5zZXJ0cyBm b3IgYSBwZXJpb2QKKyAqIDMuIHN0aXJidWxrZGVsZXRlIGNhbGxlZCBkdXJpbmcgaW5kZXggdmFs aWRhdGlvbiBwaGFzZQorICogNS4gZ2V0cyBkcm9wcGVkCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1 ZGUgImFjY2Vzcy9zdGlyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3Mu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAidXRpbHMvY2F0 Y2FjaGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvYW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfYW1wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgInV0aWxzL3JlZ3Byb2MuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5j bHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgor I2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyoKKyAqIFN0aXIgaGFuZGxlciBmdW5j dGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNjZXNzIG1ldGhvZCBwYXJhbWV0ZXJz CisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3RpcmhhbmRsZXIoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5lID0gbWFrZU5vZGUoSW5kZXhBbVJv dXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3RyYXRlZ3kgYW5kIHByb2NlZHVyZSBu dW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSBTVElSX05TVFJBVEVHSUVTOwor CWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsKKwlhbXJvdXRpbmUtPmFtb3B0c3By b2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNUSVIgZG9lc24ndCBzdXBwb3J0IG1v c3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+YW1jYW5vcmRlciA9IGZhbHNlOwor CWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FuYmFj a3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5pcXVlID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9uYWxrZXkgPSB0 cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z ZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1zdG9yYWdlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXByZWRsb2NrcyA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbmluY2x1ZGUgPSB0 cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdvcmttZW0gPSBmYWxzZTsKKwlhbXJv dXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJCVZBQ1VVTV9PUFRJT05fUEFSQUxM RUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQ0xFQU5VUDsKKwlhbXJvdXRpbmUt PmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQgdXAgZnVuY3Rpb24gY2FsbGJhY2tz ICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxkOworCWFtcm91dGluZS0+YW1idWls ZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5lLT5hbWluc2VydCA9IHN0aXJpbnNl cnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBOVUxMOworCWFtcm91dGluZS0+YW1i dWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0aW5lLT5hbXZhY3V1bWNsZWFudXAg PSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFtY2FucmV0dXJuID0gTlVMTDsKKwlh bXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rlc3RpbWF0ZTsKKwlhbXJvdXRpbmUt PmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGluZS0+YW1wcm9wZXJ0eSA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtdmFs aWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5hbWFkanVzdG1lbWJlcnMgPSBOVUxM OworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVnaW5zY2FuOworCWFtcm91dGluZS0+ YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+YW1nZXR0dXBsZSA9IE5VTEw7CisJ YW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVuZHNjYW4gPSBz dGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5h bXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0aW1hdGVwYXJhbGxlbHNjYW4gPSBO VUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVUVVJOX1BPSU5URVIoYW1yb3V0aW5l KTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBjbGFzcyBmb3IgU1RJUiBpbmRleC4K KyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBzbyB2YWxpZGF0aW8gbWF5IGJlIHNr aXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29uc2lzdGVuY3kuCisgKi8KK2Jvb2wK K3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwlib29sIHJlc3VsdCA9IHRydWU7CisJ SGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFzcyBjbGFzc2Zvcm07CisJT2lkIG9w ZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJRm9ybV9wZ19vcGZhbWlseSBmYW1p bHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRDTGlzdCAqcHJvY2xpc3QsCisJCQkq b3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xhc3MgaW5mb3JtYXRpb24gKi8KKwlj bGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFz c29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc3R1cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBjbGFzcyAldSIsIG9wY2xhc3NvaWQp OworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFzc3R1cCk7CisK KwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5OworCisKKwkvKiBGZXRjaCBvcGZh bWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlM WU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig b3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOworCWZhbWlseWZvcm0gPSAoRm9ybV9w Z19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisKKwlvcGZhbWlseW5hbWUgPSBOYW1l U3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0Y2ggYWxsIG9wZXJhdG9ycyBhbmQg c3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICovCisJb3BybGlzdCA9IFNlYXJjaFN5 c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5b2lkKSk7 CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNUFJPQ05VTSwgT2JqZWN0SWRHZXRE YXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5kaXZpZHVhbCBvcGVyYXRvcnMgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJzOyBpKyspCisJeworCQlIZWFwVHVw bGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOworCQlGb3JtX3BnX2Ftb3Ag b3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChvcHJ0dXApOworCisJCS8qIENoZWNr IGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLworCQlpZiAob3ByZm9ybS0+YW1vcHN0 cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0ZWd5ID4gU1RJUl9OU1RSQVRFR0lF UykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250 YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwKKwkJCQkJ CQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+ YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3BzdHJhdGVneSkpKTsKKwkJCXJlc3Vs dCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0IHN1cHBvcnQgT1JERVIgQlkgb3Bl cmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJDSCB8fAor CQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWlseSkpCisJCXsKKwkJCWVyZXBvcnQo SU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgaW52YWxpZCBPUkRFUiBC WSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFt ZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJ cmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1cmUgLS0t IHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJaWYgKCFjaGVja19hbW9wX3NpZ25h dHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3Bs ZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJeworCQkJZXJl cG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAl cyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJ CQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0g ZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNoZUxpc3QocHJvY2xpc3QpOworCVJl bGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFzZVN5c0NhY2hlKGZhbWlseXR1cCk7 CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKwor LyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElSIGluZGV4LgorICogVGhlIHNraXBJ bnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0cyB3aWxsIGJlIGFjY2VwdGVkIG9y IHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIFBh Z2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0 YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNUSVJfTUVUQSk7CisJbWV0YWRhdGEg PSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNldChtZXRhZGF0YSwgMCwgc2l6ZW9m KFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFnaWNrTnVtYmVyID0gU1RJUl9NQUdJ Q0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9IHNraXBJbnNlcnRzOworCSgoUGFn ZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXplb2YoU3Rpck1ldGFQYWdlRGF0YSk7 Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIG1ldGFwYWdlIGZvciBhIFNU SVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgaW5kZXggY3JlYXRpb24uCisgKi8K K3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251 bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCUdlbmVyaWNYTG9n U3RhdGUgKnN0YXRlOworCisJLyoKKwkgKiBNYWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZp cnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAw IChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5vIG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJ ICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5vdCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQu CisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwg UF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZl cikgPT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwkvKiBJbml0aWFsaXplIGNvbnRlbnRzIG9m IG1ldGEgcGFnZSAqLworCXN0YXRlID0gR2VuZXJpY1hMb2dTdGFydChpbmRleCk7CisJbWV0YVBh Z2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVyLAorCQkJCQkJ CQkJCSBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJU3RpckZpbGxNZXRhcGFnZShpbmRleCwg bWV0YVBhZ2UsIGZvcmtudW0gPT0gSU5JVF9GT1JLTlVNKTsKKwlHZW5lcmljWExvZ0ZpbmlzaChz dGF0ZSk7CisKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICog SW5pdGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7 CisKKwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsK KworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBm bGFnczsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAq IEFkZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNu J3QgZml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisg Ki8KK3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1 cGxlKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9p bnRlciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBh Z2UgKi8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBm aXQgb24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdl KSA8IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0 dXBsZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1 cGxlKSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4 b2ZmKys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5t YXhvZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7 CisKKwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNz ZXJ0KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSkt PnBkX3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBs ZSBpbnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRl eCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJ ICBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykK K3sKKwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29u dGV4dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1 ZmZlciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCUdlbmVyaWNYTG9nU3RhdGUgKnN0 YXRlOworCXVpbnQxNiBibGtObzsKKworCS8qIENyZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3Ig aW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2VydEN0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShD dXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBj b250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5zZXJ0Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVw bGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlpdHVwID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNp emVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5oZWFwUHRyID0gKmh0X2N0aWQ7CisKKwltZXRhQnVm ZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwlmb3IgKDs7 KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCW1l dGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikpOworCQkv KiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0YS0+c2tpcElu c2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7CisJCQlyZXR1 cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOworCQkvKiBEb24n dCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJTG9ja0J1ZmZl cihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtObyA+IDApCisJ CXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxvY2tCdWZmZXIo YnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJCQlzdGF0ZSA9IEdlbmVyaWNYTG9n U3RhcnQoaW5kZXgpOworCQkJcGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0ZXJCdWZmZXIoc3RhdGUs IGJ1ZmZlciwgMCk7CisKKwkJCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5 IHRvIGFkZCB0dXBsZSB0byBleGlzdGluZyBwYWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVt KHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBj bGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJCQlHZW5lcmljWExvZ0ZpbmlzaChzdGF0ZSk7CisJCQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJCVJlbGVhc2VCdWZmZXIobWV0YUJ1ZmZl cik7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQkJTWVtb3J5Q29udGV4 dERlbGV0ZShpbnNlcnRDdHgpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKworCQkJLyogRGlk bid0IGZpdCwgbXVzdCB0cnkgb3RoZXIgcGFnZXMgKi8KKwkJCUdlbmVyaWNYTG9nQWJvcnQoc3Rh dGUpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQl9CisKKwkJLyogTmVlZCB0 byBhZGQgbmV3IHBhZ2UgLSBnZXQgZXhjbHVzaXZlIGxvY2sgb24gbWV0YSBwYWdlICovCisJCUxv Y2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCQlzdGF0ZSA9 IEdlbmVyaWNYTG9nU3RhcnQoaW5kZXgpOworCQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShH ZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVyLCBHRU5FUklDX1hMT0df RlVMTF9JTUFHRSkpOworCQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRl bmRlZCB0aGUgaW5kZXggKi8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykK KwkJeworCQkJQXNzZXJ0KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21l b25lIGVsc2UgaW5zZXJ0ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBh Z2FpbiAvCisJCQkgKi8KKwkJCUdlbmVyaWNYTG9nQWJvcnQoc3RhdGUpOworCQkJTG9ja0J1ZmZl cihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVmZmVyID0gRXh0 ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVMTCwKKwkJCQkJ CQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCisJCQlwYWdlID0gR2VuZXJpY1hMb2dSZWdpc3RlckJ1 ZmZlcihzdGF0ZSwgYnVmZmVyLCBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJCQlTdGlySW5p dFBhZ2UocGFnZSwgMCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQor CQkJeworCQkJCS8qIFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0 byBhbiBlbXB0eSBwYWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0 aXIgdHVwbGUgdG8gZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdl IHdpdGggbmV3IGxhc3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKKwkJCUdlbmVyaWNYTG9nRmluaXNoKHN0YXRl KTsKKworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1 ZmZlcihtZXRhQnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJ CQlNZW1vcnlDb250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJ fQorCX0KK30KKworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVu Y3Rpb25zIGFsbCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJl bGF0aW9uIHIsIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAor CQkgIFNjYW5LZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBp cyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5k c2NhbihJbmRleFNjYW5EZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3Qg aW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRl eCAtIG9ubHkgYWxsb3dlZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxp emVzIHRoZSBtZXRhIHBhZ2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWls ZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJ ICAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJl c3VsdDsKKworCWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1Is IChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGlu ZGV4ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRh cGFnZShpbmRleCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0 ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBs ZXMgPSAwOworCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQor Cit2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBh Z2UoaW5kZXgsIElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rp cmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJIEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RhdHMsCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2Fs bGJhY2ssCisJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfc3RhdGUpCit7CisJUmVsYXRpb24gaW5k ZXggPSBpbmZvLT5pbmRleDsKKwlCbG9ja051bWJlciBibGtubywgbnBhZ2VzOworCUJ1ZmZlciBi dWZmZXI7CisJUGFnZSBwYWdlOworCisJLyogRm9yIG5vcm1hbCBWQUNVVU0sIG1hcmsgdG8gc2tp cCBpbnNlcnRzIGFuZCB3YXJuIGFib3V0IGluZGV4IGRyb3AgbmVlZGVkICovCisJaWYgKCFpbmZv LT52YWxpZGF0ZV9pbmRleCkKKwl7CisJCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmRleCk7CisK KwkJZXJlcG9ydChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBs aWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJCXJldHVy biBOVUxMOworCX0KKworCWlmIChzdGF0cyA9PSBOVUxMKQorCQlzdGF0cyA9IChJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisK KwkvKgorCSAqIEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXMuIFdlIGRvbid0IGNhcmUgYWJvdXQgY29u Y3VycmVudGx5IGFkZGVkIHBhZ2VzLAorCSAqIGJlY2F1c2UgaW5kZXggaXMgbWFya2VkIGFzIG5v dC1yZWFkeSBmb3IgdGhhdCBtb21tZW50IGFuZCBpbmRleCBub3QKKwkgKiB1c2VkIGZvciBpbnNl cnQuCisJICovCisJbnBhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpbmRleCk7CisJ Zm9yIChibGtubyA9IFNUSVJfSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCisJ eworCQlTdGlyVHVwbGUgKml0dXAsICppdHVwRW5kOworCisJCXZhY3V1bV9kZWxheV9wb2ludCgp OworCisJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBi bGtubywKKwkJCQkJCQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKworCQlMb2NrQnVm ZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWZmZXIpOworCisJCWlmIChQYWdlSXNOZXcocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VC dWZmZXIoYnVmZmVyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaXR1cCA9IFN0aXJQYWdlR2V0 VHVwbGUocGFnZSwgRmlyc3RPZmZzZXROdW1iZXIpOworCQlpdHVwRW5kID0gU3RpclBhZ2VHZXRU dXBsZShwYWdlLCBPZmZzZXROdW1iZXJOZXh0KFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpKSk7 CisJCXdoaWxlIChpdHVwIDwgaXR1cEVuZCkKKwkJeworCQkJLyogRG8gd2UgaGF2ZSB0byBkZWxl dGUgdGhpcyB0dXBsZT8gKi8KKwkJCWlmIChjYWxsYmFjaygmaXR1cC0+aGVhcFB0ciwgY2FsbGJh Y2tfc3RhdGUpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJ3ZSBuZXZlciBkZWxldGUgaW4gc3RpciIpKSk7 CisJCQl9CisKKwkJCWl0dXAgPSBTdGlyUGFnZUdldE5leHRUdXBsZShpdHVwKTsKKwkJfQorCisJ CVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwlyZXR1cm4gc3RhdHM7Cit9CisK Ky8qCisgKiBNYXJrIGEgU1RJUiBpbmRleCB0byBza2lwIGZ1dHVyZSBpbnNlcnRzCisgKi8KK3Zv aWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJNZXRhUGFn ZURhdGEgKm1ldGFEYXRhOworCUJ1ZmZlciBtZXRhQnVmZmVyOworCVBhZ2UgbWV0YVBhZ2U7CisJ R2VuZXJpY1hMb2dTdGF0ZSAqc3RhdGU7CisKKwltZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRl eCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOworCisJc3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKKwlt ZXRhUGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0ZXJCdWZmZXIoc3RhdGUsIG1ldGFCdWZmZXIsCisJ CQkJCQkJCQkJIEdFTkVSSUNfWExPR19GVUxMX0lNQUdFKTsKKwltZXRhRGF0YSA9IFN0aXJQYWdl R2V0TWV0YShtZXRhUGFnZSk7CisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJeworCQlt ZXRhRGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlHZW5lcmljWExvZ0ZpbmlzaChzdGF0ZSk7 CisJfQorCWVsc2UKKwl7CisJCUdlbmVyaWNYTG9nQWJvcnQoc3RhdGUpOworCX0KKwlVbmxvY2tS ZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQlJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzKQoreworCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmZvLT5p bmRleCk7CisJZXJlcG9ydChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNl ZW1zIGxpa2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwly ZXR1cm4gTlVMTDsKK30KKworYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJv b2wgdmFsaWRhdGUpCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgc3RpcmNvc3Rlc3RpbWF0 ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLAorCQkJCQkgZG91YmxlIGxvb3Bf Y291bnQsIENvc3QgKmluZGV4U3RhcnR1cENvc3QsCisJCQkJCSBDb3N0ICppbmRleFRvdGFsQ29z dCwgU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHksCisJCQkJCSBkb3VibGUgKmluZGV4Q29y cmVsYXRpb24sIGRvdWJsZSAqaW5kZXhQYWdlcykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBh IG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3MzQ1NGFjY2Y2MS4uN2ZmN2FiNmM3MmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTM0MDMsNiArMzQwMyw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8ubWVzc2FnZV9sZXZl bCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gaGVhcFJlbGF0aW9uLT5yZF9y ZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBOVUxMOworCWl2aW5mby52YWxpZGF0 ZV9pbmRleCA9IHRydWU7CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jCmluZGV4IDlhNTZkZTIyODJmLi5kNTRkMzEwYmE0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YwpAQCAtNzE4LDYgKzcxOCw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJ CWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJ aXZpbmZvLnN0cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OworCQkJaXZpbmZvLnZhbGlkYXRlX2luZGV4 ID0gZmFsc2U7CiAKIAkJCXN0YXRzID0gaW5kZXhfdmFjdXVtX2NsZWFudXAoJml2aW5mbywgTlVM TCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDY3Y2JhMTdhNTY0 Li5lNDMyN2I0ZjdkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC04 ODQsNiArODg0LDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291 bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0 cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyogVXBkYXRlIGVy cm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDdl NWRmN2JlYTRkLi40NGE4YTFmMjg3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgyNSw2ICs4 MjUsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQg YW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVpbGQgc3Rh dGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJbi0+aWlf UGFyYWxsZWxXb3JrZXJzID0gMDsKKwluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAogCS8qIHNl dCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBhbW9pZDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmgKaW5kZXggODE2NTNmZWJjMTguLjE5NGRiYmUxZDBlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aApAQCAtNTIsNiArNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlib29s CQllc3RpbWF0ZWRfY291bnQ7CS8qIG51bV9oZWFwX3R1cGxlcyBpcyBhbiBlc3RpbWF0ZSAqLwog CWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBvcnQgbGV2ZWwgZm9yIHByb2dyZXNzIG1lc3Nh Z2VzICovCiAJZG91YmxlCQludW1faGVhcF90dXBsZXM7CS8qIHR1cGxlcyByZW1haW5pbmcgaW4g aGVhcCAqLworCWJvb2wJCXZhbGlkYXRlX2luZGV4OyAvKiB2YWxpZGF0aW5nIGNvbmN1cnJlbnRs eSBidWlsdCBpbmRleD8gKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNj ZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCmluZGV4IGRmNjkyM2M5ZDUwLi4wOTY2Mzk3ZDM0NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCkBAIC01MSw4ICs1MSw5IEBAIHR5cGVkZWYgZW51bSByZWxvcHRfa2luZAog CVJFTE9QVF9LSU5EX1ZJRVcgPSAoMSA8PCA5KSwKIAlSRUxPUFRfS0lORF9CUklOID0gKDEgPDwg MTApLAogCVJFTE9QVF9LSU5EX1BBUlRJVElPTkVEID0gKDEgPDwgMTEpLAorCVJFTE9QVF9LSU5E X1NUSVIgPSAoMSA8PCAxMiksCiAJLyogaWYgeW91IGFkZCBhIG5ldyBraW5kLCBtYWtlIHN1cmUg eW91IHVwZGF0ZSAibGFzdF9kZWZhdWx0IiB0b28gKi8KLQlSRUxPUFRfS0lORF9MQVNUX0RFRkFV TFQgPSBSRUxPUFRfS0lORF9QQVJUSVRJT05FRCwKKwlSRUxPUFRfS0lORF9MQVNUX0RFRkFVTFQg PSBSRUxPUFRfS0lORF9TVElSLAogCS8qIHNvbWUgY29tcGlsZXJzIHRyZWF0IGVudW1zIGFzIHNp Z25lZCBpbnRzLCBzbyB3ZSBjYW4ndCB1c2UgMSA8PCAzMSAqLwogCVJFTE9QVF9LSU5EX01BWCA9 ICgxIDw8IDMwKQogfSByZWxvcHRfa2luZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9zdGlyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45OTQzYzQyYTk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdGlyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHN0aXIuaAorICoJICBoZWFkZXIgZmlsZSBmb3IgcG9zdGdyZXMgc3RpciBhY2Nl c3MgbWV0aG9kIGltcGxlbWVudGF0aW9uLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvYWNjZXNzL3N0aXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIF9TVElSX0hfCisjZGVmaW5lIF9TVElSX0hfCisKKyNpbmNsdWRlICJhbWFwaS5oIgorI2lu Y2x1ZGUgInhsb2cuaCIKKyNpbmNsdWRlICJnZW5lcmljX3hsb2cuaCIKKyNpbmNsdWRlICJpdHVw LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgorCisv KiBTdXBwb3J0IHByb2NlZHVyZXMgbnVtYmVycyAqLworI2RlZmluZSBTVElSX05QUk9DCQkJCTAK KworLyogU2NhbiBzdHJhdGVnaWVzICovCisjZGVmaW5lIFNUSVJfTlNUUkFURUdJRVMJCTEKKwor I2RlZmluZSBTVElSX09QVElPTlNfUFJPQwkJCQkwCisKKy8qIE1hY3JvcyBmb3IgYWNjZXNzaW5n IHN0aXIgcGFnZSBzdHJ1Y3R1cmVzICovCisjZGVmaW5lIFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2Up ICgoU3RpclBhZ2VPcGFxdWUpIFBhZ2VHZXRTcGVjaWFsUG9pbnRlcihwYWdlKSkKKyNkZWZpbmUg U3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpLT5tYXhv ZmYpCisjZGVmaW5lIFN0aXJQYWdlSXNNZXRhKHBhZ2UpIFwKKwkoKFN0aXJQYWdlR2V0T3BhcXVl KHBhZ2UpLT5mbGFncyAmIFNUSVJfTUVUQSkgIT0gMCkKKyNkZWZpbmUgU3RpclBhZ2VHZXREYXRh KHBhZ2UpCQkoKFN0aXJUdXBsZSAqKVBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKyNkZWZpbmUgU3Rp clBhZ2VHZXRUdXBsZShwYWdlLCBvZmZzZXQpIFwKKwkoKFN0aXJUdXBsZSAqKShQYWdlR2V0Q29u dGVudHMocGFnZSkgXAorCQkrIHNpemVvZihTdGlyVHVwbGUpICogKChvZmZzZXQpIC0gMSkpKQor I2RlZmluZSBTdGlyUGFnZUdldE5leHRUdXBsZSh0dXBsZSkgXAorCSgoU3RpclR1cGxlICopKChQ b2ludGVyKSh0dXBsZSkgKyBzaXplb2YoU3RpclR1cGxlKSkpCisKKworCisvKiBQcmVzZXJ2ZWQg cGFnZSBudW1iZXJzICovCisjZGVmaW5lIFNUSVJfTUVUQVBBR0VfQkxLTk8JKDApCisjZGVmaW5l IFNUSVJfSEVBRF9CTEtOTwkJKDEpIC8qIGZpcnN0IGRhdGEgcGFnZSAqLworCisKKy8qIE9wYXF1 ZSBmb3Igc3RpciBwYWdlcyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RpclBhZ2VPcGFxdWVEYXRhCit7 CisJT2Zmc2V0TnVtYmVyIG1heG9mZjsJCS8qIG51bWJlciBvZiBpbmRleCB0dXBsZXMgb24gcGFn ZSAqLworCXVpbnQxNgkJZmxhZ3M7CQkJLyogc2VlIGJpdCBkZWZpbml0aW9ucyBiZWxvdyAqLwor CXVpbnQxNgkJdW51c2VkOwkJCS8qIHBsYWNlaG9sZGVyIHRvIGZvcmNlIG1heGFsaWduaW5nIG9m IHNpemUgb2YKKwkJCQkJCQkJICogU3RpclBhZ2VPcGFxdWVEYXRhIGFuZCB0byBwbGFjZQorCQkJ CQkJCQkgKiBzdGlyX3BhZ2VfaWQgZXhhY3RseSBhdCB0aGUgZW5kIG9mIHBhZ2UgKi8KKwl1aW50 MTYJCXN0aXJfcGFnZV9pZDsJLyogZm9yIGlkZW50aWZpY2F0aW9uIG9mIFNUSVIgaW5kZXhlcyAq LworfSBTdGlyUGFnZU9wYXF1ZURhdGE7CisKKy8qIFN0aXIgcGFnZSBmbGFncyAqLworI2RlZmlu ZSBTVElSX01FVEEJCSgxPDwwKQorCit0eXBlZGVmIFN0aXJQYWdlT3BhcXVlRGF0YSAqU3RpclBh Z2VPcGFxdWU7CisKKyNkZWZpbmUgU1RJUl9QQUdFX0lECQkweEZGODQKKworLyogTWV0YWRhdGEg b2Ygc3RpciBpbmRleCAqLwordHlwZWRlZiBzdHJ1Y3QgU3Rpck1ldGFQYWdlRGF0YQoreworCXVp bnQzMgkJbWFnaWNrTnVtYmVyOworCXVpbnQxNgkJbGFzdEJsa05vOworCWJvb2wJCXNraXBJbnNl cnRzOwkvKiBzaG91bGQgd2UganVzdCBleGl0IHdpdGhvdXQgYW55IGluc2VydHMgKi8KK30gU3Rp ck1ldGFQYWdlRGF0YTsKKworLyogTWFnaWMgbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIHN0aXIgcGFn ZXMgZnJvbSBvdGhlcnMgKi8KKyNkZWZpbmUgU1RJUl9NQUdJQ0tfTlVNQkVSICgweERCQUMwREVG KQorCisjZGVmaW5lIFN0aXJQYWdlR2V0TWV0YShwYWdlKQkoKFN0aXJNZXRhUGFnZURhdGEgKikg UGFnZUdldENvbnRlbnRzKHBhZ2UpKQorCit0eXBlZGVmIHN0cnVjdCBTdGlyVHVwbGUKK3sKKwlJ dGVtUG9pbnRlckRhdGEgaGVhcFB0cjsKK30gU3RpclR1cGxlOworCisjZGVmaW5lIFN0aXJQYWdl R2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSBcCisJKEJMQ0tTWiAtIE1BWEFMSUdOKFNpemVPZlBh Z2VIZWFkZXJEYXRhKSBcCisJCS0gU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKiAoc2l6ZW9m KFN0aXJUdXBsZSkpIFwKKwkJLSBNQVhBTElHTihzaXplb2YoU3RpclBhZ2VPcGFxdWVEYXRhKSkp CisKK2V4dGVybiB2b2lkIFN0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0 YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpOworZXh0ZXJuIHZvaWQgU3RpckluaXRNZXRhcGFnZShS ZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncyk7CitleHRlcm4gdm9pZCBTdGlyTWFya0FzU2tp cEluc2VydHMoUmVsYXRpb24gaW5kZXgpOworCisvKiBpbmRleCBhY2Nlc3MgbWV0aG9kIGludGVy ZmFjZSBmdW5jdGlvbnMgKi8KK2V4dGVybiBib29sIHN0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29p ZCk7CitleHRlcm4gYm9vbCBzdGlyaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAqdmFsdWVz LCBib29sICppc251bGwsCisJCQkJCSBJdGVtUG9pbnRlciBodF9jdGlkLCBSZWxhdGlvbiBoZWFw UmVsLAorCQkJCQkgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJCQkJIGJvb2wgaW5k ZXhVbmNoYW5nZWQsCisJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0ZXJu IEluZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2NhbihSZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcnJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNj YW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJCQkJIFNjYW5LZXkgb3JkZXJieXMsIGlu dCBub3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcmVuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu KTsKK2V4dGVybiBJbmRleEJ1aWxkUmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCisJCQkJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0 ZXJuIHZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpOworZXh0ZXJuIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJ CQkJCQkJCSAgIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsIEluZGV4QnVsa0RlbGV0ZUNh bGxiYWNrIGNhbGxiYWNrLAorCQkJCQkJCQkJCSAgIHZvaWQgKmNhbGxiYWNrX3N0YXRlKTsKK2V4 dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVt SW5mbyAqaW5mbywKKwkJCQkJCQkJCQkJICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKTsK K2V4dGVybiBieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0 ZSk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5k YXQKaW5kZXggZGI4NzQ5MDI4MjAuLjUxMzUwZGYwYmYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2FtLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdApA QCAtMzMsNSArMzMsOCBAQAogeyBvaWQgPT4gJzM1ODAnLCBvaWRfc3ltYm9sID0+ICdCUklOX0FN X09JRCcsCiAgIGRlc2NyID0+ICdibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhv ZCcsCiAgIGFtbmFtZSA9PiAnYnJpbicsIGFtaGFuZGxlciA9PiAnYnJpbmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCit7IG9pZCA9PiAnNTU1NScsIG9pZF9zeW1ib2wgPT4gJ1NUSVJfQU1fT0lE JywKKyAgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhv ZCcsCisgIGFtbmFtZSA9PiAnc3RpcicsIGFtaGFuZGxlciA9PiAnc3RpcmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bj bGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CmluZGV4IGY1MDNj NjUyZWJjLi5hOGYwZTY2ZDE1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CkBAIC00 ODgsNCArNDg4LDggQEAKIAogIyBubyBicmluIG9wY2xhc3MgZm9yIHRoZSBnZW9tZXRyaWMgdHlw ZXMgZXhjZXB0IGJveAogCisjIGFsbG93IGFueSB0eXBlcyBmb3IgU1RJUgoreyBvcGNtZXRob2Qg PT4gJ3N0aXInLCBvaWRfc3ltYm9sID0+ICdBTllfU1RJUl9PUFNfT0lEJywgb3BjbmFtZSA9PiAn c3Rpcl9vcHMnLAorICBvcGNmYW1pbHkgPT4gJ3N0aXIvYW55X29wcycsIG9wY2ludHlwZSA9PiAn YW55J30sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHku ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKaW5kZXggYzhhYzhjNzNk ZWYuLjQxZWEwYzNjYTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdApAQCAtMzA0 LDUgKzMwNCw3IEBACiAgIG9wZm1ldGhvZCA9PiAnaGFzaCcsIG9wZm5hbWUgPT4gJ211bHRpcmFu Z2Vfb3BzJyB9LAogeyBvaWQgPT4gJzYxNTgnLAogICBvcGZtZXRob2QgPT4gJ2dpc3QnLCBvcGZu YW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKK3sgb2lkID0+ICc1NTU4JywKKyAgb3BmbWV0aG9k ID0+ICdzdGlyJywgb3BmbmFtZSA9PiAnYW55X29wcycgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMmRjYzJkNDJkYWMuLjM0NTY0MTA5ZTUwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTkzNSw2ICs5MzUsMTAgQEAKICAgcHJvbmFtZSA9PiAnYnJpbmhhbmRsZXInLCBw cm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9zcmMgPT4gJ2JyaW5oYW5kbGVyJyB9LAor eyBvaWQgPT4gJzU1NTYnLCBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kIGhhbmRsZXInLAorICBwcm9uYW1lID0+ICdzdGlyaGFuZGxlcicsIHByb3Zv bGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAnaW5kZXhfYW1faGFuZGxlcicsIHByb2Fy Z3R5cGVzID0+ICdpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnc3RpcmhhbmRsZXInIH0sCiB7IG9p ZCA9PiAnMzk1MicsIGRlc2NyID0+ICdicmluOiBzdGFuZGFsb25lIHNjYW4gbmV3IHRhYmxlIHBh Z2VzJywKICAgcHJvbmFtZSA9PiAnYnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcycsIHByb3ZvbGF0 aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICdpbnQ0Jywg cHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMTU5MGI2 NDM5MjAuLjdkNGU0MzE0OGU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTcyLDEyICsxNzIs MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJQnJva2VuSG90Q2hhaW4JCWRpZCB3 ZSBkZXRlY3QgYW55IGJyb2tlbiBIT1QgY2hhaW5zPwogICoJCVN1bW1hcml6aW5nCQkJaXMgaXQg YSBzdW1tYXJpemluZyBpbmRleD8KICAqCQlQYXJhbGxlbFdvcmtlcnMJCSMgb2Ygd29ya2VycyBy ZXF1ZXN0ZWQgKGV4Y2x1ZGVzIGxlYWRlcikKKyAqCQlBdXhpbGlhcnkJCQkjIGluZGV4LWhlbHBl ciBmb3IgY29uY3VycmVudCBidWlsZD8KICAqCQlBbQkJCQkJT2lkIG9mIGluZGV4IEFNCiAgKgkJ QW1DYWNoZQkJCQlwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNCiAgKgkJQ29udGV4dAkJ CQltZW1vcnkgY29udGV4dCBob2xkaW5nIHRoaXMgSW5kZXhJbmZvCiAgKgotICogaWlfQ29uY3Vy cmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQg b25seQotICogZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9l ZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4 aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMKKyAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGlu ZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAt LS0tLS0tLS0tLS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpAQCAtMjA2LDYg KzIwNyw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX1N1bW1hcml6aW5n OwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAlpbnQJCQlpaV9QYXJhbGxlbFdvcmtlcnM7 CisJYm9vbAkJaWlfQXV4aWxpYXJ5OwogCU9pZAkJCWlpX0FtOwogCXZvaWQJICAgKmlpX0FtQ2Fj aGU7CiAJTWVtb3J5Q29udGV4dCBpaV9Db250ZXh0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvaW5kZXhfc2VsZnVuY3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNz LmgKaW5kZXggYTQxY2QyYjdmZDkuLjYxZjNkM2RlYTBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3Nl bGZ1bmNzLmgKQEAgLTYyLDYgKzYyLDE0IEBAIGV4dGVybiB2b2lkIHNwZ2Nvc3Rlc3RpbWF0ZShz dHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0 aXZpdHksCiAJCQkJCQkJZG91YmxlICppbmRleENvcnJlbGF0aW9uLAogCQkJCQkJCWRvdWJsZSAq aW5kZXhQYWdlcyk7CitleHRlcm4gdm9pZCBzdGlyY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVy SW5mbyAqcm9vdCwKKwkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRoLAorCQkJCQkJCWRvdWJs ZSBsb29wX2NvdW50LAorCQkJCQkJCUNvc3QgKmluZGV4U3RhcnR1cENvc3QsCisJCQkJCQkJQ29z dCAqaW5kZXhUb3RhbENvc3QsCisJCQkJCQkJU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHks CisJCQkJCQkJZG91YmxlICppbmRleENvcnJlbGF0aW9uLAorCQkJCQkJCWRvdWJsZSAqaW5kZXhQ YWdlcyk7CiBleHRlcm4gdm9pZCBnaW5jb3N0ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgsCiAJCQkJCQkJZG91YmxlIGxvb3Bf Y291bnQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAppbmRleCA3YWI2MTEzYzYx OS4uOTJjMDMzYTIwMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11 dGlscy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dApAQCAt MTczLDcgKzE3MywxMyBAQCBzZWxlY3QgYW1uYW1lLCBwcm9wLCBwZ19pbmRleGFtX2hhc19wcm9w ZXJ0eShhLm9pZCwgcHJvcCkgYXMgcAogIHNwZ2lzdCB8IGNhbl9leGNsdWRlICAgfCB0CiAgc3Bn aXN0IHwgY2FuX2luY2x1ZGUgICB8IHQKICBzcGdpc3QgfCBib2d1cyAgICAgICAgIHwgCi0oMzYg cm93cykKKyBzdGlyICAgfCBjYW5fb3JkZXIgICAgIHwgZgorIHN0aXIgICB8IGNhbl91bmlxdWUg ICAgfCBmCisgc3RpciAgIHwgY2FuX211bHRpX2NvbCB8IHQKKyBzdGlyICAgfCBjYW5fZXhjbHVk ZSAgIHwgZgorIHN0aXIgICB8IGNhbl9pbmNsdWRlICAgfCB0Cisgc3RpciAgIHwgYm9ndXMgICAg ICAgICB8IAorKDQyIHJvd3MpCiAKIC0tCiAtLSBhZGRpdGlvbmFsIGNoZWNrcyBmb3IgcGdfaW5k ZXhfY29sdW1uX2hhc19wcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0 eS5vdXQKaW5kZXggYjY3MzY0MmFkMWQuLjI2NDVkOTcwNjI5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTIxMTksOSArMjExOSwxMCBAQCBGUk9NIHBnX29w Y2xhc3MgQVMgYzEKIFdIRVJFIE5PVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19hbW9wIEFTIGEx CiAgICAgICAgICAgICAgICAgIFdIRVJFIGExLmFtb3BmYW1pbHkgPSBjMS5vcGNmYW1pbHkKICAg ICAgICAgICAgICAgICAgICBBTkQgYmluYXJ5X2NvZXJjaWJsZShjMS5vcGNpbnR5cGUsIGExLmFt b3BsZWZ0dHlwZSkpOwotIG9wY25hbWUgfCBvcGNmYW1pbHkgCi0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KLSgwIHJvd3MpCisgb3BjbmFtZSAgfCBvcGNmYW1pbHkgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgc3Rpcl9vcHMgfCAgICAgIDU1NTgKKygxIHJvdykKIAogLS0gQ2hlY2sgdGhhdCBlYWNo IG9wZXJhdG9yIGxpc3RlZCBpbiBwZ19hbW9wIGhhcyBhbiBhc3NvY2lhdGVkIG9wY2xhc3MsCiAt LSB0aGF0IGlzIG9uZSB3aG9zZSBvcGNpbnR5cGUgbWF0Y2hlcyBvcHJsZWZ0IChwb3NzaWJseSBi eSBjb2VyY2lvbikuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzNmRjMzFjMTZj NC4uYTZkODZjYjRjYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAtNTA3NCw3 ICs1MDc0LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlCiAgaGVh cDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAgfCBJbmRleAor KDkgcm93cykKIAogXGRBICoKIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKQEAgLTUwODgsNyArNTA4 OSw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8 IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJv d3MpCiAKIFxkQSBoKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpAQCAtNTExMyw5ICs1MTE1LDkg QEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogCiBcZEE6IGV4dHJhIGFyZ3VtZW50ICJiYXIiIGln bm9yZWQKIFxkQSsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwotICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAg ICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAKLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwor ICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgICBE ZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBicmluICAgfCBJbmRleCB8IGJyaW5oYW5kbGVyICAgICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QKICBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxlciAgICAg ICAgICAgIHwgYi10cmVlIGluZGV4IGFjY2VzcyBtZXRob2QKICBnaW4gICAgfCBJbmRleCB8IGdp bmhhbmRsZXIgICAgICAgICAgIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKQEAgLTUxMjQsMTIg KzUxMjYsMTMgQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVh cF90YWJsZWFtX2hhbmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBU YWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5k bGVyICAgICAgICAgICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBz dGlyICAgfCBJbmRleCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCBy ZXBsYWNlbWVudCBhY2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErICoKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwotICBOYW1lICB8IFR5cGUg IHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAg ICAgICAgICAKLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUgIHwgICAgICAg SGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAg ICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBicmluICAgfCBJbmRleCB8IGJyaW5o YW5kbGVyICAgICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBtZXRob2QK ICBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxlciAgICAgICAgICAgIHwgYi10cmVlIGluZGV4IGFj Y2VzcyBtZXRob2QKICBnaW4gICAgfCBJbmRleCB8IGdpbmhhbmRsZXIgICAgICAgICAgIHwgR0lO IGluZGV4IGFjY2VzcyBtZXRob2QKQEAgLTUxMzgsNyArNTE0MSw4IEBAIExpc3Qgb2YgYWNjZXNz IG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0 YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxl ciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGlu ZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxl ciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAor KDkgcm93cykKIAogXGRBKyBoKgogICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwotLSAKMi40My4wCgo= --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-a.patch" Content-Disposition: attachment; filename="v9-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddci6 RnJvbSA2ZTM4OTY4YmM1MjljNGM3MmQzNDczZDE5NDA1ZjVlM2I3OWQxZmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNCBEZWMgMjAyNCAxMzo0MDo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgNy85 XSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4aWxp YXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2VzcyB0 byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24uIFRo aXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMgYnk6 CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxhY2Vt ZW50KSBpbmRleCB0byB0cmFjawogIG5ldyB0dXBsZXMgZHVyaW5nIHRoZSBtYWluIGluZGV4IGJ1 aWxkCi0gVXNpbmcgdGhlIGF1eGlsaWFyeSBpbmRleCB0byBjYXRjaCBhbGwgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgYnVpbGQgcGhhc2UKICBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYSBzZWNv bmQgaGVhcCBzY2FuCi0gTWVyZ2luZyB0aGUgYXV4aWxpYXJ5IGluZGV4IGNvbnRlbnQgd2l0aCB0 aGUgbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbgotIEF1dG9tYXRpY2FsbHkgY2xlYW5pbmcg dXAgdGhlIGF1eGlsaWFyeSBpbmRleCBhZnRlciB0aGUgbWFpbiBpbmRleCBpcyByZWFkeQoKVGhp cyBhcHByb2FjaCBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBhIHNlY29uZCBmdWxsIHRhYmxlIHNj YW4gZHVyaW5nIGluZGV4CnZhbGlkYXRpb24sIG1ha2luZyB0aGUgcHJvY2VzcyBtb3JlIGVmZmlj aWVudCBlc3BlY2lhbGx5IGZvciBsYXJnZSB0YWJsZXMuClRoZSBhdXhpbGlhcnkgaW5kZXggaXMg YXV0b21hdGljYWxseSBkcm9wcGVkIGFmdGVyIHRoZSBtYWluIGluZGV4IGJlY29tZXMgdmFsaWQu CgpUaGlzIGNoYW5nZSBhZmZlY3RzIGJvdGggQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQg UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkKb3BlcmF0aW9ucy4gVGhlIFNUSVIgYWNjZXNzIG1l dGhvZCBpcyBhZGRlZCBzcGVjaWZpY2FsbHkgZm9yIHRoZXNlIGF1eGlsaWFyeQppbmRleGVzIGFu ZCBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseSBieSB1c2Vycy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAzODMgKysrKysrKysrLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAyODAgKysrKysr KysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAz NjIgKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAg ICAgICAgICAgICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAg ICAgICAgICAgIHwgIDE1ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAgICAg ICAgICAgICAgfCAgIDQgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAg ICAgICAgICB8ICAyOCArKwogLi4uL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dCAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAg ICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAg ICB8ICAgMyArCiAxMiBmaWxlcyBjaGFuZ2VkLCA3OTEgaW5zZXJ0aW9ucygrKSwgMzIzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDBm NzA2NTUzNjA1Li5lY2VjM2MxYzA4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJh eS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCkBAIC0xNzc3LDI0NiArMTc3OCwyNjYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3Nj YW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiByZWx0dXBsZXM7CiB9CiAKLXN0YXRp YyB2b2lkCitzdGF0aWMgVHJhbnNhY3Rpb25JZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJICAgU25hcHNob3Qgc25hcHNo b3QsCi0JCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRh dGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3Rh dGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFw VHVwbGUJaGVhcFR1cGxlOworCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoOworCVRyYW5zYWN0 aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9v bAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0JVHVw bGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQgKmVj b250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0J T2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJ aW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Js a25vID0gSW52YWxpZEJsb2NrTnVtYmVyOworCisJU25hcHNob3QJCXNuYXBzaG90OworCVR1cGxl VGFibGVTbG90ICAqc2xvdDsKKwlFU3RhdGUJCQkqZXN0YXRlOworCUV4cHJDb250ZXh0CQkqZWNv bnRleHQ7CiAKIAkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLwotCUl0ZW1Qb2lu dGVyIGluZGV4Y3Vyc29yID0gTlVMTDsKLQlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZDsKLQlib29s CQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKwlJdGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBO VUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5VTEwsCisJCQkJCXByZXZfaW5kZXhjdXJzb3Ig PSBOVUxMOworCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkLAorCQkJCQlhdXhkZWNvZGVkLAorCQkJ CQlwcmV2X2RlY29kZWQsCisJCQkJCWZldGNoZWQ7CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0eSA9 IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKworCUFzc2VydCghSGF2 ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkvKgorCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNl IHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCisJICog dHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluCisJICog dXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciBy ZWZlcmVuY2UKKwkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLiAgSWYgc3VjaCBhIHJl Y2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgorCSAqIGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0 YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0CisJICogdGhv c2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXBy b2dyZXNzIHdpbGwKKwkgKiBleHBlY3Qgc3VjaCB0dXBsZXMgdG8gYmUgdGhlcmUgb25jZSB3ZSBt YXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGlu ZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJICogd2Ug bWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFw c2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVzIG1heQorCSAqIG5l ZWQgYSBzbmFwc2hvdC4KKwkgKi8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKKwlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCWxp bWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwogCiAJLyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJICov CiAJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxhbSkpOwogCi0J LyoKLQkgKiBOZWVkIGFuIEVTdGF0ZSBmb3IgZXZhbHVhdGlvbiBvZiBpbmRleCBleHByZXNzaW9u cyBhbmQgcGFydGlhbC1pbmRleAotCSAqIHByZWRpY2F0ZXMuICBBbHNvIGEgc2xvdCB0byBob2xk IHRoZSBjdXJyZW50IHR1cGxlLgotCSAqLwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUo KTsKIAllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwK LQkJCQkJCQkJCSZUVFNPcHNIZWFwVHVwbGUpOworCQkJCQkJCQkJJlRUU09wc0J1ZmZlckhlYXBU dXBsZSk7CiAKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhl IHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90Owog Ci0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0J cHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3Rh dGUpOwotCiAJLyoKLQkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAg V2UgbmVlZCBqdXN0IHRob3NlIHR1cGxlcwotCSAqIHNhdGlzZnlpbmcgdGhlIHBhc3NlZC1pbiBy ZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRpc2FibGUgc3luY3NjYW4KLQkgKiBoZXJlLCBi ZWNhdXNlIGl0J3MgY3JpdGljYWwgdGhhdCB3ZSByZWFkIGZyb20gYmxvY2sgemVybyBmb3J3YXJk IHRvCi0JICogbWF0Y2ggdGhlIHNvcnRlZCBUSURzLgorCSAqIFByZXBhcmUgdG8gZmV0Y2ggaGVh cCB0dXBsZXMgaW4gaW5kZXggc3R5bGUuIFRoaXMgaGVscHMgdG8gcmVjb25zdHJ1Y3QKKwkgKiBh IHR1cGxlIGZyb20gdGhlIGhlYXAgd2hlbiB3ZSBvbmx5IGhhdmUgYW4gSXRlbVBvaW50ZXIuCiAJ ICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0 aW9uICovCi0JCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KLQkJCQkJCQkJIDAsIC8q IG51bWJlciBvZiBrZXlzICovCi0JCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwotCQkJCQkJ CQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2Us CS8qIHN5bmNzY2FuIG5vdCBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwotCWhzY2FuID0gKEhlYXBT Y2FuRGVzYykgc2NhbjsKKwlmZXRjaCA9IGhlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihoZWFwUmVs YXRpb24pOworCisJLyogSW5pdGlhbGl6ZSBwb2ludGVycy4gKi8KKwlJdGVtUG9pbnRlclNldElu dmFsaWQoJmRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmcHJldl9kZWNvZGVkKTsK KwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52 YWxpZCgmZmV0Y2hlZCk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNjYW4tPnJzX25ibG9ja3MpOworCS8qIFdl J2xsIHRyYWNrIHRoZSBsYXN0ICJtYWluIiBpbmRleCBwb3NpdGlvbiBpbiBwcmV2X2luZGV4Y3Vy c29yLiAqLworCXByZXZfaW5kZXhjdXJzb3IgPSAmcHJldl9kZWNvZGVkOwogCiAJLyoKLQkgKiBT Y2FuIGFsbCB0dXBsZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90LgorCSAqIE1haW4gbG9vcDogd2Ug c3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAoYXV4U3RhdGUtPnR1cGxlc29ydCksCisJ ICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgYmUgbWVyZ2VkIHdpdGggb3IgY29tcGFyZWQg dG8gdGhvc2UgZnJvbQorCSAqIHRoZSAibWFpbiIgc29ydCAoc3RhdGUtPnR1cGxlc29ydCkuCiAJ ICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5E aXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQogCXsKLQkJ SXRlbVBvaW50ZXIgaGVhcGN1cnNvciA9ICZoZWFwVHVwbGUtPnRfc2VsZjsKLQkJSXRlbVBvaW50 ZXJEYXRhIHJvb3RUdXBsZTsKLQkJT2Zmc2V0TnVtYmVyIHJvb3Rfb2ZmbnVtOwotCisJCURhdHVt CQl0c192YWw7CisJCWJvb2wJCXRzX2lzbnVsbDsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKLQotCQlpZiAoKHByZXZpb3VzX2Jsa25vID09IEludmFs aWRCbG9ja051bWJlcikgfHwKLQkJCShoc2Nhbi0+cnNfY2Jsb2NrICE9IHByZXZpb3VzX2Jsa25v KSkKLQkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JM T0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXByZXZpb3VzX2Js a25vID0gaHNjYW4tPnJzX2NibG9jazsKLQkJfQotCiAJCS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBp biB0YWJsZV9pbmRleF9idWlsZF9zY2FuLCB3ZSBzaG91bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAq IHR1cGxlcyB1bmRlciB0aGUgVElEcyBvZiB0aGVpciByb290IHR1cGxlczsgc28gd2hlbiB3ZSBh ZHZhbmNlIG9udG8KLQkJICogYSBuZXcgaGVhcCBwYWdlLCBidWlsZCBhIG1hcCBvZiByb290IGl0 ZW0gb2Zmc2V0cyBvbiB0aGUgcGFnZS4KLQkJICoKLQkJICogVGhpcyBjb21wbGljYXRlcyBtZXJn aW5nIGFnYWluc3QgdGhlIHR1cGxlc29ydCBvdXRwdXQ6IHdlIHdpbGwKLQkJICogdmlzaXQgdGhl IGxpdmUgdHVwbGVzIGluIG9yZGVyIGJ5IHRoZWlyIG9mZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkg KiBvZmZzZXRzIHRoYXQgd2UgbmVlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGluZGV4IGNvbnRl bnRzIG1pZ2h0IGJlCi0JCSAqIG9yZGVyZWQgZGlmZmVyZW50bHkuICBTbyB3ZSBtaWdodCBoYXZl IHRvICJsb29rIGJhY2siIHdpdGhpbiB0aGUKLQkJICogdHVwbGVzb3J0IG91dHB1dCwgYnV0IG9u bHkgd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuICBXZSBoYW5kbGUgdGhhdAotCQkgKiBieSBrZWVw aW5nIGEgYm9vbCBhcnJheSBpbl9pbmRleFtdIHNob3dpbmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5 LXBhc3NlZC1vdmVyIHR1cGxlc29ydCBvdXRwdXQgVElEcyBvZiB0aGUgY3VycmVudCBwYWdlLiBX ZQotCQkgKiBjbGVhciB0aGF0IGFycmF5IGhlcmUsIHdoZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcg aGVhcCBwYWdlLgotCQkgKi8KLQkJaWYgKGhzY2FuLT5yc19jYmxvY2sgIT0gcm9vdF9ibGtubykK KwkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBhdXhpbGlhcnkgc29y dC4gSWYgaXQncworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJ Ki8KKwkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShhdXhTdGF0ZS0+ dHVwbGVzb3J0LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxs LAorCQkJCQkJCQkJCQkJIE5VTEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0 c19pc251bGwpOworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKIAkJewotCQkJUGFnZQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0JCQlMb2NrQnVmZmVyKGhzY2Fu LT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0JCQloZWFwX2dldF9yb290X3R1cGxlcyhw YWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVS X0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGluX2luZGV4LCAwLCBzaXplb2YoaW5faW5kZXgp KTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5yc19jYmxvY2s7CisJCQlpdGVtcHRyX2RlY29k ZSgmYXV4ZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29y ID0gJmF1eGRlY29kZWQ7CiAJCX0KLQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8g cm9vdCBUSUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0g SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBs ZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKKwkJZWxzZQogCQl7Ci0JCQlyb290X29mZm51bSA9IHJv b3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFdOwotCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlk KHJvb3Rfb2ZmbnVtKSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmlu ZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwi JXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaGVhcGN1cnNvciks Ci0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJ CQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOwotCQkJSXRl bVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJnJvb3RUdXBsZSwgcm9vdF9vZmZudW0pOworCQkJYXV4 aW5kZXhjdXJzb3IgPSBOVUxMOwogCQl9CiAKIAkJLyoKLQkJICogIm1lcmdlIiBieSBza2lwcGlu ZyB0aHJvdWdoIHRoZSBpbmRleCB0dXBsZXMgdW50aWwgd2UgZmluZCBvciBwYXNzCi0JCSAqIHRo ZSBjdXJyZW50IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAm JgotCQkJICAgKCFpbmRleGN1cnNvciB8fAotCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1 cnNvciwgJnJvb3RUdXBsZSkgPCAwKSkKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90 IHlldCBlbXB0eSwgd2Ugbm93IHRyeSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29y dCBjdXJzb3IgKGluZGV4Y3Vyc29yKSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJ CSogdGhlIG1haW4gc29ydCBjdXJzb3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhl IGF1eGlsaWFyeSBUSUQuCisJCSovCisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQogCQl7Ci0J CQlEYXR1bQkJdHNfdmFsOwotCQkJYm9vbAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJz b3IpCisJCQkvKgorCQkJICogTW92ZSB0aGUgbWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkg KiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQgKHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFu ZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlv bikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vyc29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9y ZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3Ig PT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPCAwKSkKIAkJCXsKKwkJCQkv KiBLZWVwIHRyYWNrIG9mIHRoZSBwcmV2aW91cyBUSUQgaW4gcHJldl9kZWNvZGVkLiAqLworCQkJ CXByZXZfZGVjb2RlZCA9IGRlY29kZWQ7CiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciBpbmRleCBp dGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVhcCBwYWdlCisJCQkJICogR2V0IHRo ZSBuZXh0IFRJRCBmcm9tIHRoZSBtYWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICogd2Ug c2V0IGluZGV4Y3Vyc29yIHRvIE5VTEwuCiAJCQkJICovCi0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09IHJvb3RfYmxrbm8pCi0JCQkJCWluX2luZGV4W0l0 ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGluZGV4Y3Vyc29yKSAtIDFdID0gdHJ1ZTsKLQkJCX0K LQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVz b3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJ CQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251 bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUo JmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVj b2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhj dXJzb3IgPSBOVUxMOworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0o c3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAm dHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9l bXB0eSB8fCAhdHNfaXNudWxsKTsKKwkJCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKKwkJCQl7CisJ CQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOworCQkJ CQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOworCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBjdXJy ZW50IFRJRCBpbiB0aGUgbWFpbiBzb3J0IGlzIGEgZHVwbGljYXRlIG9mIHRoZQorCQkJCQkgKiBw cmV2aW91cyBvbmUgKHByZXZfaW5kZXhjdXJzb3IpLCBza2lwIGl0IHRvIGF2b2lkCisJCQkJCSAq IGRvdWJsZS1pbnNlcnRpbmcgdGhlIHNhbWUgVElELiBTdWNoIHNpdHVhdGlvbiBpcyBwb3NzaWJs ZQorCQkJCQkgKiBkdWUgY29uY3VycmVudCBwYWdlIHNwbGl0cyBpbiBidHJlZSAoYW5kLCBwcm9i YWJhbHkgb3RoZXIKKwkJCQkJICogaW5kZXhlcyBhcyB3ZWxsKS4KKwkJCQkJICovCisJCQkJCWlm IChJdGVtUG9pbnRlckNvbXBhcmUocHJldl9pbmRleGN1cnNvciwgaW5kZXhjdXJzb3IpID09IDAp CisJCQkJCXsKKwkJCQkJCWVsb2coREVCVUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHRpZCBpbiB0 YXJnZXQgaW5kZXggc25hcHNob3Q6ICgldSwldSkiLAorCQkJCQkJCSBJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKGluZGV4Y3Vyc29yKSwKKwkJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1i ZXIoaW5kZXhjdXJzb3IpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlp bmRleGN1cnNvciA9IE5VTEw7CisJCQkJfQorCisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZXNvcnQgaGFzIG92ZXJzaG90ICph bmQqIHdlIGRpZG4ndCBzZWUgYSBtYXRjaCBlYXJsaWVyLAotCQkgKiB0aGVuIHRoaXMgdHVwbGUg aXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgc28gaW5zZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0 dXBsZXNvcnRfZW1wdHkgfHwKLQkJCSBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZy b290VHVwbGUpID4gMCkgJiYKLQkJCSFpbl9pbmRleFtyb290X29mZm51bSAtIDFdKQotCQl7Ci0J CQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0K LQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRlIG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwot CQkJRXhlY1N0b3JlSGVhcFR1cGxlKGhlYXBUdXBsZSwgc2xvdCwgZmFsc2UpOwogCiAJCQkvKgot CQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlz ZnkgdGhlCi0JCQkgKiBwcmVkaWNhdGUuCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAt IHRoZSBtYWluIHNvcnQgaXMgZW1wdHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGlu ZGV4Y3Vyc29yLAorCQkJICoKKwkJCSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBh IFRJRCB0aGF0IGRvZXNuJ3QgYXBwZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtl bHkgbmVlZCB0byBpbnNlcnQgaXQKKwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKA mXMgdmlzaWJsZSBpbiB0aGUgaGVhcC4KIAkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxM KQorCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJz b3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCiAJCQl7Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNh dGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7Ci0JCQl9CisJCQkJYm9vbCBjYWxsX2FnYWlu ID0gZmFsc2U7CisJCQkJYm9vbCBhbGxfZGVhZCA9IGZhbHNlOworCQkJCUl0ZW1Qb2ludGVyIHRp ZDsKIAotCQkJLyoKLQkJCSAqIEZvciB0aGUgY3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFs bCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJCSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdo aWNoIGFyZSBudWxsLiAgVGhpcyBhbHNvIHBlcmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFu eSBleHByZXNzaW9ucyBuZWVkZWQuCi0JCQkgKi8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5m bywKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0J CQkJCQkgICBpc251bGwpOworCQkJCS8qIENvcHkgdGhlIGF1eGluZGV4Y3Vyc29yIFRJRCBpbnRv IGZldGNoZWQuICovCisJCQkJZmV0Y2hlZCA9ICphdXhpbmRleGN1cnNvcjsKKwkJCQl0aWQgPSAm ZmV0Y2hlZDsKIAotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdlIHNob3VsZCBnbyBhaGVhZCBh bmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBidXQgc29tZSBpbmRleCBBTXMg d2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRhdGEKLQkJCSAqIGZpcnN0LiBT byBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlzLCBpbnN0ZWFkLgotCQkJICov Ci0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFkeSBjb21taXR0ZWQgZGVhZCwg eW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVzcyB1bmlxdWVuZXNzIGNoZWNr aW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICogaW4gdGhlIHByZXNlbmNlIG9m IEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEgcHJveHkKLQkJCSAqIGZvciBh IHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFpbi4gIFRoYXQgaXMsIHRoZQot CQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQgYmVjYXVzZSBpdCB3YXMgYWxy ZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUgdXBkYXRpbmcgdHJhbnNhY3Rp b24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91bGQgaW5zZXJ0IGluZGV4IGVu dHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sgdGhlIHdob2xlIEhPVC1jaGFp biBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0JCQkgKiB0aGVyZSBpcyBvbmUu Ci0JCQkgKi8KKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0 aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRf cGVyX3R1cGxlX21lbW9yeSk7CisJCQkJc3RhdGUtPmh0dXBzICs9IDE7CiAKLQkJCWluZGV4X2lu c2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVlcywKLQkJCQkJCSBpc251bGwsCi0JCQkJ CQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRpb24sCi0JCQkJCQkgaW5kZXhJbmZvLT5p aV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0J CQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsKLQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0 ZWQgKz0gMTsKKwkJCQkvKgorCQkJCSAqIEZldGNoIHRoZSB0dXBsZSBmcm9tIHRoZSBoZWFwIHRv IHNlZSBpZiBpdCdzIHZpc2libGUKKwkJCQkgKiB1bmRlciBvdXIgc25hcHNob3QuIElmIGl0IGlz LCBmb3JtIHRoZSBpbmRleCBrZXkgdmFsdWVzCisJCQkJICogYW5kIGluc2VydCBhIG5ldyBlbnRy eSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJICovCisJCQkJaWYgKGhlYXBhbV9pbmRleF9m ZXRjaF90dXBsZShmZXRjaCwgdGlkLCBzbmFwc2hvdCwgc2xvdCwgJmNhbGxfYWdhaW4sICZhbGxf ZGVhZCkpCisJCQkJeworCisJCQkJCS8qIENvbXB1dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwg ZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywK KwkJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJCQkgICB2YWx1ZXMs CisJCQkJCQkJCSAgIGlzbnVsbCk7CisKKwkJCQkJLyoKKwkJCQkJICogSW5zZXJ0IHRoZSB0dXBs ZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJCSAqLworCQkJCQlpbmRleF9pbnNlcnQoaW5k ZXhSZWxhdGlvbiwKKwkJCQkJCQkJIHZhbHVlcywKKwkJCQkJCQkJIGlzbnVsbCwKKwkJCQkJCQkJ IGF1eGluZGV4Y3Vyc29yLCAvKiBpbnNlcnQgcm9vdCB0dXBsZSAqLworCQkJCQkJCQkgaGVhcFJl bGF0aW9uLAorCQkJCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPworCQkJCQkJCQkgVU5JUVVF X0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkg aW5kZXhJbmZvKTsKKworCQkJCQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOworCisJCQkJCWVs b2coREVCVUc1LCAiaW5zZXJ0ZWQgdGlkOiAoJXUsJXUpLCByb290OiAoJXUsICV1KSIsCisJCQkJ CQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoYXV4aW5kZXhjdXJzb3IpLAorCQkJCQkJ CQkJCQlJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihhdXhpbmRleGN1cnNvciksCisJCQkJCQkJ CQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKSwKKwkJCQkJCQkJCQkJSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIodGlkKSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8q CisJCQkJCSAqIFRoZSB0dXBsZSB3YXNuJ3QgdmlzaWJsZSB1bmRlciBvdXIgc25hcHNob3QuIFdl CisJCQkJCSAqIHNraXAgaW5zZXJ0aW5nIGl0IGludG8gdGhlIHRhcmdldCBpbmRleCBiZWNhdXNl CisJCQkJCSAqIGZyb20gb3VyIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IGV4aXN0LgorCQkJCQkg Ki8KKwkJCQkJZWxvZyhERUJVRzUsICJza2lwcGluZyBpbnNlcnQgdG8gdGFyZ2V0IGluZGV4IGJl Y2F1c2UgdGlkIG5vdCB2aXNpYmxlOiAoJXUsJXUpIiwKKwkJCQkJCSBJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKGF1eGluZGV4Y3Vyc29yKSwKKwkJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihhdXhpbmRleGN1cnNvcikpOworCQkJCX0KKwkJCX0KIAkJfQogCX0KIAotCXRhYmxlX2Vu ZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCiAJ RnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCWhlYXBhbV9pbmRleF9mZXRjaF9lbmQoZmV0 Y2gpOworCisJLyoKKwkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRv IHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNob3QgaG9sZGVycywgZWxz ZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KKwkgKiBkb2lu ZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90 IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4KKwkgKi8KKwlQb3BBY3RpdmVTbmFwc2hv dCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQp OworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYgKE15UHJvYy0+eGlkID09IEludmFsaWRU cmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBhbV9pbmRleF92YWxpZGF0ZV9z Y2FuX25vX3hpZCIpOworI2VuZGlmCiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0 byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRl ID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJcmV0dXJu IGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3ZmY3YWI2YzcyYS4uOGIx NGY2NmFmZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxOSw2ICs3MTksOSBAQCBVcGRhdGVJbmRl eFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxv dyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaWYgdHJ1ZSwg cG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgaW5kZXgKICAqIGNvbnN0cmFpbnRJZDogaWYgbm90 IE5VTEwsIHJlY2VpdmVzIE9JRCBvZiBjcmVhdGVkIGNvbnN0cmFpbnQKKyAqIHJlbHBlcnNpc3Rl bmNlOiBwZXJzaXN0ZW5jZSBsZXZlbCB0byB1c2UgZm9yIGluZGV4LiBJbiBtb3N0IG9mIHRoZQor ICoJCWNhc2VzIGl0IGlzIHNob3VsZCBiZSBlcXVhbCB0byBwZXJzaXN0ZW5jZSBsZXZlbCBvZiB0 YWJsZSwKKyAqCQlhdXhpbGlhcnkgaW5kZXhlcyBhcmUgb25seSBleGNlcHRpb24gaGVyZS4KICAq CiAgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIGNyZWF0ZWQgaW5kZXguCiAgKi8KQEAgLTc0Myw3 ICs3NDYsOCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJIGJpdHMx NiBjb25zdHJfZmxhZ3MsCiAJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJCSBi b29sIGlzX2ludGVybmFsLAotCQkJIE9pZCAqY29uc3RyYWludElkKQorCQkJIE9pZCAqY29uc3Ry YWludElkLAorCQkJIGNoYXIgcmVscGVyc2lzdGVuY2UpCiB7CiAJT2lkCQkJaGVhcFJlbGF0aW9u SWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWxhdGlvbik7CiAJUmVsYXRpb24JcGdfY2xhc3M7 CkBAIC03NTQsMTEgKzc1OCwxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCWJvb2wJCWlzX2V4Y2x1c2lvbjsKIAlPaWQJCQluYW1lc3BhY2VJZDsKIAlpbnQJCQlpOwot CWNoYXIJCXJlbHBlcnNpc3RlbmNlOwogCWJvb2wJCWlzcHJpbWFyeSA9IChmbGFncyAmIElOREVY X0NSRUFURV9JU19QUklNQVJZKSAhPSAwOwogCWJvb2wJCWludmFsaWQgPSAoZmxhZ3MgJiBJTkRF WF9DUkVBVEVfSU5WQUxJRCkgIT0gMDsKIAlib29sCQljb25jdXJyZW50ID0gKGZsYWdzICYgSU5E RVhfQ1JFQVRFX0NPTkNVUlJFTlQpICE9IDA7CiAJYm9vbAkJcGFydGl0aW9uZWQgPSAoZmxhZ3Mg JiBJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQpICE9IDA7CisJYm9vbAkJYXV4aWxpYXJ5ID0gKGZs YWdzICYgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSkgIT0gMDsKIAljaGFyCQlyZWxraW5kOwogCVRy YW5zYWN0aW9uSWQgcmVsZnJvemVueGlkOwogCU11bHRpWGFjdElkIHJlbG1pbm14aWQ7CkBAIC03 ODQsNyArNzg4LDYgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAluYW1l c3BhY2VJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKGhlYXBSZWxhdGlvbik7CiAJc2hhcmVkX3Jl bGF0aW9uID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzc2hhcmVkOwogCW1hcHBlZF9yZWxh dGlvbiA9IFJlbGF0aW9uSXNNYXBwZWQoaGVhcFJlbGF0aW9uKTsKLQlyZWxwZXJzaXN0ZW5jZSA9 IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAogCS8qCiAJICogY2hlY2sg cGFyYW1ldGVycwpAQCAtNzkyLDYgKzc5NSwxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCWlmIChpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMgPCAxKQogCQllbG9n KEVSUk9SLCAibXVzdCBpbmRleCBhdCBsZWFzdCBvbmUgY29sdW1uIik7CiAKKwlpZiAoaW5kZXhJ bmZvLT5paV9BbSA9PSBTVElSX0FNX09JRCAmJiAhYXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJ1c2VyLWRlZmluZWQgaW5kZXhlcyB3aXRoIFNUSVIgYWNjZXNzIG1ldGhvZCBhcmUgbm90 IHN1cHBvcnRlZCIpKSk7CisKIAlpZiAoIWFsbG93X3N5c3RlbV90YWJsZV9tb2RzICYmCiAJCUlz U3lzdGVtUmVsYXRpb24oaGVhcFJlbGF0aW9uKSAmJgogCQlJc05vcm1hbFByb2Nlc3NpbmdNb2Rl KCkpCkBAIC0xNDYyLDcgKzE0NzAsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHko UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJ CQkJICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJ CQkJCSAgZmFsc2UsCS8qIGlzX2ludGVybmFsPyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJ ICBOVUxMLAorCQkJCQkJCSAgaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsK IAogCS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9j bG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwpAQCAtMTQ3Miw2ICsxNDgxLDE1NCBAQCBpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xk SW5kZXhJZCwKIAlyZXR1cm4gbmV3SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJl bnRseV9jcmVhdGVfYXV4CisgKgorICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkg aW5kZXggYmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkg Y2FsbGVyLiAgVGhlIGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRv IGJlCisgKiBidWlsdCBsYXRlciBvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQg cmVpbmRleCBwcm9jZXNzaW5nLgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVz cGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5 X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJ CQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRp b24JaW5kZXhSZWxhdGlvbjsKKwlJbmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJ T2lkCQkJbmV3SW5kZXhJZCA9IEludmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisK KwlMaXN0CSAgICppbmRleENvbE5hbWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBO SUw7CisJTGlzdAkgICAqaW5kZXhQcmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsK KwlpbnQxNiAqYXV4Q29sb3B0aW9uczsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1h aW5JbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMg c29tZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJ bmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFy eSBpbmRleCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQu CisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJCWVycm1zZygiYXV4aWxpYXJ5IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3Ry YWludHMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNz IGFuZCBjb2x1bW4gb3B0aW9ucyBJRHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9 IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8q CisJICogRmV0Y2ggdGhlIGxpc3Qgb2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0 bHkgZnJvbSB0aGUKKwkgKiBjYXRhbG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9y bWF0aW9uIGZyb20gSW5kZXhJbmZvIG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZl IGJlZW4gZmxhdHRlbmVkIGZvciB0aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlf RXhwcmVzc2lvbnMgIT0gTklMKQorCXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAq ZXhwclN0cmluZzsKKworCQlleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVY UkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7 CisJCWV4cHJTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4 RXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJT dHJpbmcpOworCX0KKwlpZiAob2xkSW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURh dHVtCQlwcmVkRGF0dW07CisJCWNoYXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0g U3lzQ2FjaGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJ CSAgIEFudW1fcGdfaW5kZXhfaW5kcHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKHByZWREYXR1bSk7CisJCWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUo cHJlZFN0cmluZyk7CisKKwkJLyogQWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQg Ki8KKwkJaW5kZXhQcmVkcyA9IG1ha2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRz KTsKKwkJcGZyZWUocHJlZFN0cmluZyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXgg aW5mb3JtYXRpb24gZm9yIHRoZSBuZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAq IGluZGV4ZXMgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVu Y2UgdGhlcmUgaXMgbm8KKwkgKiBuZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZp ZWxkcy4KKwkgKi8KKwluZXdJbmZvID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRl eEF0dHJzLAorCQkJCQkJCW9sZEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJ Ul9BTV9PSUQsIC8qIHNwZWNpYWwgQU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhF eHBycywKKwkJCQkJCQlpbmRleFByZWRzLAorCQkJCQkJCWZhbHNlLCAvKiBhdXggaW5kZXggYXJl IG5vdCB1bmlxdWUgKi8KKwkJCQkJCQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJ CQkJCWZhbHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJ CQkJCWZhbHNlLCAvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCW9sZEluZm8t PmlpX1dpdGhvdXRPdmVybGFwcyk7CisKKwkvKgorCSAqIEV4dHJhY3QgdGhlIGxpc3Qgb2YgY29s dW1uIG5hbWVzIGFuZCB0aGUgY29sdW1uIG51bWJlcnMgZm9yIHRoZSBuZXcKKwkgKiBpbmRleCBp bmZvcm1hdGlvbi4gIEFsbCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGlu ZGV4CisJICogY3JlYXRpb24uCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRJbmZvLT5p aV9OdW1JbmRleEF0dHJzOyBpKyspCisJeworCQlUdXBsZURlc2MJaW5kZXhUdXBEZXNjID0gUmVs YXRpb25HZXREZXNjcihpbmRleFJlbGF0aW9uKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0g VHVwbGVEZXNjQXR0cihpbmRleFR1cERlc2MsIGkpOworCisJCWluZGV4Q29sTmFtZXMgPSBsYXBw ZW5kKGluZGV4Q29sTmFtZXMsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSk7CisJCW5ld0luZm8tPmlp X0luZGV4QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOwor CX0KKworCWF1eE9wY2xhc3NJZHMgPSBwYWxsb2MwKHNpemVvZihPaWQpICogbmV3SW5mby0+aWlf TnVtSW5kZXhBdHRycyk7CisJYXV4Q29sb3B0aW9ucyA9IHBhbGxvYzAoc2l6ZW9mKGludDE2KSAq IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCisJLyogRmlsbCB3aXRoICJhbnkgb3BzIiAq LworCWZvciAoaW50IGkgPSAwOyBpIDwgbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQor CXsKKwkJYXV4T3BjbGFzc0lkc1tpXSA9IEFOWV9TVElSX09QU19PSUQ7CisJCWF1eENvbG9wdGlv bnNbaV0gPSAwOworCX0KKworCW5ld0luZGV4SWQgPSBpbmRleF9jcmVhdGUoaGVhcFJlbGF0aW9u LAorCQkJCQkJCSAgbmV3TmFtZSwKKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4UmVs YXRpb25JZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxpZCAq LworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJCQkJ CQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLworCQkJCQkJCSAg bmV3SW5mbywKKwkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCisJCQkJCQkJICBTVElSX0FNX09JRCwK KwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRj b2xsYXRpb24sCisJCQkJCQkJICBhdXhPcGNsYXNzSWRzLAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJ CQkgIGF1eENvbG9wdGlvbnMsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgKERhdHVtKSAwLAor CQkJCQkJCSAgSU5ERVhfQ1JFQVRFX1NLSVBfQlVJTEQgfCBJTkRFWF9DUkVBVEVfQ09OQ1VSUkVO VCB8IElOREVYX0NSRUFURV9BVVhJTElBUlksCisJCQkJCQkJICAwLAorCQkJCQkJCSAgdHJ1ZSwg LyogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8KKwkJCQkJCQkgIGZhbHNl LCAgICAvKiBpc19pbnRlcm5hbD8gKi8KKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBSRUxQRVJT SVNURU5DRV9VTkxPR0dFRCk7IC8qIGF1eCBpbmRleGVzIHVubG9nZ2VkICovCisKKwkvKiBDbG9z ZSB0aGUgcmVsYXRpb25zIHVzZWQgYW5kIGNsZWFuIHVwICovCisJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKKwlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisKKwlyZXR1 cm4gbmV3SW5kZXhJZDsKK30KKwogLyoKICAqIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZAogICoK QEAgLTE0ODMsNyArMTY0MCw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxh dGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogICovCiB2b2lkCiBpbmRleF9jb25j dXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAotCQkJCQkJIE9pZCBpbmRleFJlbGF0 aW9uSWQpCisJCQkJCQkgT2lkIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCSBib29sIGF1eGlsaWFy eSkKIHsKIAlSZWxhdGlvbgloZWFwUmVsOwogCU9pZAkJCXNhdmVfdXNlcmlkOwpAQCAtMTUyNCw2 ICsxNjgyLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwK IAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxz ZTsKKwlpbmRleEluZm8tPmlpX0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAlBc3NlcnQoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRl eCAqLwpAQCAtMzI3NiwxMiArMzQzNSwyMCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKICAqCiAgKiBXZSBkbyBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgYnkg Zmlyc3QgaW5zZXJ0aW5nIHRoZSBjYXRhbG9nIGVudHJ5IGZvciB0aGUKICAqIGluZGV4IHZpYSBp bmRleF9jcmVhdGUoKSwgbWFya2luZyBpdCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFs aWQuCisgKiBUaGVuIHdlIGNyZWF0ZSBzcGVjaWFsIGF1eGlsaWFyeSBpbmRleCB0aGUgc2FtZSB3 YXkuIEl0IGJhc2VkIG9uIFNUSVIgQU0uCiAgKiBUaGVuIHdlIGNvbW1pdCBvdXIgdHJhbnNhY3Rp b24gYW5kIHN0YXJ0IGEgbmV3IG9uZSwgdGhlbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0 aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0 ZS4gIE5vdwotICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3RhcnRlZCB0cmFuc2Fj dGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAorICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1 ZW50bHktc3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgaW5kZXhlcyBhbmQKICAqIGhvbm9y IGl0cyBjb25zdHJhaW50cyBvbiBIT1QgdXBkYXRlczsgc28gd2hpbGUgZXhpc3RpbmcgSE9ULWNo YWlucyBtaWdodAogICogYmUgYnJva2VuIHdpdGggcmVzcGVjdCB0byB0aGUgaW5kZXgsIG5vIGN1 cnJlbnRseSBsaXZlIHR1cGxlIHdpbGwgaGF2ZSBhbgotICogaW5jb21wYXRpYmxlIEhPVCB1cGRh dGUgZG9uZSB0byBpdC4gIFdlIG5vdyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlhCisgKiBp bmNvbXBhdGlibGUgSE9UIHVwZGF0ZSBkb25lIHRvIGl0LgorICoKKyAqIEFmdGVyIHdlIGJ1aWxk IGF1eGlsaWFyeSBpbmRleC4gSXQgaXMgZmFzdCBvcGVyYXRpb24gd2l0aG91dCBhbnkgYWN0dWFs CisgKiB0YWJsZSBzY2FuLiBBcyByZXN1bHQsIHdlIGhhdmUgZW1wdHkgU1RJUiBpbmRleC4gV2Ug d2FpdCBhZ2FpbiBmb3IgYWxsCisgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4g bW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5hdGUuIEF0IHRoYXQKKyAqIG1vbWVudCBhbGwg bmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUgaW5zZXJ0ZWQgaW50byBhdXhpbGlhcnkgaW5kZXgu CisgKgorICogV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxseSB2aWEKICAqIGluZGV4X2J1 aWxkKCksIHdoaWxlIGhvbGRpbmcgYSB3ZWFrIGxvY2sgdGhhdCBhbGxvd3MgY29uY3VycmVudAog ICogaW5zZXJ0L3VwZGF0ZS9kZWxldGUuICBBbHNvLCB3ZSBpbmRleCBvbmx5IHR1cGxlcyB0aGF0 IGFyZSB2YWxpZAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5k ZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKQEAgLTMyOTIsNiArMzQ1OSw3IEBAIElu ZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogZGlmZmVyZW50IHZl cnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0 aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2 ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMg YWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIEJ1dCB0aGVl c2UgdHVwbGVzIGNvbnRhaW5lZCBpbiBhdXhpbGlhcnkgaW5kZXguCiAgKgogICogRnVydGhlcm1v cmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBu ZXcKICAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSBy ZWFzb24gIGZvciB0aGF0IGlzIHRvCkBAIC0zMzAxLDggKzM0NjksMTAgQEAgSW5kZXhDaGVja0V4 Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFu c2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJh bnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVy bWluYXRlLiAgTm93CiAgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRy YW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCi0gKiBpbnNlcnQgdGhlaXIgbmV3IHR1 cGxlcyBpbnRvIGl0LiAgV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hvdAotICog d2hpY2ggaXMgcGFzc2VkIHRvIHZhbGlkYXRlX2luZGV4KCkuICBBbnkgdHVwbGVzIHRoYXQgYXJl IHZhbGlkIGFjY29yZGluZworICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQg dGhhdCBtb21lbnQgd2UgY2xlYXIgImluZGlzcmVhZHkiIGZvcgorICogYXV4aWxpYXJ5IGluZGV4 LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJlcXVpcmVkLworICoKKyAqIFdlIHRoZW4gdGFrZSBhIG5l dyByZWZlcmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5n CiAgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRl ZCB0byB0aGUgaW5kZXguCiAgKiAoQW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUg c25hcCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5h dGluZyB0cmFuc2FjdGlvbi4gIEFueSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCkBAIC0z MzEwLDEyICszNDgwLDE0IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogICogdGhhdCBtaWdodCBjYXJlIGFib3V0IHRoZW0gYmVmb3JlIHdlIG1hcmsgdGhlIGlu ZGV4IHZhbGlkLikKICAqCiAgKiB2YWxpZGF0ZV9pbmRleCgpIHdvcmtzIGJ5IGZpcnN0IGdhdGhl cmluZyBhbGwgdGhlIFRJRHMgY3VycmVudGx5IGluIHRoZQotICogaW5kZXgsIHVzaW5nIGEgYnVs a2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0Cisg KiBpbmRleGVzLCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3JlcyB0 aGUgVElEcyBhbmQgZG9lc24ndAogICogZXZlciBzYXkgImRlbGV0ZSBpdCIuICAoVGhpcyBzaG91 bGQgYmUgZmFzdGVyIHRoYW4gYSBwbGFpbiBpbmRleHNjYW47CiAgKiBhbHNvLCBub3QgYWxsIGlu ZGV4IEFNcyBzdXBwb3J0IGZ1bGwtaW5kZXggaW5kZXhzY2FuLikgIFRoZW4gd2Ugc29ydCB0aGUK LSAqIFRJRHMsIGFuZCBmaW5hbGx5IHNjYW4gdGhlIHRhYmxlIGRvaW5nIGEgIm1lcmdlIGpvaW4i IGFnYWluc3QgdGhlIFRJRCBsaXN0Ci0gKiB0byBzZWUgd2hpY2ggdHVwbGVzIGFyZSBtaXNzaW5n IGZyb20gdGhlIGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0Ci0gKiBhbGwgdHVwbGVz IHZhbGlkIGFjY29yZGluZyB0byB0aGUgcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5k ZXguCisgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRv aW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKKyAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNo IHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQorICogdGFy Z2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNj b3JkaW5nIHRvIHRoZQorICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5v dGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBwYXJ0aWN1bGFyIG9yZGVy OiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAqIEJ1aWxkaW5nIGEgdW5pcXVl IGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5IHRvIGluc2VydCBhCiAgKiB0 dXBsZSB0aGF0IGlzIGFscmVhZHkgZGVhZCBvciBpcyBpbiBwcm9jZXNzIG9mIGJlaW5nIGRlbGV0 ZWQsIGFuZCB3ZQpAQCAtMzMzMSwyNCArMzUwMywyNSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIG5lY2Vzc2FyeSB0byBiZSBzdXJlIHRoZXJlIGFyZSBu b25lIGxlZnQgd2l0aCBhIHRyYW5zYWN0aW9uIHNuYXBzaG90CiAgKiBvbGRlciB0aGFuIHRoZSBy ZWZlcmVuY2UgKGFuZCBoZW5jZSBwb3NzaWJseSBhYmxlIHRvIHNlZSB0dXBsZXMgd2UgZGlkCiAg KiBub3QgaW5kZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNv bW1pdC4gIFN1YnNlcXVlbnQKLSAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0 IGZvciBxdWVyaWVzLgotICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1 dGUtZm9yY2Ugc3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBz dG9yaW5nIG5ldyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBz Ci0gKiBtYWtpbmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBI b3dldmVyIHRoYXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIHRy YW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBxdWVyaWVzLiBBdXhpbGlhcnkg aW5kZXggaXMKKyAqIGRyb3BwZWQuCiAgKi8KLXZvaWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlS ZWxhdGlvbgloZWFwUmVsYXRpb24sCi0JCQkJaW5kZXhSZWxhdGlvbjsKKwkJCQlpbmRleFJlbGF0 aW9uLAorCQkJCWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwotCUlu ZGV4VmFjdXVtSW5mbyBpdmluZm87Ci0JVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlOworCVRyYW5z YWN0aW9uSWQgbGltaXRYbWluOworCUluZGV4VmFjdXVtSW5mbyBpdmluZm8sIGF1eGl2aW5mbzsK KwlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRlOwogCU9pZAkJCXNhdmVfdXNlcmlk OwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisJLyog VXNlIDgwJSBvZiBtYWludGVuYW5jZV93b3JrX21lbSB0byB0YXJnZXQgaW5kZXggc29ydGluZyBh bmQKKwkgKiByZXN0IGZvciBhdXhpbGlhcnkgKi8KKwlpbnQJCQltYWluX3dvcmtfbWVtX3BhcnQg PSAobWFpbnRlbmFuY2Vfd29ya19tZW0gKiA4KSAvIDEwOwogCiAJewogCQljb25zdCBpbnQJcHJv Z3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTMzODEsMTMgKzM1NTQsMTggQEAgdmFsaWRhdGVfaW5kZXgo T2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCVJlc3RyaWN0U2Vh cmNoUGF0aCgpOwogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhJZCwgUm93RXhj bHVzaXZlTG9jayk7CisJYXV4SW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwg Um93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRl eF9pbnNlcnQuICAoWW91IG1pZ2h0IHRoaW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGlu IGZyb20gRGVmaW5lSW5kZXgsIGJ1dCBpdHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmlu ZwogCSAqIGJlZW4gYnVpbHQgaW4gYSBwcmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBX ZSBtaWdodCBuZWVkIHNuYXBzaG90IGZvciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVz LgogCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog CWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAKIAkvKiBtYXJrIGJ1aWxkIGlzIGNvbmN1cnJlbnQganVzdCBmb3IgY29uc2lz dGVuY3kgKi8KIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwpAQCAtMzQwNSwxNSAr MzU4MywzMCBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJaXZpbmZvLnN0cmF0ZWd5ID0gTlVMTDsKIAlpdmluZm8udmFsaWRhdGVf aW5kZXggPSB0cnVlOwogCisJLyoKKwkgKiBDb3B5IGFsbCBpbmZvIHRvIGF1eGlsaWFyeSBpbmZv LCBjaGFuZ2luZyBvbmx5IHJlbGF0aW9uLgorCSAqLworCWF1eGl2aW5mbyA9IGl2aW5mbzsKKwlh dXhpdmluZm8uaW5kZXggPSBhdXhJbmRleFJlbGF0aW9uOworCiAJLyoKIAkgKiBFbmNvZGUgVElE cyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRp bmcKIAkgKiBpdGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIs IHByaW1hcmlseSBiZWNhdXNlIFRJRAogCSAqIGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBv biBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGludDggaXMKIAkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1v c3QgcGxhdGZvcm1zLgogCSAqLworCWF1eFN0YXRlLnR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdp bl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9yLAorCQkJCQkJCQkJCSAgIEludmFsaWRP aWQsIGZhbHNlLAorCQkJCQkJCQkJCSAgIG1haW50ZW5hbmNlX3dvcmtfbWVtIC0gbWFpbl93b3Jr X21lbV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKKwlhdXhTdGF0 ZS5odHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CisK Kwkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKKwkJCQkJCQkgdmFs aWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisKIAlzdGF0ZS50dXBsZXNvcnQgPSB0 dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJCQkJCQkJ CQkJSW52YWxpZE9pZCwgZmFsc2UsCi0JCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLAor CQkJCQkJCQkJCQltYWluX3dvcmtfbWVtX3BhcnQsCiAJCQkJCQkJCQkJCU5VTEwsIFRVUExFU09S VF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0gc3RhdGUudHVwc19pbnNlcnRl ZCA9IDA7CiAKQEAgLTM0MzYsMjcgKzM2MjksMzMgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJ ZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAl9CiAJ dHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X3BlcmZv cm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CisKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90 KCk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q Ci0JICogTm93IHNjYW4gdGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkg KiBOb3cgbWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfVkFMSURBVEVfVEFCTEVTQ0FOKTsKLQl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2Fu KGhlYXBSZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJICBpbmRleElu Zm8sCi0JCQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOworCWxpbWl0WG1pbiA9IHRh YmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhS ZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJ CQkJCQkJCQkgICZhdXhTdGF0ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAq LworCS8qIERvbmUgd2l0aCB0dXBsZXNvcnQgb2JqZWN0cyAqLwogCXR1cGxlc29ydF9lbmQoc3Rh dGUudHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLnR1cGxlc29ydCk7CiAKIAkv KiBNYWtlIHN1cmUgdG8gcmVsZWFzZSByZXNvdXJjZXMgY2FjaGVkIGluIGluZGV4SW5mbyAoaWYg bmVlZGVkKS4gKi8KIAlpbmRleF9pbnNlcnRfY2xlYW51cChpbmRleFJlbGF0aW9uLCBpbmRleElu Zm8pOwogCiAJZWxvZyhERUJVRzIsCi0JCSAidmFsaWRhdGVfaW5kZXggZm91bmQgJS4wZiBoZWFw IHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMi LAotCQkgc3RhdGUuaHR1cHMsIHN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsKKwkJ ICJ2YWxpZGF0ZV9pbmRleCBmZXRjaGVkICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVw bGVzOyIKKwkJCQkJCSIgJS4wZiBhdXggaW5kZXggdHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3Np bmcgdHVwbGVzIiwKKwkJIHN0YXRlLmh0dXBzLCBzdGF0ZS5pdHVwcywgYXV4U3RhdGUuaXR1cHMs IHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBl eGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVf bmVzdGxldmVsKTsKQEAgLTM0NjUsOCArMzY2NCwxMiBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJU2V0VXNlcklkQW5kU2VjQ29u dGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CiAKIAkvKiBDbG9zZSByZWxzLCBi dXQga2VlcCBsb2NrcyAqLworCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7 CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFw UmVsYXRpb24sIE5vTG9jayk7CisKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCXJldHVybiBsaW1pdFhtaW47CiB9CiAKIC8qCkBAIC0zNTI1LDYgKzM3Mjgs MTMgQEAgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NB Y3Rpb24gYWN0aW9uKQogCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmluZGlzdmFsaWQpOwogCQkJaW5k ZXhGb3JtLT5pbmRpc3ZhbGlkID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIElOREVYX0RST1Bf Q0xFQVJfUkVBRFk6CisJCQkvKiBDbGVhciBpbmRpc3JlYWR5IGR1cmluZyBhIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgc2VxdWVuY2UgKi8KKwkJCUFzc2VydChpbmRleEZvcm0tPmluZGlzbGl2 ZSk7CisJCQlBc3NlcnQoaW5kZXhGb3JtLT5pbmRpc3JlYWR5KTsKKwkJCUFzc2VydCghaW5kZXhG b3JtLT5pbmRpc3ZhbGlkKTsKKwkJCWluZGV4Rm9ybS0+aW5kaXNyZWFkeSA9IGZhbHNlOworCQkJ YnJlYWs7CiAJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRDoKIAogCQkJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv dG9hc3RpbmcuYwppbmRleCBhZDMwODJjNjJhYy4uZmJiY2Q3ZDAwZGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Rv YXN0aW5nLmMKQEAgLTMyNSw3ICszMjUsOCBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24g cmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCQkJCSBCVFJFRV9BTV9PSUQs CiAJCQkJIHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJCSBjb2xsYXRpb25JZHMsIG9w Y2xhc3NJZHMsIE5VTEwsIGNvbG9wdGlvbnMsIE5VTEwsIChEYXR1bSkgMCwKLQkJCQkgSU5ERVhf Q1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUsIHRydWUsIE5VTEwpOworCQkJCSBJTkRFWF9DUkVB VEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1ZSwgTlVMTCwKKwkJCQkgdG9hc3RfcmVsLT5yZF9y ZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCXRhYmxlX2Nsb3NlKHRvYXN0X3JlbCwgTm9Mb2NrKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBhMDI3Mjk5MTFmZS4uMDJiNjM2YTAwNTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC01NTQsNiArNTU0LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiB7CiAJYm9vbAkJY29uY3VycmVudDsKIAljaGFyCSAgICppbmRleFJl bGF0aW9uTmFtZTsKKwljaGFyCSAgICphdXhJbmRleFJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hh cgkgICAqYWNjZXNzTWV0aG9kTmFtZTsKIAlPaWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNv bGxhdGlvbklkczsKQEAgLTU2Myw2ICs1NjQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAlPaWQJCQluYW1lc3BhY2VJZDsKIAlPaWQJCQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRl ZENvbnN0cmFpbnRJZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJYXV4SW5kZXhSZWxhdGlvbklkID0g SW52YWxpZE9pZDsKIAlMaXN0CSAgICppbmRleENvbE5hbWVzOwogCUxpc3QJICAgKmFsbEluZGV4 UGFyYW1zOwogCVJlbGF0aW9uCXJlbDsKQEAgLTU4NCwxMCArNTg2LDEwIEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCWludAkJCW51bWJlck9mS2V5QXR0cmlidXRlczsKIAlUcmFuc2FjdGlv bklkIGxpbWl0WG1pbjsKIAlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJT2JqZWN0QWRkcmVzcyBh dXhBZGRyZXNzOwogCUxvY2tSZWxJZAloZWFwcmVsaWQ7CiAJTE9DS1RBRwkJaGVhcGxvY2t0YWc7 CiAJTE9DS01PREUJbG9ja21vZGU7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJT2lkCQkJcm9vdF9z YXZlX3VzZXJpZDsKIAlpbnQJCQlyb290X3NhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJcm9vdF9z YXZlX25lc3RsZXZlbDsKQEAgLTgzNCw2ICs4MzYsMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJCQkJCQkJCQkJCXN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAogCQkJCQkJCQkJCQlzdG10LT5w cmltYXJ5LAogCQkJCQkJCQkJCQlzdG10LT5pc2NvbnN0cmFpbnQpOworCS8qCisJICogU2VsZWN0 IG5hbWUgZm9yIGF1eGlsaWFyeSBpbmRleAorCSAqLworCWlmIChjb25jdXJyZW50KQorCQlhdXhJ bmRleFJlbGF0aW9uTmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShpbmRleFJlbGF0aW9uTmFtZSwK KwkJCQkJCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJCQkJCSAgImNjYXV4IiwKKwkJCQkJCQkJCQkJ CSAgbmFtZXNwYWNlSWQsCisJCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAogCS8qCiAJICogbG9vayB1 cCB0aGUgYWNjZXNzIG1ldGhvZCwgdmVyaWZ5IGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3RlZCBm ZWF0dXJlcwpAQCAtMTIyNyw3ICsxMjM4LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ CQkJCSBjb2xvcHRpb25zLCBOVUxMLCByZWxvcHRpb25zLAogCQkJCQkgZmxhZ3MsIGNvbnN0cl9m bGFncywKIAkJCQkJIGFsbG93U3lzdGVtVGFibGVNb2RzLCAhY2hlY2tfcmlnaHRzLAotCQkJCQkg JmNyZWF0ZWRDb25zdHJhaW50SWQpOworCQkJCQkgJmNyZWF0ZWRDb25zdHJhaW50SWQsCisJCQkJ CSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRy ZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKQEAgLTE1NjksNiAr MTU4MSwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJcmV0dXJuIGFkZHJlc3M7CiAJ fQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgLSBjcmVhdGUgYXV4aWxp YXJ5IGluZGV4IHJlY29yZC4KKwkgKi8KKwlpZiAoY29uY3VycmVudCkKKwl7CisJCWF1eEluZGV4 UmVsYXRpb25JZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KHJlbCwgaW5kZXhSZWxh dGlvbklkLAorCQkJCQkJCQkJCQl0YWJsZXNwYWNlSWQsIGF1eEluZGV4UmVsYXRpb25OYW1lKTsK KwkJT2JqZWN0QWRkcmVzc1NldChhdXhBZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIGF1eElu ZGV4UmVsYXRpb25JZCk7CisJfQorCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCByb290X3NhdmVfbmVz dGxldmVsKTsKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHJvb3Rfc2F2ZV91c2VyaWQsIHJvb3Rf c2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTE1OTcsMTEgKzE2MTksMTEgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBGb3IgYSBjb25jdXJyZW50IGJ1aWxkLCBpdCdzIGltcG9y dGFudCB0byBtYWtlIHRoZSBjYXRhbG9nIGVudHJpZXMKIAkgKiB2aXNpYmxlIHRvIG90aGVyIHRy YW5zYWN0aW9ucyBiZWZvcmUgd2Ugc3RhcnQgdG8gYnVpbGQgdGhlIGluZGV4LiBUaGF0Ci0JICog d2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1cGRhdGVzLiAg VGhlIG5ldyBpbmRleAotCSAqIHdpbGwgYmUgbWFya2VkIG5vdCBpbmRpc3JlYWR5IGFuZCBub3Qg aW5kaXN2YWxpZCwgc28gdGhhdCBubyBvbmUgZWxzZQotCSAqIHRyaWVzIHRvIGVpdGhlciBpbnNl cnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMuCisJICogd2lsbCBwcmV2ZW50IHRoZW0g ZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1cGRhdGVzLiBOZXcgaW5kZXhlcworCSAqICht YWluIGFuZCBhdXhpbGlhcnkpIHdpbGwgYmUgbWFya2VkIG5vdCBpbmRpc3JlYWR5IGFuZCBub3Qg aW5kaXN2YWxpZCwKKwkgKiBzbyB0aGF0IG5vIG9uZSBlbHNlIHRyaWVzIHRvIGVpdGhlciBpbnNl cnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMuCiAJICoKLQkgKiBXZSBtdXN0IGNvbW1p dCBvdXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBpbmRleCBiZWNvbWVzCisJICog V2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgaW5kZXhl cyBiZWNvbWVzCiAJICogdmlzaWJsZTsgdGhlbiBzdGFydCBhbm90aGVyLiAgTm90ZSB0aGF0IGFs bCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHdlIGp1c3QKIAkgKiBidWlsdCBhcmUgbG9zdCBpbiB0aGUg Y29tbWl0LiAgVGhlIG9ubHkgZGF0YSB3ZSBrZWVwIHBhc3QgaGVyZSBhcmUgdGhlCiAJICogcmVs YXRpb24gSURzLgpAQCAtMTYxMSw3ICsxNjMzLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJICogY2Fubm90IGJsb2NrLCBldmVuIGlmIHNvbWVvbmUgZWxzZSBpcyB3YWl0aW5nIGZvciBh Y2Nlc3MsIGJlY2F1c2Ugd2UKIAkgKiBhbHJlYWR5IGhhdmUgdGhlIHNhbWUgbG9jayB3aXRoaW4g b3VyIHRyYW5zYWN0aW9uLgogCSAqCi0JICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhl ciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleCwKKwkgKiBOb3RlOiB3ZSBkb24ndCBj dXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxvY2sgb24gdGhlIGluZGV4ZXMsCiAJICog YmVjYXVzZSB0aGVyZSBhcmUgbm8gb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGNoYW5nZSBpdHMgc3Rh dGUgd2hpbGUgd2UKIAkgKiBob2xkIGxvY2sgb24gdGhlIHBhcmVudCB0YWJsZS4gIFRoaXMgbWln aHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICovCkBAIC0xNjMyLDE0ICsxNjU0LDE2IEBAIERl ZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2NvbHNbXSA9 IHsKIAkJCVBST0dSRVNTX0NSRUFURUlEWF9JTkRFWF9PSUQsCisJCQlQUk9HUkVTU19DUkVBVEVJ RFhfQVVYX0lOREVYX09JRCwKIAkJCVBST0dSRVNTX0NSRUFURUlEWF9QSEFTRQogCQl9OwogCQlj b25zdCBpbnQ2NCBwcm9ncmVzc192YWxzW10gPSB7CiAJCQlpbmRleFJlbGF0aW9uSWQsCisJCQlh dXhJbmRleFJlbGF0aW9uSWQsCiAJCQlQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xCiAJ CX07CiAKLQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgyLCBwcm9ncmVzc19j b2xzLCBwcm9ncmVzc192YWxzKTsKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJh bSgzLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192YWxzKTsKIAl9CiAKIAkvKgpAQCAtMTY1MCw3 ICsxNjc0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogd2l0aCB0aGUgb2xkIGxp c3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29uc2lkZXIgcnVubmluZwogCSAqIHRy YW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQgd3JpdGluZyB0byB0aGUgdGFi bGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgeGFjdHMgdGhhdCBv cGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAqIHRoaXMgcG9pbnQ7IHRoZXkgd2ls bCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBpdC4KKwkgKiB0aGlzIHBvaW50OyB0 aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkgb3BlbiBpdC4KIAkgKgogCSAq IE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2NrIGFjcXVpc2l0aW9uIGhlcmUsIHJh dGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJvY0FycmF5IGFuZCBzbGVlcGluZywg aXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY2MiwxNSArMTY4NiwzOSBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgd2UgYXJl IHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlCi0JICogdGFibGUg b3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4IGluIHRoZWlyIGxp c3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcg aW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhlcy4gIFdlIGhhdmUgd2FpdGVkIG91 dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55IG5ldwotCSAqIHRyYW5zYWN0 aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0LCBidXQgdGhlIGluZGV4IGlz IHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiAgVGhlIGluZGV4 IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSBib3RoIG5ldyBp bmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUgc3RpbGwKKwkgKiBtYXJrZWQgYXMg Im5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFyZSBjb25zdWx0ZWQgd2hpbGUK IAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMgYXJyYW5nZW1lbnQgZW5zdXJl cyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5l dyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVu dCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBs ZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIE5vdyBjYWxsIGJ1aWxkIG9u IGF1eGlsaWFyeSBpbmRleC4gSW5kZXggd2lsbCBiZSBjcmVhdGVkIGVtcHR5IHdpdGhvdXQKKwkg KiBhbnkgYWN0dWFsIGhlYXAgc2NhbiwgYnV0IG1hcmtlZCBhcyAicmVhZHktZm9yLWluc2VydHMi LiBUaGUgZ29hbCBvZgorCSAqIHRoYXQgaW5kZXggaXMgYWNjdW11bGF0ZSBuZXcgdHVwbGVzIHdo aWxlIG1haW4gaW5kZXggaXMgYWN0dWFsbHkgYnVpbHQuCisJICovCisJaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCwgdHJ1ZSk7CisKKwlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAor CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIE5vdyB3 ZSBuZWVkIHRvIGVuc3VyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlIHdpdGggYXV4aWxp YXJ5IGluZGV4CisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLgorCSAqLwor CVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOworCisJLyoKKwkg KiBBdCB0aGlzIG1vbWVudCB3ZSBhcmUgc3VyZSB3aGF0IGFsbCBuZXcgdHVwbGVzIGluIHRhYmxl IGFyZSBpbnNlcnRlZCBpbnRvCisJICogYXV4aWxpYXJ5IGluZGV4LiBOb3cgaXQgaXMgdGltZSB0 byBidWlsZCB0aGUgdGFyZ2V0IGluZGV4IGl0c2VsZi4KKwkgKgorCSAqIFdlIGJ1aWxkIHRoYXQg aW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCiAJ ICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRh dGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRl eCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4n dCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgpAQCAtMTY3OSw3ICsx NzI3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICovCiAKIAkvKiBQZXJmb3JtIGNv bmN1cnJlbnQgYnVpbGQgb2YgaW5kZXggKi8KLQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFi bGVJZCwgaW5kZXhSZWxhdGlvbklkKTsKKwlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFibGVJ ZCwgaW5kZXhSZWxhdGlvbklkLCBmYWxzZSk7CiAKIAkvKgogCSAqIENvbW1pdCB0aGlzIHRyYW5z YWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZpc2libGUuCkBAIC0xNjk4LDQz ICsxNzQ2LDI4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHRoZSBpbmRleCBtYXJr ZWQgYXMgcmVhZC1vbmx5IGZvciB1cGRhdGVzLgogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfMik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8zKTsKIAlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVlKTsK IAogCS8qCi0JICogTm93IHRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBi ZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKLQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxl cy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90cyBpbgotCSAqIHVzZSB0 aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgcmVmZXJl bmNlCi0JICogc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4gIElmIHN1Y2ggYSByZWNlbnRs eS1jb21taXR0ZWQgdHJhbnNhY3Rpb24KLQkgKiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUs IHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHlldAotCSAqIHRob3NlIHRy YW5zYWN0aW9ucyB3aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9ncmVz cyB3aWxsCi0JICogZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJlIHRoZXJlIG9uY2Ugd2UgbWFyayB0 aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcgZm9y IGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJlZm9yZQotCSAqIHdlIG1hcmsg dGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3Qg dG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKLQkgKiBuZWVkIGEg c25hcHNob3QuCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJs ZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KIAkgKi8K LQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKLQkgKiBTY2FuIHRoZSBpbmRleCBhbmQgdGhl IGhlYXAsIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgorCSAqIE5vdyB0YXJnZXQg aW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSIgZm9yIGFsbCB0cmFuc2FjdGlvbi4gU28sIGF1eGls aWFyeQorCSAqIGluZGV4IGlzIG5vdCBtb3JlIG5lZWRlZC4gU28sIHN0YXJ0IHJlbW92aW5nIHBy b2Nlc3MgYnkgcmV2ZXJ0aW5nICJyZWFkeSIKKwkgKiBmbGFnLgogCSAqLwotCXZhbGlkYXRlX2lu ZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgc25hcHNob3QpOwotCi0JLyoKLQkgKiBEcm9w IHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcg b3V0IG90aGVyCi0JICogc25hcHNob3QgaG9sZGVycywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFn YWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KLQkgKiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90IGFzIG9uZQotCSAqIHRoZXkgbXVz dCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUgc25hcHNob3QncyB4bWluIHRvIHVzZSBh cwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZpcnR1YWxYSURzKCkuCi0JICovCi0JbGlt aXRYbWluID0gc25hcHNob3QtPnhtaW47Ci0KKwlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoYXV4SW5k ZXhSZWxhdGlvbklkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKIAlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCS8qCisJICogTWVyZ2Ug Y29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNz aW5nIGluZGV4IGVudHJpZXMuCisJICovCisJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgodGFi bGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOwogCiAJLyoKIAkgKiBU aGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFw c2hvdHMgdGhhdApAQCAtMTc0Nyw2ICsxNzgwLDQ5IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7CisKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9B U1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3Qu CisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJ LyogTm93IGl0IGlzIHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZCAqLworCWlu ZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0aW9uSWQpOwor CVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCS8qCisJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtl IGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCisJICogdG8g c2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgorCSAqLworCisJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNh Y3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8KKwlXYWl0Rm9y TG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ LyoKKwkgKiBEcm9wIGF1eGlsaWFyeSBpbmRleC4KKwkgKgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3Qg dGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAq IHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KKwkgKgorCSAqIFVzZSBQRVJG T1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRo ZQorCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCisJICovCisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRy ZXNzLCBEUk9QX1JFU1RSSUNULAorCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRf TE9DSyB8IFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCisJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwogCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KIAlp ZiAoc2FmZV9pbmRleCkKIAkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKQEAgLTE3NTcsMTIg KzE4MzMsMTIgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUgaW5kZXgg aXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJyZW50bHkK IAkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRhaW4g dHVwbGVzIGRlbGV0ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRh a2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0 IGhhdmUgb2xkZXIgc25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hvdCBkdXJp bmcgdmFsaWRhdGluZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBhbnkgdHJh bnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJSU5KRUNU SU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIpOwogCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF81KTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVl KTsKIAogCS8qCkBAIC0zNTQyLDYgKzM2MTgsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CXR5cGVkZWYgc3RydWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJCWluZGV4SWQ7CisJ CU9pZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJCWJv b2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTM1NjMsOSAr MzY0MCwxMCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQUk9HUkVTU19DUkVBVEVJRFhf Q09NTUFORCwKIAkJUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQlQUk9HUkVTU19DUkVBVEVJ RFhfSU5ERVhfT0lELAorCQlQUk9HUkVTU19DUkVBVEVJRFhfQVVYX0lOREVYX09JRCwKIAkJUFJP R1JFU1NfQ1JFQVRFSURYX0FDQ0VTU19NRVRIT0RfT0lECiAJfTsKLQlpbnQ2NAkJcHJvZ3Jlc3Nf dmFsc1s0XTsKKwlpbnQ2NAkJcHJvZ3Jlc3NfdmFsc1s1XTsKIAogCS8qCiAJICogQ3JlYXRlIGEg bWVtb3J5IGNvbnRleHQgdGhhdCB3aWxsIHN1cnZpdmUgZm9yY2VkIHRyYW5zYWN0aW9uIGNvbW1p dHMgd2UKQEAgLTM4NjUsMTUgKzM5NDMsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlm b3JlYWNoKGxjLCBpbmRleElkcykKIAl7CiAJCWNoYXIJICAgKmNvbmN1cnJlbnROYW1lOworCQlj aGFyCSAgICphdXhDb25jdXJyZW50TmFtZTsKIAkJUmVpbmRleEluZGV4SW5mbyAqaWR4ID0gbGZp cnN0KGxjKTsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4OwogCQlPaWQJCQluZXdJbmRleElk OworCQlPaWQJCQlhdXhJbmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24J aGVhcFJlbDsKIAkJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7 CiAJCWludAkJCXNhdmVfbmVzdGxldmVsOwogCQlSZWxhdGlvbgluZXdJbmRleFJlbDsKKwkJUmVs YXRpb24JYXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFi bGVzcGFjZWlkOwogCkBAIC0zOTE1LDggKzM5OTYsOSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRF WF9DT05DVVJSRU5UTFk7CiAJCXByb2dyZXNzX3ZhbHNbMV0gPSAwOwkvKiBpbml0aWFsaXppbmcg Ki8KIAkJcHJvZ3Jlc3NfdmFsc1syXSA9IGlkeC0+aW5kZXhJZDsKLQkJcHJvZ3Jlc3NfdmFsc1sz XSA9IGlkeC0+YW1JZDsKLQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBw cm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCXByb2dyZXNzX3ZhbHNbM10gPSBJbnZh bGlkT2lkOworCQlwcm9ncmVzc192YWxzWzRdID0gaWR4LT5hbUlkOworCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX211bHRpX3BhcmFtKDUsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsK IAogCQkvKiBDaG9vc2UgYSB0ZW1wb3JhcnkgcmVsYXRpb24gbmFtZSBmb3IgdGhlIG5ldyBpbmRl eCAqLwogCQljb25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUo aWR4LT5pbmRleElkKSwKQEAgLTM5MjQsNiArNDAwNiwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkJCQkJCQkJCQkiY2NuZXciLAogCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShp bmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKIAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhD b25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRl eElkKSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJ CQkJCWZhbHNlKTsKIAogCQkvKiBDaG9vc2UgdGhlIG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9m IHRvYXN0IHRhYmxlcyBhcmUgbm90IG1vdmVkICovCiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+ dGFibGVzcGFjZU9pZCkgJiYKQEAgLTM5MzcsMTIgKzQwMjQsMTcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAkJCQkJCQkJCQkJCQlpZHgtPmluZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVz cGFjZWlkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KGhlYXBSZWwsCisJCQkJCQkJCQkJCQkgICBpZHgt PmluZGV4SWQsCisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJCQkJCQkJCQkJCQkgICBh dXhDb25jdXJyZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJlbGF0aW9uIG9m IHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFsc28gbmVlZGVk IG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0luZGV4SWQsIFNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0gaW5kZXhfb3BlbihhdXhJ bmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNhdmUgdGhl IGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC0zOTUxLDYgKzQw NDMsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lkeCA9IHBhbGxvY19vYmpl Y3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CisJ CW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+ c2FmZTsKIAkJbmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQg PSBpZHgtPmFtSWQ7CkBAIC0zOTY5LDEwICs0MDYyLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxp ZCA9IG5ld0luZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3Mg PSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxvY2tyZWxpZCA9IHBhbGxv Y19vYmplY3QoTG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eEluZGV4UmVsLT5yZF9sb2Nr SW5mby5sb2NrUmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3Ms IGxvY2tyZWxpZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJ CWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShhdXhJbmRleFJl bCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAKIAkJLyog Um9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8K QEAgLTQwNTMsMTMgKzQxNTAsNTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBkb2lu ZyB0aGF0LCB3YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGNvdWxkIGhhdmUgdGhl IHRhYmxlIG9mCiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhl cy4gIFNlZSAicGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZvciBtb3JlIGRldGFpbHMu CisJKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZv ckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogTm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5k ZXhlcyBhbmQgbWFyayB0aGVtIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFj aChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmly c3QobGMpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hl Y2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlv biBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFu ZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBv biBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBj b25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJ CWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8q IEJ1aWxkIGF1eGlsaWFyeSBpbmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBo ZWFwIHNjYW4sIGp1c3QgYW4gZW1wdHkgaW5kZXguICovCisJCWluZGV4X2NvbmN1cnJlbnRseV9i dWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCwgdHJ1ZSk7CisKKwkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCS8qCisJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0 cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCisJICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVf SUMgZmxhZyBoZXJlLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8xKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8q CisJICogV2FpdCB1bnRpbCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIHRha2VuIGludG8gYWNj b3VudCBieSBhbGwKKwkgKiB0cmFuc2FjdGlvbnMuCisJICovCiAJV2FpdEZvckxvY2tlcnNNdWx0 aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAorCS8qIE5vdyBpdCBpcyB0aW1lIHRvIHBlcmZvcm0gdGFyZ2V0IGluZGV4IGJ1aWxk LiAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAq bmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQwODYsMTEgKzQyMjUsMTIgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1swXSA9IFBST0dSRVNTX0NSRUFURUlEWF9DT01N QU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZOwogCQlwcm9ncmVzc192YWxzWzFdID0gUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX0JVSUxEOwogCQlwcm9ncmVzc192YWxzWzJdID0gbmV3aWR4LT5pbmRl eElkOwotCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwotCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsK KwkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YXV4SW5kZXhJZDsKKwkJcHJvZ3Jlc3NfdmFs c1s0XSA9IG5ld2lkeC0+YW1JZDsKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJh bSg1LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAKIAkJLyogUGVyZm9ybSBjb25j dXJyZW50IGJ1aWxkIG9mIG5ldyBpbmRleCAqLwotCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQo bmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQpOworCQlpbmRleF9jb25jdXJyZW50bHlf YnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIGZhbHNlKTsKIAogCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CkBAIC00MTAyLDI0ICs0MjQyLDUyIEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBm bGFnIGhlcmUuCiAJICovCiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzMpOworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7 CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50 IGFsbCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNlcnQiLiBTbywK KwkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBp bmRleGVzLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBp bnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1 c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2Nr cyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5k ZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUg VE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBz aG90LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CisJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RS T1BfQ0xFQVJfUkVBRFkpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlOREVYIENPTkNV UlJFTlRMWQogCSAqCi0JICogRHVyaW5nIHRoaXMgcGhhc2UgdGhlIG9sZCBpbmRleGVzIGNhdGNo IHVwIHdpdGggYW55IG5ldyB0dXBsZXMgdGhhdAorCSAqIER1cmluZyB0aGlzIHBoYXNlIHRoZSBu ZXcgaW5kZXhlcyBjYXRjaCB1cCB3aXRoIGFueSBuZXcgdHVwbGVzIHRoYXQKIAkgKiB3ZXJlIGNy ZWF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBwaGFzZS4gIFNlZSAicGhhc2UgMyIgaW4gRGVmaW5l SW5kZXgoKQogCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCi0KLQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwotCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1Rh Z3MsIFNoYXJlTG9jaywgdHJ1ZSk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlm b3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9 IGxmaXJzdChsYyk7CiAJCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwotCQlTbmFwc2hvdAlzbmFw c2hvdDsKIAogCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBAIC00MTM0LDEzICs0MzAy LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJLyoKLQkJICogVGFrZSB0aGUgInJlZmVyZW5j ZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCQkgKiB0 byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4KLQkJICovCi0JCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3Qo c25hcHNob3QpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRv IGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAg LTQxNDksMTkgKzQzMTAsMTIgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3Nf dmFsc1swXSA9IFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZ OwogCQlwcm9ncmVzc192YWxzWzFdID0gUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRF X0lEWFNDQU47CiAJCXByb2dyZXNzX3ZhbHNbMl0gPSBuZXdpZHgtPmluZGV4SWQ7Ci0JCXByb2dy ZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7Ci0JCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVs dGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOworCQlwcm9ncmVzc192 YWxzWzNdID0gbmV3aWR4LT5hdXhJbmRleElkOworCQlwcm9ncmVzc192YWxzWzRdID0gbmV3aWR4 LT5hbUlkOworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDUsIHByb2dyZXNz X2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+aW5kZXhJZCwgc25hcHNob3QpOwotCi0JCS8qCi0JCSAqIFdlIGNhbiBub3cg ZG8gYXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNob3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQot CQkgKiB0aGUgeG1pbiBsaW1pdCB0byB3YWl0IGZvciBvbGRlciBzbmFwc2hvdHMuCi0JCSAqLwot CQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwot CQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCQlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9p bmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElk KTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCQkv KgogCQkgKiBUbyBlbnN1cmUgbm8gZGVhZGxvY2tzLCB3ZSBtdXN0IGNvbW1pdCBhbmQgc3RhcnQg eWV0IGFub3RoZXIKQEAgLTQxODEsNyArNDMzNSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhl cmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsK KwkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAkJV2FpdEZvck9s ZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CkBAIC00MjcxLDE0ICs0NDI1LDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ LyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBNYXJrIHRo ZSBvbGQgaW5kZXhlcyBhcyBkZWFkLiAgRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vIHJ1bm5p bmcKLQkgKiB0cmFuc2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnku ICBTZWUgYWxzbworCSAqIE1hcmsgdGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgYXMgZGVh ZC4gRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vCisJICogcnVubmluZyB0cmFuc2FjdGlvbiBj b3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnkuICBTZWUgYWxzbwogCSAqIGluZGV4 X2Ryb3AoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCiAJSU5KRUNUSU9OX1BPSU5UKCJyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQiKTsKIAlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfNSk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNj ZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CiAKIAlmb3JlYWNoKGxjLCBpbmRleElkcykKQEAgLTQz MDMsNiArNDQ1NywyOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCX0KIAorCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNl ci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJ CSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMg dGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0Lgor CQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkgKiBVcGRhdGluZyBw Z19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJ CSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVh ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKKwl9CisKIAkvKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSB1 cGRhdGVzIHZpc2libGUuICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMTYsMTEgKzQ0OTIsMTEgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkg KgotCSAqIERyb3AgdGhlIG9sZCBpbmRleGVzLgorCSAqIERyb3AgdGhlIG9sZCBhbmQgYXV4aWxp YXJ5IGluZGV4ZXMuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CiAJV2Fp dEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7 CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKQEAgLTQz NDAsNiArNDUxNiwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwogCQl9CiAKKwkJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCisJCXsKKwkJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CisJ CQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmF1eEluZGV4SWQ7CisJCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVj dCwgb2JqZWN0cyk7CisJCX0KKwogCQkvKgogCQkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9DT05D VVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKIAkJICogcmlnaHQgbG9j ayBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDBlY2MzMTQ3YmJkLi5mYTFiZGNhN2UyYiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03MTQsMTEgKzcxNCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBU YWJsZUFtUm91dGluZQogCQkJCQkJCQkJCSAgIFRhYmxlU2NhbkRlc2Mgc2Nhbik7CiAKIAkvKiBz ZWUgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRl cnMgKi8KLQl2b2lkCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWws Ci0JCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAotCQkJCQkJCQkJCXN0cnVjdCBJbmRleElu Zm8gKmluZGV4X2luZm8sCi0JCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJ c3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpOworCVRyYW5zYWN0aW9uSWQgCQkoKmlu ZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQlSZWxh dGlvbiBpbmRleF9yZWwsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZv LAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkJ CQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUpOwogCiAKIAkvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTE4NjIsMjIgKzE4NjIsMjIgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFu Z2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiB9CiAKIC8qCi0gKiB0YWJsZV9pbmRleF92YWxp ZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQK KyAqIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gLSB2YWxpZGF0aW9uIHNjYW4gZm9yIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhw bGFuYXRpb24uCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBUcmFuc2Fj dGlvbklkCiB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJ CQkJCSAgUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJCQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRl eF9pbmZvLAotCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgc3RydWN0IFZhbGlk YXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUg KnN0YXRlLAorCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsK LQl0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAot CQkJCQkJCQkJCQkgICBpbmRleF9yZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJ CQkJCQkJCSAgIHNuYXBzaG90LAotCQkJCQkJCQkJCQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxl X3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJ CQkJCQkJICBpbmRleF9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJ CQkJCSAgc3RhdGUsCisJCQkJCQkJCQkJCQkJICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCmluZGV4IDJkZWE5NmY0N2MzLi44MmQwZDZiNDZkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAt MjUsNiArMjUsNyBAQCB0eXBlZGVmIGVudW0KIHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAog CUlOREVYX0NSRUFURV9TRVRfVkFMSUQsCisJSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRF WF9EUk9QX0NMRUFSX1ZBTElELAogCUlOREVYX0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVG bGFnc0FjdGlvbjsKQEAgLTY1LDYgKzY2LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJp bWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9F WElTVFMJCQkoMSA8PCA0KQogI2RlZmluZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8 PCA1KQogI2RlZmluZSBJTkRFWF9DUkVBVEVfSU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJ TkRFWF9DUkVBVEVfQVVYSUxJQVJZCQkJCSgxIDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3Jl YXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0 aW9uTmFtZSwKQEAgLTg2LDcgKzg4LDggQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGJpdHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9v bCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJCQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJ CQkJIE9pZCAqY29uc3RyYWludElkKTsKKwkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJ CSBjaGFyIHJlbHBlcnNpc3RlbmNlKTsKIAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01B UktfQVNfUFJJTUFSWQkoMSA8PCAwKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVS UkFCTEUJCSgxIDw8IDEpCkBAIC0xMDAsOCArMTAzLDE0IEBAIGV4dGVybiBPaWQJaW5kZXhfY29u Y3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkg ICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsK IAorZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFw UmVsYXRpb24sCisJCQkJCQkJCQkJICBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQg dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRl cm4gdm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAotCQkJ CQkJCQkJIE9pZCBpbmRleFJlbGF0aW9uSWQpOworCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCisJCQkJCQkJCQkgYm9vbCBhdXhpbGlhcnkpOwogCiBleHRlcm4gdm9pZCBpbmRleF9jb25j dXJyZW50bHlfc3dhcChPaWQgbmV3SW5kZXhJZCwKIAkJCQkJCQkJCU9pZCBvbGRJbmRleElkLApA QCAtMTQ1LDcgKzE1NCw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAkJCQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAK LWV4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFw c2hvdCBzbmFwc2hvdCk7CitleHRlcm4gVHJhbnNhY3Rpb25JZCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpOwogCiBleHRlcm4gdm9pZCBpbmRl eF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rp b24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAppbmRleCA1NjE2ZDY0NTIzMC4uODlmOGQwMmZk YzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAtODgsNiArODgsNyBAQAogI2RlZmluZSBQ Uk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUJCQkxMgogI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEFSVElUSU9OU19UT1RBTAkJMTMKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BB UlRJVElPTlNfRE9ORQkJMTQKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX0FVWF9JTkRFWF9P SUQJCTE1CiAvKiAxNSBhbmQgMTYgcmVzZXJ2ZWQgZm9yICJibG9jayBudW1iZXIiIG1ldHJpY3Mg Ki8KIAogLyogUGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFKSAqLwpAQCAtOTYsMTAgKzk3LDExIEBACiAjZGVmaW5lIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkzCiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZB TElEQVRFX1RBQkxFU0NBTgk2CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJ REFURV9JRFhNRVJHRQk2CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJ CQk3CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQJCQk4CiAjZGVmaW5l IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUJCQk5CisjZGVmaW5lIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzYJCQkxMAogCiAvKgogICogU3VicGhhc2VzIG9mIENSRUFURSBJ TkRFWCwgZm9yIGluZGV4X2J1aWxkLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0 CmluZGV4IDlmMDNmYTMwMzNjLi43ODAzMTNmNDc3YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cisr KyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRf c25hcHNob3RzLm91dApAQCAtMjMsNiArMjMsMTIgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKICAKICgx IHJvdykKIAorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2Nhbl9ub194aWQnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2gg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEg Y2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHBy aW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNU IGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTQzLDMwICs0 OSwzOCBAQCBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3Jr ZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAy KSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9z bmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlk CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2lj X3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hF UkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKQEAgLTc2LDkgKzkwLDExIEBAIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0t IFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CkBAIC05MSwyMyArMTA3LDMxIEBAIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZScpOwogCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlk CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9z Y2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwg MikgPSAwOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxl KGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQK IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCkBAIC0xMTYsMTMg KzE0MCwxNyBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApp bmRleCAyOTQxYWE3YWUzOC4uMjQ5ZDEwNjFhZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bApAQCAtNCw2ICs0LDcgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Rh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywg J25vdGljZScpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkg a2V5LCBqIGludCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0 ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQK aW5kZXggMTkwNGViNjViYjkuLjdlMDA4YjFjYmQ5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBERVRBSUw6ICBLZXkg KGYxKT0oYikgYWxyZWFkeSBleGlzdHMuCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKIEVSUk9SOiAgY291bGQgbm90IGNy ZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9pbmRleDMiCiBERVRBSUw6ICBLZXkgKGYyKT0oYikg aXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsKIC0tIHRlc3Qg dGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3JrIGNvbmN1cnJl bnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9uIGNvbmN1cl9o ZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9p bmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTMwMTUsNiArMzAxNiw3 IEBAIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFMVUVTICgxKSwgKDEpLCAoMik7 CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9O IGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKIEVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlx dWUgaW5kZXggImNvbmN1cl9yZWluZGV4X2luZDUiCiBERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMg ZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJl aW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWls dXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBj YW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4 X2luZDU7CkBAIC0zMDI3LDggKzMwMjksMTAgQEAgREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiBJ bmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5W QUxJRAorICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAog ICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJ RAogCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiBEUk9QIElOREVYIGNv bmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWls dXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgogREVMRVRFIEZST00g Y29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5kZXhpbmcub3V0CmluZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0 IGluZGV4cmVsaWQ6OnJlZ2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAg fCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRf aWR4XzExICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBh cnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4 ICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3Zh bGlkX3RhYl8xMl9leHByX2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4 cHJfaWR4ICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2 YWxpZF9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYg cm93cykKIAogZHJvcCB0YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBv ZiByZXBsaWNhIGluZGV4ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBjMDg1ZTA1ZjA1Mi4uYzQ0ZTQ2MGIwZDMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNDk5LDYgKzQ5OSw3IEBAIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5PVCBFWElTVFMgY29uY3VyX2luZGV4 MiBPTiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBjb25jdXJfaGVhcCBWQUxVRVMgKCdi JywneCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZCBwcm9wZXJseSBhdCBi dWlsZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgz IE9OIGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsKIC0t IHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3JrIGNv bmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9uIGNv bmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNv bmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTEyMzksMTAg KzEyNDAsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxIGludCk7CiBJ TlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogLS0g VGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXguCiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQg KGMxKTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhp bmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJlLgog LS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4gYmUg ZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7 CiBcZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVf Y2NhdXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1h a2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21l IHZhbGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci0t IAoyLjQzLjAKCg== --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0008-Concurrently-built-index-validation-uses-fresh-sn.patch" Content-Disposition: attachment; filename="v9-0008-Concurrently-built-index-validation-uses-fresh-sn.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddcj7 RnJvbSAxMDM5ODlkY2JlOTE2MDNkYTc1M2I3ZTk2NDdhZDEyZGY4ODhjZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNCBEZWMgMjAyNCAxOToxNzoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgOC85 XSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFwc2hv dHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNvbmN1 cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBvZiBh IHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2YgdXNp bmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdpdGgg eG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9vayBh IGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21lIG91 dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVsZXRl ZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBzbmFw c2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3Mg bm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9uZS4g VGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUgYW5k IHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4LgoKVGhl IGludGVydmFsIGZvciByZXBsYWNpbmcgdGhlIHNuYXBzaG90IGlzIGNvbnRyb2xsZWQgYnkgdGhl IGBWQUxJREFURV9JTkRFWF9TTkFQU0hPVF9SRVNFVF9JTlRFUlZBTGAgY29uc3RhbnQsIHdoaWNo IGlzIGN1cnJlbnRseSBzZXQgdG8gMTAwMCBtaWxsaXNlY29uZHMuCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICB8IDE1ICsrKysrLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgNDUgKysrKysrKysrKysrKysrKysrLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgNyArKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy90cmFuc2FtLmggICAgICAgICAgICAgfCAxNSArKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA2 NiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVAppbmRleCA4MjlkYWQxMTk0ZS4uZDQxNjA5Yzk3Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVApAQCAtMzc1LDYgKzM3NSwxMSBAQCBjb25zdHJhaW50IG9uIHdoaWNoIHVwZGF0 ZXMgY2FuIGJlIEhPVC4gIE90aGVyIHRyYW5zYWN0aW9ucyBtdXN0IGluY2x1ZGUKIHN1Y2ggYW4g aW5kZXggd2hlbiBkZXRlcm1pbmluZyBIT1Qtc2FmZXR5IG9mIHVwZGF0ZXMsIGV2ZW4gdGhvdWdo IHRoZXkKIG11c3QgaWdub3JlIGl0IGZvciBib3RoIGluc2VydGlvbiBhbmQgc2VhcmNoaW5nIHB1 cnBvc2VzLgogCitBbHNvLCBzcGVjaWFsIGF1eGlsaWFyeSBpbmRleCBpcyBjcmVhdGVkIHRoZSBz YW1lIHdheS4gSXQgbWFya2VkIGFzCisicmVhZHkgZm9yIGluc2VydHMiIHdpdGhvdXQgYW55IGFj dHVhbCB0YWJsZSBzY2FuLiBJdHMgcHVycG9zZSBpcyBjb2xsZWN0CituZXcgdHVwbGVzIGluc2Vy dGVkIGludG8gdGFibGUgd2hpbGUgb3VyIHRhcmdldCBpbmRleCBpcyBzdGlsbCAibm90IHJlYWR5 Citmb3IgaW5zZXJ0cyIKKwogV2UgbXVzdCBkbyB0aGlzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJl Y3QgaW5kZXggZW50cmllcy4gIEZvciBleGFtcGxlLAogc3VwcG9zZSB3ZSBhcmUgYnVpbGRpbmcg YW4gaW5kZXggb24gY29sdW1uIFggYW5kIHdlIG1ha2UgYW4gaW5kZXggZW50cnkgZm9yCiBhIG5v bi1IT1QgdHVwbGUgd2l0aCBYPTEuICBUaGVuIHNvbWUgb3RoZXIgYmFja2VuZCwgdW5hd2FyZSB0 aGF0IFggaXMgYW4KQEAgLTM5NCwxNCArMzk5LDE0IEBAIEFzIGFib3ZlLCB3ZSBwb2ludCB0aGUg aW5kZXggZW50cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlCiB1 c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBXZSBtYXJrIHRoZSBpbmRl eCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgot d2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4u ICBUaGVuIHdlIHRha2UKLWEgc2Vjb25kIHJlZmVyZW5jZSBzbmFwc2hvdCBhbmQgdmFsaWRhdGUg dGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBmb3IKLXR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGlu ZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzLiAgQWdhaW4sCi10aGUgaW5kZXggZW50 cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQK K3dlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVu LiAgVGhlbiB2YWxpZGF0ZQordGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBmb3IgdHVwbGVzIG1p c3NpbmcgZnJvbSB0aGUgaW5kZXggaW4gYXV4aWxpYXJ5CitpbmRleCwgYW5kIGluc2VydHMgYW55 IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2libGUgdG8gZnJlc2ggc25hcHNob3QuCitBZ2Fpbiwg dGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWluIHJv b3QgVElEcywgYnV0CiB0aGUgdmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRo ZSBsaXZlIHR1cGxlLgogCiBUaGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhh dCBjb3VsZCBoYXZlIGEgc25hcHNob3Qgb2xkZXIgdGhhbgotdGhlIHNlY29uZCByZWZlcmVuY2Ug c25hcHNob3QgaXMgZmluaXNoZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKK3RoZSBs YXRlc3QgdXNlZCBzbmFwc2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9k eSBpcwogYWxpdmUgYW55IGxvbmdlciB3aG8gY291bGQgbmVlZCB0byBzZWUgYW55IHR1cGxlcyB0 aGF0IG1pZ2h0IGJlIG1pc3NpbmcKIGZyb20gdGhlIGluZGV4LCBhcyB3ZWxsIGFzIGVuc3VyaW5n IHRoYXQgbm8gb25lIGNhbiBzZWUgYW55IGluY29uc2lzdGVudAogcm93cyBpbiBhIGJyb2tlbiBI T1QgY2hhaW4gKHRoZSBmaXJzdCBjb25kaXRpb24gaXMgc3Ryb25nZXIgdGhhbiB0aGUKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGVjZWMzYzFjMDgwLi4xYTA0 MWM1YTc3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0x ODA2LDI3ICsxODA2LDM1IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJZmV0Y2hlZDsKIAlib29sCQkJdHVwbGVzb3J0X2VtcHR5ID0gZmFs c2UsCiAJCQkJCWF1eHR1cGxlc29ydF9lbXB0eSA9IGZhbHNlOworCWluc3RyX3RpbWUJCXNuYXBz aG90VGltZSwKKwkJCQkJY3VycmVudFRpbWU7CiAKIAlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JB Y3RpdmVTbmFwc2hvdCgpKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCisjZGVmaW5lIFZBTElEQVRFX0lOREVYX1NOQVBTSE9UX1JFU0VUX0lOVEVSVkFM CTEwMDAKIAkvKgotCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdp bGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCi0JICogdHVwbGVzLiAgQmV3YXJlISAg VGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29t ZSB0cmFuc2FjdGlvbiBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFw c2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLiAgSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0 cmFuc2FjdGlvbgotCSAqIGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3Qg aW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdo aWNoIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBl eHBlY3Qgc3VjaCB0dXBsZXMgdG8gYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2 YWxpZC4KKwkgKiBOb3cgdGFrZSB0aGUgZmlyc3Qgc25hcHNob3QgdGhhdCB3aWxsIGJlIHVzZWQg YnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQorCSAqIHR1cGxlcy4gV2UgYXJlIGdvaW5nIHRvIHJlcGxh Y2UgaXQgYnkgbmV3ZXIgc25hcHNob3QgZXZlcnkgc28gb2Z0ZW4KKwkgKiB0byBwcm9wYWdhdGUg aG9yaXpvbi4KKwkgKgorCSAqIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90 cyBpbiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uCisJICogYXMgaW4tcHJvZ3Jlc3Mg dGhhdCBvdXIgdGVtcG9yYXJ5IHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQuCisJICoKKwkg KiBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uIGRlbGV0ZWQgdHVwbGVz IGluIHRoZSB0YWJsZSwKKwkgKiB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhlIGluZGV4 OyB5ZXQgdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoCisJICogc2VlIHRoZSBkZWxldGluZyBvbmUg YXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbCBleHBlY3Qgc3VjaCB0dXBsZXMgdG8KKwkgKiBiZSB0 aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgogCSAqCiAJICogV2Ugc29sdmUg dGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8gZXhpdCBi ZWZvcmUKLQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKiB3ZSBtYXJrIHRoZSBp bmRleCBhcyB2YWxpZCwgZm9yIHRoYXQgcmVhc29uIGxpbWl0WCBpcyBzdXBwb3J0ZWQuCiAJICoK IAkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0 aW9ucyBpbiBpbmRleGVzIG1heQogCSAqIG5lZWQgYSBzbmFwc2hvdC4KIAkgKi8KLQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJUHVzaEFjdGl2ZVNu YXBzaG90KHNuYXBzaG90KTsKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHNuYXBzaG90VGltZSk7 CiAJbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CiAKIAkvKgpAQCAtMTg2OCw2ICsxODc2LDIz IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ Ym9vbAkJdHNfaXNudWxsOwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCUlOU1RSX1RJ TUVfU0VUX0NVUlJFTlQoY3VycmVudFRpbWUpOworCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cnJl bnRUaW1lLCBzbmFwc2hvdFRpbWUpOworCQlpZiAoSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoY3Vy cmVudFRpbWUpID49IFZBTElEQVRFX0lOREVYX1NOQVBTSE9UX1JFU0VUX0lOVEVSVkFMKQorCQl7 CisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90 KTsKKwkJCS8qIHRvIG1ha2Ugc3VyZSB3ZSBwcm9wYWdhdGUgeG1pbiAqLworCQkJSW52YWxpZGF0 ZUNhdGFsb2dTbmFwc2hvdCgpOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKworCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNu YXBzaG90KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCS8qIHhtaW4g c2hvdWxkIG5vdCBnbyBiYWNrd2FyZHMsIGJ1dCBqdXN0IGZvciB0aGUgY2FzZSovCisJCQlsaW1p dFhtaW4gPSBUcmFuc2FjdGlvbklkTmV3ZXIobGltaXRYbWluLCBzbmFwc2hvdC0+eG1pbik7CisJ CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHNuYXBzaG90VGltZSk7CisJCX0KKwogCQkvKgogCQkq IEF0dGVtcHQgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20gdGhlIGF1eGlsaWFyeSBzb3J0LiBJ ZiBpdCdzCiAJCSogZW1wdHksIHdlIHNldCBhdXhpbmRleGN1cnNvciB0byBOVUxMLgpAQCAtMjAy MCw3ICsyMDQ1LDcgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCWhlYXBhbV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOwogCiAJLyoKLQkgKiBEcm9w IHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcg b3V0IG90aGVyCisJICogRHJvcCB0aGUgbGF0ZXN0IHNuYXBzaG90LiAgV2UgbXVzdCBkbyB0aGlz IGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgogCSAqIHNuYXBzaG90IGhvbGRlcnMsIGVsc2Ugd2Ug d2lsbCBkZWFkbG9jayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBhbHNvCiAJICogZG9pbmcgQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2VlIG91ciBzbmFwc2hvdCBhcyBv bmUKIAkgKiB0aGV5IG11c3Qgd2FpdCBmb3IuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IDM4MzU1NjAxNDIxLi42MDU1MWY4MmJmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTQ0Miw3ICs0NDIsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogZGVh ZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNvIHdlIGdpdmUgaXQgb25seSB3b3JrX21l bS4KIAkgKgogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBkZWFkIHR1cGxlcyBhcmUg bm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKLQkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwg c25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNuYXBzaG90IGR1cmluZyB0aGUKKwkgKiBz aW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gbGF0ZXN0IHNuYXBzaG90 IGR1cmluZyB0aGUKIAkgKiB2YWxpZGF0aW9uIHBoYXNlLgogCSAqLwogCWlmIChpbmRleEluZm8t PmlpX1VuaXF1ZSAmJiAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmlu ZGV4IDhiMTRmNjZhZmZjLi5iNGRmMmIxZWVlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQ3Miw4 ICszNDcyLDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiBBdCB0aGF0IG1vbWVudCB3ZSBjbGVh ciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1v cmUgcmVxdWlyZWQvCiAgKgotICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hv dCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKLSAqIHRvIHRoaXMgc25hcCwg YnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4KKyAq IFdlIHRoZW4gdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBh Y2NvcmRpbmcKKyAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0 IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4gSW4KKyAqIG9yZGVyIHRvIHByb3BhZ2F0ZSB4bWluIHdl IHJlc2V0IHRoYXQgc25hcHNob3QgZXZlcnkgZmV3IHNvIG9mdGVuLgogICogKEFueSB0dXBsZXMg Y29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZQog ICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVzIGNv bW1pdHRlZCBkZWFkIGJlZm9yZQogICogdGhlIHNuYXAgbmVlZCBub3QgYmUgaW5kZXhlZCwgYmVj YXVzZSB3ZSB3aWxsIHdhaXQgb3V0IGFsbCB0cmFuc2FjdGlvbnMKQEAgLTM0ODYsNyArMzQ4Nyw3 IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogVElEcyBv ZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBq b2luIiBhZ2FpbnN0CiAgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBh dXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKICAqIHRhcmdldCBpbmRleC4gIFRo dXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUK LSAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0 byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogbGF0ZXN0IHNuYXBzaG90IGFyZSBpbiB0aGUgaW5k ZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCiAgKiBwYXJ0aWN1bGFy IG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAqIEJ1aWxkaW5nIGEg dW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5IHRvIGluc2VydCBh CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDAyYjYzNmEwMDUwLi43MWJhZWNlZDUwOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTQzMjgsNyArNDMyOCw3IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCS8qCiAJCSAqIFRoZSBpbmRleCBpcyBub3cgdmFsaWQgaW4gdGhl IHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRseQogCQkgKiBpbnRlcmVzdGluZyB0 dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKLQkJ ICoganVzdCBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3 YWl0IG91dCBhbnkKKwkJICoganVzdCBiZWZvcmUgdGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwg d2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2 ZSBvbGRlciBzbmFwc2hvdHMuCiAJCSAqCiAJCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNu YXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXgg MjhhMmQyODdmZDUuLjkwZDM1ODgwNGU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM1NSw2ICsz NTUsMjEgQEAgTm9ybWFsVHJhbnNhY3Rpb25JZE9sZGVyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNh Y3Rpb25JZCBiKQogCXJldHVybiBiOwogfQogCisvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0 d28gSURzICovCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKK1RyYW5zYWN0aW9uSWROZXdl cihUcmFuc2FjdGlvbklkIGEsIFRyYW5zYWN0aW9uSWQgYikKK3sKKwlpZiAoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKGEpKQorCQlyZXR1cm4gYjsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo YikpCisJCXJldHVybiBhOworCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGEsIGIpKQorCQly ZXR1cm4gYTsKKwlyZXR1cm4gYjsKK30KKwogLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdv IElEcyAqLwogc3RhdGljIGlubGluZSBGdWxsVHJhbnNhY3Rpb25JZAogRnVsbFRyYW5zYWN0aW9u SWROZXdlcihGdWxsVHJhbnNhY3Rpb25JZCBhLCBGdWxsVHJhbnNhY3Rpb25JZCBiKQotLSAKMi40 My4wCgo= --000000000000d0b3b0062a094531 Content-Type: application/octet-stream; name="v9-0009-concurrent-index-build-Remove-PROC_IN_SAFE_IC-opt.patch" Content-Disposition: attachment; filename="v9-0009-concurrent-index-build-Remove-PROC_IN_SAFE_IC-opt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52vddck8 RnJvbSBmNGMwMGFiMGMxMmIyYWY1OWU4MDFkNjZkNjg5ZDIzNzg3MzBhNzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNCBEZWMgMjAyNCAxOTozNjoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjkgOS85 XSBjb25jdXJyZW50IGluZGV4IGJ1aWxkOiBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDCiBvcHRpbWl6 YXRpb24KClJlbW92ZSB0aGUgb3B0aW1pemF0aW9uIHRoYXQgYWxsb3dlZCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgb3RoZXIKY29uY3VycmVudCBidWlsZHMgb2YgInNhZmUiIGlu ZGV4ZXMgKHRob3NlIHdpdGhvdXQgZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcykuClRoaXMgb3B0 aW1pemF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQgd2l0aCB0aGUgbmV3IHNuYXBzaG90IGhhbmRs aW5nIGFwcHJvYWNoCnRoYXQgdXNlcyBwZXJpb2RpY2FsbHkgcmVmcmVzaGVkIHNuYXBzaG90cyBp bnN0ZWFkIG9mIGEgc2luZ2xlIHJlZmVyZW5jZQpzbmFwc2hvdC4KClRoZSBjaGFuZ2UgZ3JlYXRs eSBzaW1wbGlmaWVzIHRoZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGNvZGUgYnk6Ci0gUmVtb3Zp bmcgdGhlIFBST0NfSU5fU0FGRV9JQyBwcm9jZXNzIHN0YXR1cyBmbGFnCi0gUmVtb3ZpbmcgYWxs IHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCkgY2FsbHMgYW5kIHJlbGF0ZWQgbG9naWMKLSBSZW1v dmluZyBzcGVjaWFsIGNhc2UgaGFuZGxpbmcgaW4gR2V0Q3VycmVudFZpcnR1YWxYSURzKCkKLSBS ZW1vdmluZyByZWxhdGVkIHRlc3QgY2FzZXMgYW5kIGluamVjdGlvbiBwb2ludHMKClRoaXMgaXMg cGFydCBvZiBpbXByb3ZpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gYmV0dGVyIGhhbmRs ZSB4bWluCnByb3BhZ2F0aW9uIGR1cmluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTQyICstLS0tLS0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAg fCAgIDIgKy0KIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0ICAgICAgICAgICAgICAgICB8 ICA1MSAtLS0tLS0tCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVp bGQgfCAgIDEgLQogLi4uL2luamVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgICAg IHwgIDI4IC0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMjM0IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IGYwNzZjZWRjYzJjLi4wNDhjN2Q3OTk1YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjg4NiwxMSArMjg4Niw5IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07CiAKIAkv KgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0 aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFy ZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVs IHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJ ICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZv ciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYwppbmRleCA2MDU1MWY4MmJmYS4uYzZmN2U1MjdiNjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTA3LDExICsxOTA3LDkgQEAgX2J0X3BhcmFsbGVs X2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogI2VuZGlmCQkJCQkJ CS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0 YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICog UFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0 aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0g UFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAK IAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3Qg Ki8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZ X1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA3MWJhZWNlZDUwOC4u YWUwNThkYzcwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTYsNyArMTE2LDYg QEAgc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LAogCQkJCQkJCQkJCU9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQljb25zdCBS ZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFydGl0aW9u KE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKIC8qCiAgKiBjYWxsYmFjayBhcmd1bWVudCB0eXBl IGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KCkKQEAgLTQxNiwxMCArNDE1LDcg QEAgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVtICpvcHRzMSwgY29uc3QgRGF0dW0g Km9wdHMyLCBpbnQgbmF0dHMpCiAgKiBsYXp5IFZBQ1VVTXMsIGJlY2F1c2UgdGhleSB3b24ndCBi ZSBmYXplZCBieSBtaXNzaW5nIGluZGV4IGVudHJpZXMKICAqIGVpdGhlci4gIChNYW51YWwgQU5B TFlaRXMsIGhvd2V2ZXIsIGNhbid0IGJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleQogICogbWlnaHQg YmUgd2l0aGluIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBkbyBhcmJpdHJhcnkgb3Bl cmF0aW9ucwotICogbGF0ZXIuKSAgUHJvY2Vzc2VzIHJ1bm5pbmcgQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWQotICogb24gaW5kZXhlcyB0aGF0IGFyZSBu ZWl0aGVyIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbCBhcmUgYWxzbyBzYWZlIHRvCi0gKiBpZ25v cmUsIHNpbmNlIHdlIGtub3cgdGhhdCB0aG9zZSBwcm9jZXNzZXMgd29uJ3QgZXhhbWluZSBhbnkg ZGF0YQotICogb3V0c2lkZSB0aGUgdGFibGUgdGhleSdyZSBpbmRleGluZy4KKyAqIGxhdGVyLikK ICAqCiAgKiBBbHNvLCBHZXRDdXJyZW50VmlydHVhbFhJRHMgbmV2ZXIgcmVwb3J0cyBvdXIgb3du IHZ4aWQsIHNvIHdlIG5lZWQgbm90CiAgKiBjaGVjayBmb3IgdGhhdC4KQEAgLTQ0MCw4ICs0MzYs NyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4sIGJvb2wg cHJvZ3Jlc3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKm9sZF9zbmFwc2hvdHM7CiAKIAlvbGRf c25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwgdHJ1ZSwgZmFsc2Us Ci0JCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTQotCQkJCQkJ CQkJCSAgfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0g fCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkgICZuX29sZF9zbmFwc2hvdHMpOwogCWlmIChw cm9ncmVzcykKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19XQUlURk9S X1RPVEFMLCBuX29sZF9zbmFwc2hvdHMpOwpAQCAtNDYxLDggKzQ1Niw3IEBAIFdhaXRGb3JPbGRl clNuYXBzaG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAogCQkJ bmV3ZXJfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwKIAkJCQkJ CQkJCQkJCQl0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9WQUNVVU0gfCBQ Uk9DX0lOX1ZBQ1VVTQotCQkJCQkJCQkJCQkJCXwgUFJPQ19JTl9TQUZFX0lDLAorCQkJCQkJCQkJ CQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJCQkJCQkJCQkJCSZu X25ld2VyX3NuYXBzaG90cyk7CiAJCQlmb3IgKGogPSBpOyBqIDwgbl9vbGRfc25hcHNob3RzOyBq KyspCiAJCQl7CkBAIC01NzYsNyArNTcwLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ YW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKIAlib29sCQlleGNsdXNpb247CiAJYm9vbAkJ cGFydGl0aW9uZWQ7Ci0JYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9uczsKIAlp bnQxNgkgICAqY29sb3B0aW9uczsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0xMTUzLDEw ICsxMTQ2LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCX0KIAl9CiAKLQkvKiBJcyBp bmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVfcHJvY2Zs YWdzKCkgKi8KLQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9PSBOSUwg JiYKLQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOwotCiAJLyoKIAkgKiBSZXBvcnQg aW5kZXggY3JlYXRpb24gaWYgYXBwcm9wcmlhdGUgKGRlbGF5IHRoaXMgdGlsbCBhZnRlciBtb3N0 IG9mIHRoZQogCSAqIGVycm9yIGNoZWNrcykKQEAgLTE2NDMsMTAgKzE2MzIsNiBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0 byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlz ZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMgbm93IHZp c2libGUsIHNvIHdlIGNhbiByZXBvcnQgdGhlIE9JRC4gIFdoaWxlIG9uIGl0LAogCSAqIGluY2x1 ZGUgdGhlIHJlcG9ydCBmb3IgdGhlIGJlZ2lubmluZyBvZiBwaGFzZSAyLgpAQCAtMTcwMyw5ICsx Njg4LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3VycmVu dCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAo c2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTE3MzUsMTAgKzE3MTcsNiBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4 KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBQaGFzZSAzIG9mIGNv bmN1cnJlbnQgaW5kZXggYnVpbGQKIAkgKgpAQCAtMTc4MCwxMCArMTc1OCw2IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRv IGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkvKgogCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1p Z2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKIAkgKiBoYXZlIGEg dmFsaWQgc25hcHNob3QuCkBAIC0xNzk1LDEwICsxNzY5LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOwotCS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4g dGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lO X1NBRkVfSUMgZmxhZyBoZXJlLgotCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzQpOwpAQCAtMTgxMSw5ICsxNzgxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJLyoKIAkgKiBEcm9wIGF1eGlsaWFyeSBpbmRleC4KIAkgKgotCSAqIEJlY2F1c2Ugd2Ug ZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVl ZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KLQkgKgogCSAqIFVz ZSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1 c2VzIHRoZQogCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCiAJICovCkBAIC0xODIzLDEwICsxNzkwLDYg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3VycmVudCBpbmRl eCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9p bmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCS8qIFdlIHNob3VsZCBub3cg ZGVmaW5pdGVseSBub3QgYmUgYWR2ZXJ0aXNpbmcgYW55IHhtaW4uICovCiAJQXNzZXJ0KE15UHJv Yy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAKQEAgLTM2MjEsNyArMzU4NCw2IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRh YmxlSWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRleEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0 aW9uSWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRzID0gTklMOwpAQCAtMzk3MywxNyArMzkz NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VD TmVzdExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBz YWZldHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4 LT5zYWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYm Ci0JCQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0j aWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJaWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElP Tl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNhZmUiKTsKLQkJZWxzZQotCQkJSU5KRUNUSU9O X1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUiKTsKLSNlbmRpZgotCiAJCWlkeC0+ dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCk7CiAJCWlkeC0+YW1JZCA9IGluZGV4 UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MDQ0LDcgKzM5OTUsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwog CQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOwogCQluZXdpZHgtPmF1eEluZGV4SWQgPSBh dXhJbmRleElkOwotCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJ ZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwogCkBAIC00MTM3 LDExICs0MDg3LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBCZWNh dXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdz IG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCi0JICov Ci0KIAkvKgogCSAqIFBoYXNlIDIgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDE3 MiwxMCArNDExNyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0 X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKiBCdWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0 IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwgaGVhcCBzY2FuLCBqdXN0IGFuIGVtcHR5IGlu ZGV4LiAqLwogCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdp ZHgtPmF1eEluZGV4SWQsIHRydWUpOwogCkBAIC00MTg0LDExICs0MTI1LDYgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAq IEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRo ZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4K LQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoK QEAgLTQyMTMsMTAgKzQxNDksNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKi8KIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcg dG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+c2FmZSkK LQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dy ZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAq IHRhYmxlIGludm9sdmVkLgpAQCAtNDIzNywxMSArNDE2OSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNl IHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhl cmUncyBubwotCSAqIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgot CSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0 Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwpAQCAtNDI2Miwx MCArNDE4OSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25vcmUg dXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdo dCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCiAJCSAqIGhhdmUgYSB2 YWxpZCBzbmFwc2hvdC4KQEAgLTQyOTgsMTAgKzQyMjEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYg KG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJ ICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJl Y3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDMzMCw5ICs0MjQ5LDYgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNl IGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVkCiAJCSAqIGp1c3QgYmVmb3JlIHRo ZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55CiAJCSAqIHRy YW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgotCQkgKgotCQkgKiBC ZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4gdGhpcyB0cmFuc2FjdGlv biwKLQkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcg aGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQp OwpAQCAtNDM1NCwxMyArNDI3MCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJSU5KRUNU SU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIpOwog CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1c2UgdGhpcyB0cmFu c2FjdGlvbiBvbmx5IGRvZXMgY2F0YWxvZyBtYW5pcHVsYXRpb25zIGFuZCBkb2Vzbid0IGRvCi0J ICogYW55IGluZGV4IG9wZXJhdGlvbnMsIHdlIGNhbiBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBm bGFnIGhlcmUKLQkgKiB1bmNvbmRpdGlvbmFsbHkuCi0JICovCi0Jc2V0X2luZGV4c2FmZV9wcm9j ZmxhZ3MoKTsKLQogCWZvcmJvdGgobGMsIGluZGV4SWRzLCBsYzIsIG5ld0luZGV4SWRzKQogCXsK IAkJUmVpbmRleEluZGV4SW5mbyAqb2xkaWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQ0MTYsMTIgKzQz MjUsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIFdoaWxlIHdlIGNv dWxkIHNldCBQUk9DX0lOX1NBRkVfSUMgaWYgYWxsIGluZGV4ZXMgcXVhbGlmaWVkLCB0aGVyZSdz IG5vCi0JICogcmVhbCBuZWVkIGZvciB0aGF0LCBiZWNhdXNlIHdlIG9ubHkgYWNxdWlyZSBhbiBY aWQgYWZ0ZXIgdGhlIHdhaXQgaXMKLQkgKiBkb25lLCBhbmQgdGhhdCBsYXN0cyBmb3IgYSB2ZXJ5 IHNob3J0IHBlcmlvZC4KLQkgKi8KLQogCS8qCiAJICogUGhhc2UgNSBvZiBSRUlOREVYIENPTkNV UlJFTlRMWQogCSAqCkBAIC00NDgzLDEyICs0Mzg2LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJl aW4KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyoKLQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQgUFJPQ19JTl9TQUZFX0lDIGlmIGFs bCBpbmRleGVzIHF1YWxpZmllZCwgdGhlcmUncyBubwotCSAqIHJlYWwgbmVlZCBmb3IgdGhhdCwg YmVjYXVzZSB3ZSBvbmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVyIHRoZSB3YWl0IGlzCi0JICogZG9u ZSwgYW5kIHRoYXQgbGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBwZXJpb2QuCi0JICovCi0KIAkvKgog CSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDc0OCwzNiArNDY0 NSwzIEBAIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwgYm9vbCBuZXd2YWwp CiAJdGFibGVfY2xvc2UoY2xhc3NSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCi0vKgotICog U2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBpbiBNeVByb2MtPnN0YXR1c0ZsYWdzLgotICoK LSAqIFdoZW4gZG9pbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMsIHdlIGNhbiBzZXQgdGhpcyBm bGFnCi0gKiB0byB0ZWxsIG90aGVyIHByb2Nlc3NlcyBjb25jdXJyZW50bHkgcnVubmluZyBDUkVB VEUKLSAqIElOREVYIENPTkNVUlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWSB0byBpZ25v cmUgdXMgd2hlbgotICogZG9pbmcgdGhlaXIgd2FpdHMgZm9yIGNvbmN1cnJlbnQgc25hcHNob3Rz LiAgT24gb25lIGhhbmQgaXQKLSAqIGF2b2lkcyBwb2ludGxlc3NseSB3YWl0aW5nIGZvciBhIHBy b2Nlc3MgdGhhdCdzIG5vdCBpbnRlcmVzdGluZwotICogYW55d2F5OyBidXQgbW9yZSBpbXBvcnRh bnRseSBpdCBhdm9pZHMgZGVhZGxvY2tzIGluIHNvbWUgY2FzZXMuCi0gKgotICogVGhpcyBjYW4g YmUgZG9uZSBzYWZlbHkgb25seSBmb3IgaW5kZXhlcyB0aGF0IGRvbid0IGV4ZWN1dGUgYW55Ci0g KiBleHByZXNzaW9ucyB0aGF0IGNvdWxkIGFjY2VzcyBvdGhlciB0YWJsZXMsIHNvIGluZGV4IG11 c3Qgbm90IGJlCi0gKiBleHByZXNzaW9uYWwgbm9yIHBhcnRpYWwuICBDYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIG9ubHkgY2FsbGluZwotICogdGhpcyByb3V0aW5lIHdoZW4gdGhhdCBhc3N1bXB0 aW9uIGhvbGRzIHRydWUuCi0gKgotICogKFRoZSBmbGFnIGlzIHJlc2V0IGF1dG9tYXRpY2FsbHkg YXQgdHJhbnNhY3Rpb24gZW5kLCBzbyBpdCBtdXN0IGJlCi0gKiBzZXQgZm9yIGVhY2ggdHJhbnNh Y3Rpb24uKQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQKLXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KHZvaWQpCi17Ci0JLyoKLQkgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgaW5z dGFsbGluZyB4aWQgb3IgeG1pbiBpbiBNeVByb2M7Ci0JICogb3RoZXJ3aXNlLCBjb25jdXJyZW50 IHByb2Nlc3NlcyBjb3VsZCBzZWUgYW4gWG1pbiB0aGF0IG1vdmVzIGJhY2t3YXJkcy4KLQkgKi8K LQlBc3NlcnQoTXlQcm9jLT54aWQgPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKLQkJICAgTXlQ cm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKLQotCUxXTG9ja0FjcXVpcmUoUHJv Y0FycmF5TG9jaywgTFdfRVhDTFVTSVZFKTsKLQlNeVByb2MtPnN0YXR1c0ZsYWdzIHw9IFBST0Nf SU5fU0FGRV9JQzsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tNeVByb2MtPnBneGFjdG9mZl0g PSBNeVByb2MtPnN0YXR1c0ZsYWdzOwotCUxXTG9ja1JlbGVhc2UoUHJvY0FycmF5TG9jayk7Ci19 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvYy5oCmluZGV4IDVhM2RkNWQyZDQwLi5hOGVlNDEyMzk3YSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j LmgKQEAgLTU2LDEwICs1Niw2IEBAIHN0cnVjdCBYaWRDYWNoZQogICovCiAjZGVmaW5lCQlQUk9D X0lTX0FVVE9WQUNVVU0JMHgwMQkvKiBpcyBpdCBhbiBhdXRvdmFjIHdvcmtlcj8gKi8KICNkZWZp bmUJCVBST0NfSU5fVkFDVVVNCQkweDAyCS8qIGN1cnJlbnRseSBydW5uaW5nIGxhenkgdmFjdXVt ICovCi0jZGVmaW5lCQlQUk9DX0lOX1NBRkVfSUMJCTB4MDQJLyogY3VycmVudGx5IHJ1bm5pbmcg Q1JFQVRFIElOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVgKLQkJCQkJ CQkJCQkgKiBDT05DVVJSRU5UTFkgb24gbm9uLWV4cHJlc3Npb25hbCwKLQkJCQkJCQkJCQkgKiBu b24tcGFydGlhbCBpbmRleCAqLwogI2RlZmluZQkJUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQJ MHgwOAkvKiBzZXQgYnkgYXV0b3ZhYyBvbmx5ICovCiAjZGVmaW5lCQlQUk9DX0lOX0xPR0lDQUxf REVDT0RJTkcJMHgxMAkvKiBjdXJyZW50bHkgZG9pbmcgbG9naWNhbAogCQkJCQkJCQkJCQkJICog ZGVjb2Rpbmcgb3V0c2lkZSB4YWN0ICovCkBAIC02OSwxMyArNjUsMTMgQEAgc3RydWN0IFhpZENh Y2hlCiAKIC8qIGZsYWdzIHJlc2V0IGF0IEVPWGFjdCAqLwogI2RlZmluZQkJUFJPQ19WQUNVVU1f U1RBVEVfTUFTSyBcCi0JKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9TQUZFX0lDIHwgUFJPQ19W QUNVVU1fRk9SX1dSQVBBUk9VTkQpCisJKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19WQUNVVU1fRk9S X1dSQVBBUk9VTkQpCiAKIC8qCiAgKiBYbWluLXJlbGF0ZWQgZmxhZ3MuIE1ha2Ugc3VyZSBhbnkg ZmxhZ3MgdGhhdCBhZmZlY3QgaG93IHRoZSBwcm9jZXNzJyBYbWluCiAgKiB2YWx1ZSBpcyBpbnRl cnByZXRlZCBieSBWQUNVVU0gYXJlIGluY2x1ZGVkIGhlcmUuCiAgKi8KLSNkZWZpbmUJCVBST0Nf WE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lOX1NBRkVfSUMpCisjZGVmaW5lCQlQ Uk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNKQogCiAvKgogICogV2UgYWxsb3cgYSBsaW1p dGVkIG51bWJlciBvZiAid2VhayIgcmVsYXRpb24gbG9ja3MgKEFjY2Vzc1NoYXJlTG9jaywKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQppbmRleCA3Mzg5M2QzNTFi Yi4uYmMwYTA2YTEyNzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFr ZWZpbGUKQEAgLTEwLDcgKzEwLDcgQEAgRVhURU5TSU9OID0gaW5qZWN0aW9uX3BvaW50cwogREFU QSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0MgPSAiaW5qZWN0aW9uX3Bv aW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1SRUdSRVNTID0gaW5qZWN0 aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2ljX3Jlc2V0X3NuYXBzaG90cworUkVHUkVTUyA9IGlu amVjdGlvbl9wb2ludHMgY2ljX3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBh dGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMg aW5wbGFjZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv ZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBkYjhkZTRiYmU4NS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKKysrIC9kZXYvbnVsbApAQCAt MSw1MSArMCwwIEBACi0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBF WFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0tIENoZWNrIHNhZmV0eSBvZiBpbmRleGVzIHdp dGggcHJlZGljYXRlcyBhbmQgZXhwcmVzc2lvbnMuCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19z ZXRfbG9jYWwoKTsKLSBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUn LCAnbm90aWNlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVB VEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRp bWVzdGFtcCk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9zaW1wbGUgT04gcmVpbmRleF9pbmou dGJsKGkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwciBPTiByZWluZGV4X2luai50Ymwo QUJTKGkpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3ByZWQgT04gcmVpbmRleF9pbmoudGJs KGkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByX3By ZWQgT04gcmVpbmRleF9pbmoudGJsKGFicyhpKSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLVJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9zaW1wbGU7Ci1OT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LXNh ZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByOwotTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5k X3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVp bmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWlu ZGV4X2luai5pbmRfZXhwcl9wcmVkOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotLS0gQ2xlYW51cAotU0VM RUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtc2FmZScpOwot IGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAot KDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZScpOwotIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsK LURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50 czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRl eCBmMjg4NjMzZGE0Zi4uNzNjYjVlOTJmZGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM0LDcgKzM0LDYgQEAgdGVzdHMgKz0gewogICAn cmVncmVzcyc6IHsKICAgICAnc3FsJzogWwogICAgICAgJ2luamVjdGlvbl9wb2ludHMnLAotICAg ICAgJ3JlaW5kZXhfY29uYycsCiAgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwK ICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAvICdz cmMvdGVzdC9yZWdyZXNzJ10sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDZjZjIxMWU2ZDVkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCAr MCwwIEBACi0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKLQotLS0gQ2hlY2sgc2FmZXR5IG9mIGluZGV4ZXMgd2l0aCBw cmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5k ZXgtc2FmZScsICdub3RpY2UnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVp bmRleC1jb25jLWluZGV4LW5vdC1zYWZlJywgJ25vdGljZScpOwotCi1DUkVBVEUgU0NIRU1BIHJl aW5kZXhfaW5qOwotQ1JFQVRFIFRBQkxFIHJlaW5kZXhfaW5qLnRibChpIGludCBwcmltYXJ5IGtl eSwgdXBkYXRlZF9hdCB0aW1lc3RhbXApOwotCi1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9zaW1w bGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwciBP TiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3ByZWQg T04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5JUVVF IElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGFicyhpKSkgV0hFUkUgbW9k KGksIDIpID0gMDsKLQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5k X3NpbXBsZTsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHBy OwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcl9wcmVkOwotCi0tLSBD bGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRl eC1zYWZlJyk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZScpOwotRFJPUCBUQUJMRSByZWluZGV4X2luai50Ymw7Ci1EUk9QIFNDSEVN QSByZWluZGV4X2luajsKLQotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIu NDMuMAoK --000000000000d0b3b0062a094531--