Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKNep-000uRr-08 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 May 2026 21:50:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wKNen-00ECfU-35 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 May 2026 21:50:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKNen-00ECfM-0v for pgsql-hackers@lists.postgresql.org; Tue, 05 May 2026 21:50:21 +0000 Received: from mail-oo1-xc36.google.com ([2607:f8b0:4864:20::c36]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wKNej-00000000OHs-2gRd for pgsql-hackers@lists.postgresql.org; Tue, 05 May 2026 21:50:20 +0000 Received: by mail-oo1-xc36.google.com with SMTP id 006d021491bc7-679b072ed3aso2751582eaf.1 for ; Tue, 05 May 2026 14:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778017817; cv=none; d=google.com; s=arc-20240605; b=Bn22CJMaoy5NCI+1RR8SGJv3NztDqlKicHelDs1DhfjykS1Suac3+OPe1VP35ic+Dn zGznIunWDvkxMu+Su5ck3wk727mDPj0m637DPADq8CgYEnV+tEQlgdP4/gltsZn2bVvH blG+dc/eivdwmwm5EvLFpSS12TrOw++W+GKvQtXsqio4LZgukkJxP5DaQ4BjT1chHInp /GqxphFTEs9npNP+Jf40YhR5wg8MMX5RVQQysyzppe15yrVvehl5i7rneXXOTKT8hUED JfkHjrCzDsdhH9xqtgtRYfdgl2Hvb20Ze8I+1+dym5HieVNTj+RAkqG6LRoIIUyypsld wPEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=2XPcdBbAfbE2BCB1gow06ZLbfSWCBrvEY7Fh/Ya44K0=; fh=vwAsXgxA6Hs3tSOMbHXKVFJJF3h36baf2tyx3wynszI=; b=NiRJcqk5cOvAlcHFdMKSQTw35D7XwIKjhSo2/U4hUYXrE/l/uGMJujvglGbpKcJm0S Hp75XSSPtejWXpdgX38TR0Q8Oc7lWFnCh1dbx0XTHxmEjkeiLxAgfwxpNBmfWGHjpBr+ +uXwxTwBF2kdA4Rtx1GIsRNONzZGRu+3D7quDhGiI1MnoFDU4LDd3zZ3NAd9+omjBZhn iT2B42byGIqOboY+dM/MFBjjjHQRwdj6mi+6BbuE9lli5bFFZhX3nNjTptbD4VlWD+24 uTgFzYM/u72DYaA1Z8tjcfMrDhcpNsPGHWfYdVY1YTMKIU2yPI1NyuczDgafNJ9zC6BX Yz9w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20251104.gappssmtp.com; s=20251104; t=1778017817; x=1778622617; darn=lists.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=2XPcdBbAfbE2BCB1gow06ZLbfSWCBrvEY7Fh/Ya44K0=; b=HLI61vBKQXqErdiY+mG6QVf4v5CVDMnF2md8Eu1a9fFrMl/+5X17lRllX5KlJHjceI fONLrmKqtEO8XZNj4tA0gXNPwhZ5kEY877WNx6ot0RCYo1w4st/6jqpVAQm75NUw93Dl sh1hLTacp+zgQrgAyvthvETBHdY2qFmC5Vd7xFVm5jOvSgvFKNZrBGcKqgBckGSKmfbE YecFhzG8ISin7ywQHXiGR8P7VjMktLIGehP6s4ukoohvcRSrKkfrrDARLcwAVVhsi468 z31oebQ+l0Wrx2/Hdin22wLBgdMRbsMKCVaPFJjfg3zKtdc/7h3wkYZ/xe64ZbKx5GE3 NuTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778017817; x=1778622617; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2XPcdBbAfbE2BCB1gow06ZLbfSWCBrvEY7Fh/Ya44K0=; b=Knar6aRYWioS3gGo18NC7tF4bAWNFc9sf1a86fQ2Ho/LgfJm/mvsqhisWZl+O2R95R gUvVh80k17HRvZjdzDnoN3BZ3CqJoL1C9nJxiM51SGZfUFbDMNM1NjC+0HVOfzya3Qs8 IhtVYM37i7lVfQ/cnR2RdCon3EuSHxkYjAjR6PrBEyQ02GTu+VcqRGq9I4e/mE6bjF+n BVqD/+742xebqvOXnZ4QLSH2szHudkSIGjzx2O7M8sigBnE9eBem2X+5bI1mb88vKwmq 0poOPmAABInrxbYsokw69jYotfFnqdrWrfw7RJ23UJ2Yb15PKNcr4S2r41xQosVpB2VG sNkw== X-Forwarded-Encrypted: i=1; AFNElJ/P8RrttmGDrCVVgeGJXgRbNUAO2R2T3KVKKN5HBFmEu6vVAwTxQSI8Ko7SJQdm2D8eNAYp3siDCrXlTuzK@lists.postgresql.org X-Gm-Message-State: AOJu0YyGlnQhTrOckUVh44FMxfa4lzuD1hp7BPXCVrU9MteZqmVSF1Ut ze4HgS0+AHmte43XVmtwgPIAZbO35CMUvwm8oBsrCgVPvImNNwTmXQ3U4anihciczTFt03BbGhe asv9NsaQ1Gtz9rDZlKEkUM1rEO3bMzJsg61G4V9xbrBvfjoGN/el9lf8= X-Gm-Gg: AeBDietaS5oY8nsjgANokFqJ+7dpEJrrJs1NIXc1R4HlBU8GThWHfLeb44ie2lFT0De qGL4lgagViarYqnU7qj2eQd+SY+8irC8ukjZDDhwFojcstO/7IYbZZYTXx+oLJQ4PRe1MIPxpjD lmKCsOvNdIe196DP9CWaauLNnLUXJPtXB3hFEVN53PaprwSuNLGaByff4gUvVzyd3ZJdRNrvEV2 cPG6k+N7hamqWzXgSMp/HlpMTR1cwXOY8t79WDNgsC2EO86EfzXxk/ToFgcD6m1UxZrAxVxJN/3 VHiZO5vIxMheSXI= X-Received: by 2002:a05:6820:1898:b0:694:9e10:fdce with SMTP id 006d021491bc7-69998c9fbf1mr427921eaf.4.1778017817581; Tue, 05 May 2026 14:50:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Tue, 5 May 2026 14:50:05 -0700 X-Gm-Features: AVHnY4Ka4lopwhTkH2PcSl-XP83efFxDnbytaoYlDAEQ-A1e5aF4QIe5bN6bfNQ Message-ID: Subject: Re: FOR PORTION OF does not recompute GENERATED STORED columns that depend on the range column To: jian he Cc: SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000006c08710651190870" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006c08710651190870 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 22, 2026 at 11:03=E2=80=AFAM Paul A Jungwirth wrote: > > Good catch! I removed that line in v7 (attached). I also included your > test change to compute the range len by hand. Also a rebase was > necessary after d3bba04154. This needed a rebase. v8 attached. Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com --0000000000006c08710651190870 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0001-Fix-some-problems-with-UPDATE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v8-0001-Fix-some-problems-with-UPDATE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mot5vylc0 RnJvbSA4MjRjM2YzYWYwZjFlZDI1NTI0MWNjZmY3NGUyNWEwOGJkYTJlODE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTAgQXByIDIwMjYgMTc6MDE6MTIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY4 XSBGaXggc29tZSBwcm9ibGVtcyB3aXRoIFVQREFURSBGT1IgUE9SVElPTiBPRgoKLSBGaXhlZCBp bnNlcnRpbmcgbGVmdG92ZXJzIHdpdGggdHJhZGl0aW9uYWwgdGFibGUgaW5oZXJpdGFuY2UuIFNp bmNlIHRoZXJlIGlzCiAgbm8gdHVwbGUgcm91dGluZywgd2UgbXVzdCBhZGQgdGhlbSBkaXJlY3Rs eSB0byB0aGUgY2hpbGQgdGFibGUuIEFsc28gdGhpcwogIHByZXNlcnZlcyBleHRyYSBjb2x1bW5z IGluIHRoYXQgdGFibGUuCi0gQWRkZWQgRXhlY0luaXRGb3JQb3J0aW9uT2YuIFRoaXMgc2V0cyB1 cCBleGVjdXRvciBzdGF0ZSBmb3IgY2hpbGQgcGFydGl0aW9ucy4KICBQcmV2aW91c2x5IHdlIGRp ZCB0aGlzIGluIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMsIGJ1dCBkb2luZyBpdCBlYXJsaWVy IGxldHMKICB1cyB1c2UgdGhlIGNoaWxkLT5wYXJlbnQgYXR0ciBtYXBwaW5nIGluIHRoZSBmaXhl cyBiZWxvdy4KLSBNYWRlIHN1cmUgR0VORVJBVEVEIFNUT1JFRCBjb2x1bW5zIHRoYXQgZGVwZW5k IG9uIHRoZSBhcHBsaWNhdGlvbi10aW1lIGNvbHVtbgogIGdldCB1cGRhdGVkLiBXZSBleGNsdWRl IHRoYXQgY29sdW1uIGZyb20gdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHNldCwgYmVjYXVzZSBpdAog IGRvZXMgbm90IHJlcXVpcmUgcGVybWlzc2lvbnMuIEJ1dCB0aGVuIHdlIG11c3QgcmVtZW1iZXIg dG8gYWRkIGl0IGxhdGVyLiBUaGlzCiAgYWxzbyBmaXhlcyBhIHNpbWlsYXIgcHJvYmxlbSB3aXRo IFVQREFURSBPRiB0cmlnZ2Vycy4KLSBDbGFyaWZpZWQgYSBjb21tZW50IGFib3V0IHRoZSByYW5n ZXR5cGUgc3RvcmVkIGluIEZvclBvcnRpb25PZlN0YXRlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUhnK1FEY2Q9dDY5Z0xmOXlRZXhPMDdFSjJteDBaNzBORkhvNmg5NFgxRURB PWhNMGdAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhn K1FEY3NYc1VWYVorSndNMDJ5RFJRRWk9Y0xfclRIX1JPTERZZ094MDA0c1F1N0FAbWFpbC5nbWFp bC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICB8 ICAzNCArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwg MTQ1ICsrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yu b3V0IHwgMjIxICsrKysrKysrKysrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9w b3J0aW9uX29mLnNxbCAgICAgIHwgIDk0ICsrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDM5OCBp bnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmlu ZGV4IDFlYjZiOWYxZjQwLi4zNjM4MzBmMDE1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMK QEAgLTE0MDgsNiArMTQwOCw3IEBAIEJpdG1hcHNldCAqCiBFeGVjR2V0VXBkYXRlZENvbHMoUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICplc3RhdGUpCiB7CiAJUlRFUGVybWlzc2lvbklu Zm8gKnBlcm1pbmZvID0gR2V0UmVzdWx0UlRFUGVybWlzc2lvbkluZm8ocmVsaW5mbywgZXN0YXRl KTsKKwlCaXRtYXBzZXQgKnVwZGF0ZWRDb2xzID0gcGVybWluZm8tPnVwZGF0ZWRDb2xzOwogCiAJ aWYgKHBlcm1pbmZvID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwpAQCAtMTQxOCwxMCArMTQxOSwz OSBAQCBFeGVjR2V0VXBkYXRlZENvbHMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICpl c3RhdGUpCiAJCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dldFJvb3RUb0NoaWxkTWFw KHJlbGluZm8sIGVzdGF0ZSk7CiAKIAkJaWYgKG1hcCkKLQkJCXJldHVybiBleGVjdXRlX2F0dHJf bWFwX2NvbHMobWFwLT5hdHRyTWFwLCBwZXJtaW5mby0+dXBkYXRlZENvbHMpOworCQkJdXBkYXRl ZENvbHMgPSBleGVjdXRlX2F0dHJfbWFwX2NvbHMobWFwLT5hdHRyTWFwLCB1cGRhdGVkQ29scyk7 CiAJfQogCi0JcmV0dXJuIHBlcm1pbmZvLT51cGRhdGVkQ29sczsKKwkvKgorCSAqIEZvciBVUERB VEUgLi4uIEZPUiBQT1JUSU9OIE9GLCB0aGUgcmFuZ2UgY29sdW1uIGlzIGJlaW5nIG1vZGlmaWVk CisJICogKG5hcnJvd2VkIHZpYSBpbnRlcnNlY3Rpb24pLCBidXQgaXQgaXMgbm90IGluY2x1ZGVk IGluIHVwZGF0ZWRDb2xzCisJICogYmVjYXVzZSB0aGUgdXNlciBkb2VzIG5vdCBuZWVkIFVQREFU RSBwZXJtaXNzaW9uIG9uIGl0LiBOb3cgbWFudWFseQorCSAqIGFkZCBpdCB0byB1cGRhdGVkQ29s cy4gU2luY2UgcmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZUF0dG5vIGlzIGFscmVhZHkKKwkgKiBt YXBwZWQgZm9yIHRoZSBjaGlsZCBwYXJ0aXRpb24sIHdlIGhhdmUgdG8gYWRkIGl0IGFmdGVyIHRo ZSBtYXBwaW5nIGp1c3QKKwkgKiBhYm92ZS4gQWxzbyB0aGF0IG1ha2VzIGl0IHVuc2FmZSB0byBt dXRhdGUgcGVybWluZm8uIFhYWDogQWx3YXlzIGFkZCB0aGUKKwkgKiB1bm1hcHBlZCBhdHRubyBp bnN0ZWFkIChiZWZvcmUgbWFwcGluZyksIGFuZCBtdXRhdGUgcGVybWluZm8sIHRvIGF2b2lkCisJ ICogcmVwZWF0ZWQgYWxsb2NhdGlvbnM/CisJICovCisJaWYgKHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZikKKwl7CisJCUF0dHJOdW1iZXIJcmFuZ2VBdHRubyA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZi0+ZnBfcmFuZ2VBdHRubzsKKworCQlpZiAoIWJtc19pc19tZW1iZXIocmFuZ2VBdHRubyAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgICB1cGRhdGVkQ29s cykpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKKworCQkJb2xkQ29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkJCXVwZGF0 ZWRDb2xzID0KKwkJCQlibXNfYWRkX21lbWJlcih1cGRhdGVkQ29scywKKwkJCQkJCQkgICByYW5n ZUF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKKwkJfQorCX0KKworCXJldHVybiB1cGRhdGVk Q29sczsKIH0KIAogLyogUmV0dXJuIGEgYml0bWFwIHJlcHJlc2VudGluZyBnZW5lcmF0ZWQgY29s dW1ucyBiZWluZyB1cGRhdGVkICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CmluZGV4IDRjYjA1N2NhNGY5Li44MWY1YWZjOWZiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKQEAgLTE5OCw2ICsxOTgsOCBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3Qg KkV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogc3RhdGlj IHZvaWQgRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBmaXJlQlNUcmlnZ2VycyhNb2Rp ZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIGZpcmVBU1RyaWdnZXJzKE1vZGlmeVRh YmxlU3RhdGUgKm5vZGUpOworc3RhdGljIHZvaWQgRXhlY0luaXRGb3JQb3J0aW9uT2YoTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCSBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvKTsKIAogCiAvKgpAQCAtMTQwOSw3ICsxNDExLDYgQEAgRXhlY0Zv clBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CiAJTW9kaWZ5VGFibGUgKm5v ZGUgPSAoTW9kaWZ5VGFibGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKIAlGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7 Ci0JQXR0ck51bWJlcglyYW5nZUF0dG5vOwogCURhdHVtCQlvbGRSYW5nZTsKIAlUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGU7CiAJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlOwpAQCAtMTQyNCwz NyArMTQyNSwxMCBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4 dCAqY29udGV4dCwKIAlSZXR1cm5TZXRJbmZvIHJzaTsKIAlib29sCQlkaWRJbml0ID0gZmFsc2U7 CiAJYm9vbAkJc2hvdWxkRnJlZSA9IGZhbHNlOworCVJlc3VsdFJlbEluZm8gKnJvb3RSZWxJbmZv ID0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm87CiAKIAlMT0NBTF9GQ0lORk8oZmNpbmZvLCAy KTsKIAotCWlmICghcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mKQotCXsKLQkJLyoKLQkJ ICogSWYgd2UgZG9uJ3QgaGF2ZSBhIEZvclBvcnRpb25PZlN0YXRlIHlldCwgd2UgbXVzdCBiZSBh IHBhcnRpdGlvbgotCQkgKiBjaGlsZCBiZWluZyBoaXQgZm9yIHRoZSBmaXJzdCB0aW1lLiBNYWtl IGEgY29weSBmcm9tIHRoZSByb290LCB3aXRoCi0JCSAqIG91ciBvd24gVHVwbGVUYWJsZVNsb3Qu IFdlIGRvIHRoaXMgbGF6aWx5IHNvIHRoYXQgd2UgZG9uJ3QgcGF5IHRoZQotCQkgKiBwcmljZSBv ZiB1bnVzZWQgcGFydGl0aW9ucy4KLQkJICovCi0JCUZvclBvcnRpb25PZlN0YXRlICpsZWFmU3Rh dGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7Ci0KLQkJaWYgKCFtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mbykKLQkJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9uIGJ1dCByaV9m b3JQb3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOwotCi0JCWZwb1N0YXRlID0gbXRzdGF0ZS0+ cm9vdFJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKLQkJQXNzZXJ0KGZwb1N0YXRlKTsK LQotCQlsZWFmU3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZwb1N0YXRlLT5mcF9yYW5nZU5hbWU7Ci0J CWxlYWZTdGF0ZS0+ZnBfcmFuZ2VUeXBlID0gZnBvU3RhdGUtPmZwX3JhbmdlVHlwZTsKLQkJbGVh ZlN0YXRlLT5mcF9yYW5nZUF0dG5vID0gZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm87Ci0JCWxlYWZT dGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSBmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2U7Ci0JCWxlYWZT dGF0ZS0+ZnBfTGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7Ci0JCS8qIEVhY2ggcGFy dGl0aW9uIG5lZWRzIGEgc2xvdCBtYXRjaGluZyBpdHMgdHVwbGUgZGVzY3JpcHRvciAqLwotCQls ZWFmU3RhdGUtPmZwX0V4aXN0aW5nID0KLQkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJCQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVw bGVUYWJsZSk7Ci0KLQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbGVhZlN0YXRl OwotCX0KIAlmcG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlvbGR0 dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBfRXhpc3Rpbmc7CiAJbGVmdG92ZXJTbG90ID0gZnBvU3Rh dGUtPmZwX0xlZnRvdmVyOwpAQCAtMTQ3NSwyMSArMTQ0OSwxMyBAQCBFeGVjRm9yUG9ydGlvbk9m TGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlpZiAoIXRhYmxlX3R1cGxl X2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywgdHVwbGVp ZCwgU25hcHNob3RBbnksIG9sZHR1cGxlU2xvdCkpCiAJCWVsb2coRVJST1IsICJmYWlsZWQgdG8g ZmV0Y2ggdHVwbGUgZm9yIEZPUiBQT1JUSU9OIE9GIik7CiAKLQkvKgotCSAqIEdldCB0aGUgb2xk IHJhbmdlIG9mIHRoZSByZWNvcmQgYmVpbmcgdXBkYXRlZC9kZWxldGVkLiBNdXN0IHJlYWQgd2l0 aAotCSAqIHRoZSBhdHRubyBvZiB0aGUgbGVhZiBwYXJ0aXRpb24gYmVpbmcgdXBkYXRlZC4KLQkg Ki8KLQotCXJhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubzsKLQlp ZiAocmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCi0JCW1hcCA9IEV4ZWNHZXRD aGlsZFRvUm9vdE1hcChyZXN1bHRSZWxJbmZvKTsKLQlpZiAobWFwICE9IE5VTEwpCi0JCXJhbmdl QXR0bm8gPSBtYXAtPmF0dHJNYXAtPmF0dG51bXNbcmFuZ2VBdHRubyAtIDFdOwogCXNsb3RfZ2V0 YWxsYXR0cnMob2xkdHVwbGVTbG90KTsKIAotCWlmIChvbGR0dXBsZVNsb3QtPnR0c19pc251bGxb cmFuZ2VBdHRubyAtIDFdKQorCS8qIEdldCB0aGUgb2xkIHJhbmdlIG9mIHRoZSByZWNvcmQgYmVp bmcgdXBkYXRlZC9kZWxldGVkLiAqLworCisJaWYgKG9sZHR1cGxlU2xvdC0+dHRzX2lzbnVsbFtm cG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyAtIDFdKQogCQllbG9nKEVSUk9SLCAiZm91bmQgYSBOVUxM IHJhbmdlIGluIGEgdGVtcG9yYWwgdGFibGUiKTsKLQlvbGRSYW5nZSA9IG9sZHR1cGxlU2xvdC0+ dHRzX3ZhbHVlc1tyYW5nZUF0dG5vIC0gMV07CisJb2xkUmFuZ2UgPSBvbGR0dXBsZVNsb3QtPnR0 c192YWx1ZXNbZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gLSAxXTsKIAogCS8qCiAJICogR2V0IHRo ZSByYW5nZSdzIHR5cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29ydGggY2FjaGluZyBmb3IgdGhl IHdob2xlCkBAIC0xNTI3LDEyICsxNDkzLDIwIEBAIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBm YWxzZTsKIAogCS8qCi0JICogSWYgdGhlcmUgYXJlIHBhcnRpdGlvbnMsIHdlIG11c3QgaW5zZXJ0 IGludG8gdGhlIHJvb3QgdGFibGUsIHNvIHdlIGdldAotCSAqIHR1cGxlIHJvdXRpbmcuIFdlIGFs cmVhZHkgc2V0IHVwIGxlZnRvdmVyU2xvdCB3aXRoIHRoZSByb290IHR1cGxlCi0JICogZGVzY3Jp cHRvci4KKwkgKiBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBtdXN0IHJlYWQgbGVmdG92ZXJz IHdpdGggdGhlIHR1cGxlIGRlc2NyaXB0b3IKKwkgKiBvZiB0aGUgY2hpbGQgdGFibGUsIGJ1dCBp bnNlcnQgaW50byB0aGUgcm9vdCB0YWJsZSB0byBlbmFibGUgdHVwbGUKKwkgKiByb3V0aW5nLiAg U28gbGVmdG92ZXJTbG90IGlzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgcm9vdCdzIHR1cGxlCisJICog ZGVzY3JpcHRvci4gIEhvd2V2ZXIsIGZvciB0cmFkaXRpb25hbCB0YWJsZSBpbmhlcml0YW5jZSwg d2UgZG9uJ3QgbmVlZAorCSAqIHR1cGxlIHJvdXRpbmcgYW5kIGp1c3QgaW5zZXJ0IGRpcmVjdGx5 IGludG8gdGhlIGNoaWxkIHRhYmxlIHRvIHByZXNlcnZlCisJICogY2hpbGQtc3BlY2lmaWMgY29s dW1ucy4gIEluIHRoYXQgY2FzZSwgbGVmdG92ZXJTbG90IHVzZXMgdGhlIGNoaWxkJ3MKKwkgKiAo cmVzdWx0UmVsSW5mbykgdHVwbGUgZGVzY3JpcHRvci4KIAkgKi8KLQlpZiAocmVzdWx0UmVsSW5m by0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCisJaWYgKHJvb3RSZWxJbmZvICYmCisJCXJvb3RSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKQorCXsKKwkJbWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbElu Zm8pOwogCQlyZXN1bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbElu Zm87CisJfQogCiAJLyoKIAkgKiBJbnNlcnQgYSBsZWZ0b3ZlciBmb3IgZWFjaCB2YWx1ZSByZXR1 cm5lZCBieSB0aGUgd2l0aG91dF9wb3J0aW9uIGhlbHBlcgpAQCAtMTYwMSw4ICsxNTc1LDkgQEAg RXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJ CQlkaWRJbml0ID0gdHJ1ZTsKIAkJfQogCi0JCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tmb3JQ b3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gbGVmdG92ZXI7Ci0JCWxlZnRvdmVy U2xvdC0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0g ZmFsc2U7CisJCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tyZXN1bHRSZWxJbmZvLT5yaV9mb3JQ b3J0aW9uT2YtPmZwX3JhbmdlQXR0bm8gLSAxXSA9IGxlZnRvdmVyOworCQlsZWZ0b3ZlclNsb3Qt PnR0c19pc251bGxbcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZUF0dG5v IC0gMV0gPSBmYWxzZTsKKwogCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7CiAK IAkJLyoKQEAgLTQ3NzcsNiArNDc1MiwxOCBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpw c3RhdGUpCiAJCQkJCQkJCQkJCQkJCSBmYWxzZSwgdHJ1ZSk7CiAJCX0KIAorCQkvKgorCQkgKiBJ ZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0IGJlIGEgcGFy dGl0aW9uCisJCSAqIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZpcnN0IHRpbWUuIE1ha2UgYSBj b3B5IGZyb20gdGhlIHJvb3QsIHdpdGgKKwkJICogb3VyIG93biBUdXBsZVRhYmxlU2xvdC4gV2Ug ZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZSBkb24ndCBwYXkgdGhlCisJCSAqIHByaWNlIG9mIHVu dXNlZCBwYXJ0aXRpb25zLgorCQkgKi8KKwkJaWYgKCgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQu bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikgJiYKKwkJCSFyZXN1bHRSZWxJbmZvLT5y aV9mb3JQb3J0aW9uT2YpCisJCXsKKwkJCUV4ZWNJbml0Rm9yUG9ydGlvbk9mKGNvbnRleHQubXRz dGF0ZSwgZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsKKwkJfQorCiAJCS8qCiAJCSAqIElmIHJlc3Vs dFJlbEluZm8tPnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgaXMgdHJ1ZSwgYWxsIHdlIG5lZWQgdG8g ZG8KIAkJICogaGVyZSBpcyBjb21wdXRlIHRoZSBSRVRVUk5JTkcgZXhwcmVzc2lvbnMuCkBAIC01 ODYwLDMgKzU4NDcsNjcgQEAgRXhlY1JlU2Nhbk1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUg Km5vZGUpCiAJICovCiAJZWxvZyhFUlJPUiwgIkV4ZWNSZVNjYW5Nb2RpZnlUYWJsZSBpcyBub3Qg aW1wbGVtZW50ZWQiKTsKIH0KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNJbml0Rm9yUG9ydGlvbk9m CisgKgorICoJCUluaXRpYWxpemVzIHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiBmb3Ig Y2hpbGQgdGFibGVzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorRXhlY0luaXRGb3JQ b3J0aW9uT2YoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJRm9y UG9ydGlvbk9mU3RhdGUgKmxlYWZTdGF0ZTsKKwlSZXN1bHRSZWxJbmZvICpyb290UmVsSW5mbyA9 IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvOworCUZvclBvcnRpb25PZlN0YXRlICpmcG9TdGF0 ZTsKKworCWlmICghcm9vdFJlbEluZm8pCisJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9u IGJ1dCByaV9mb3JQb3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOworCisJZnBvU3RhdGUgPSBt dHN0YXRlLT5yb290UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOworCisJLyogVGhpbmdz IGJ1aWx0IGhlcmUgaGF2ZSB0byBsYXN0IGZvciB0aGUgcXVlcnkgZHVyYXRpb24uICovCisJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCWxl YWZTdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKworCWxlYWZTdGF0ZS0+ZnBf cmFuZ2VOYW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwlsZWFmU3RhdGUtPmZwX3Jhbmdl VHlwZSA9IGZwb1N0YXRlLT5mcF9yYW5nZVR5cGU7CisJbGVhZlN0YXRlLT5mcF90YXJnZXRSYW5n ZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKworCS8qCisJICogRm9yIHBhcnRpdGlvbmVk IHRhYmxlcyB3ZSBtdXN0IHJlYWQgdGhlIGxlZnRvdmVycyB1c2luZyB0aGUgY2hpbGQgdGFibGUn cworCSAqIHR1cGxlIGRlc2NyaXB0b3IsIGJ1dCB0aGVuIGluc2VydCB0aGVtIGludG8gdGhlIHJv b3QgdGFibGUgKHVzaW5nIGl0cworCSAqIHR1cGxlIGRlc2NyaXB0b3IpIHNvIHdlIGdldCB0dXBs ZSByb3V0aW5nLgorCSAqCisJICogRm9yIHRyYWRpdGlvbmFsIHRhYmxlIGluaGVyaXRhbmNlLCB3 ZSByZWFkIGFuZCBpbnNlcnQgZGlyZWN0bHkgaW50byB0aGlzCisJICogcmVzdWx0UmVsSW5mbzsg bm8gdHVwbGUgcm91dGluZyB0byB0aGUgcGFyZW50IGlzIHJlcXVpcmVkLgorCSAqLworCWlmIChy b290UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dl dENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOworCQlpZiAobWFwKQorCQkJbGVhZlN0YXRl LT5mcF9yYW5nZUF0dG5vID0gbWFwLT5hdHRyTWFwLT5hdHRudW1zW2Zwb1N0YXRlLT5mcF9yYW5n ZUF0dG5vIC0gMV07CisJCWVsc2UKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZwb1N0 YXRlLT5mcF9yYW5nZUF0dG5vOworCQlsZWFmU3RhdGUtPmZwX0xlZnRvdmVyID0gZnBvU3RhdGUt PmZwX0xlZnRvdmVyOworCX0KKwllbHNlCisJeworCQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8g PSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKKwkJbGVhZlN0YXRlLT5mcF9MZWZ0b3ZlciA9CisJ CQlFeGVjSW5pdEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLAorCQkJCQkJCQkgICBS ZWxhdGlvbkdldERlc2NyKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYyksCisJCQkJCQkJ CSAgICZUVFNPcHNWaXJ0dWFsKTsKKwl9CisKKwkvKiBFYWNoIHBhcnRpdGlvbiBuZWVkcyBhIHNs b3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwlsZWFmU3RhdGUtPmZwX0V4aXN0 aW5nID0KKwkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNj LAorCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJcmVzdWx0 UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbGVhZlN0YXRlOworCisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li41 M2MxMzgzMTBkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQ3Nyw3ICs0NzcsOCBAQCB0eXBl ZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQogCU5vZGVUYWcJCXR5cGU7CiAKIAljaGFyCSAg ICpmcF9yYW5nZU5hbWU7CS8qIHRoZSBjb2x1bW4gbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8K LQlPaWQJCQlmcF9yYW5nZVR5cGU7CS8qIHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9uICovCisJT2lkCQkJZnBfcmFuZ2VUeXBlOwkvKiB0aGUgYmFzZSB0eXBlIChub3Qg ZG9tYWluKSBvZiB0aGUgRk9SCisJCQkJCQkJCSAqIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLwog CWludAkJCWZwX3JhbmdlQXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uICov CiAJRGF0dW0JCWZwX3RhcmdldFJhbmdlOyAvKiB0aGUgcmFuZ2UvbXVsdGlyYW5nZSBmcm9tIEZP UiBQT1JUSU9OIE9GICovCiAJVHlwZUNhY2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkv KiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5nZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAppbmRleCAwYzBhMjA1YzQ0Yi4uOTEyNDE0NjM5OTEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0x MzY1LDYgKzEzNjUsOSBAQCAkJDsKIENSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfc3RtdAogICBC RUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAog ICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNl LCBmYWxzZSk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3N0bXQxCisgIEJFRk9SRSBVUERB VEUgT0YgdmFsaWRfYXQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBTVEFURU1F TlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiBDUkVBVEUg VFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0 aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBf dHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtMTM3OCw2ICsxMzgxLDkgQEAgQ1JFQVRFIFRSSUdH RVIgZnBvX2FmdGVyX2RlbGV0ZV9zdG10CiBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3Jvdwog ICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVz dAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBm YWxzZSk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBP RiB2YWxpZF9hdCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKIENSRUFURSBUUklHR0VSIGZw b19hZnRlcl9pbnNlcnRfcm93CiAgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0 CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZh bHNlKTsKQEAgLTEzOTQsOSArMTQwMCwxNSBAQCBVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAog Tk9USUNFOiAgZnBvX2JlZm9yZV9zdG10OiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKIE5PVElD RTogICAgb2xkOiA8TlVMTD4KIE5PVElDRTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19i ZWZvcmVfc3RtdDE6IEJFRk9SRSBVUERBVEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxO VUxMPgorTk9USUNFOiAgICBuZXc6IDxOVUxMPgogTk9USUNFOiAgZnBvX2JlZm9yZV9yb3c6IEJF Rk9SRSBVUERBVEUgUk9XOgogTk9USUNFOiAgICBvbGQ6IFsyMDE5LTAxLTAxLDIwMzAtMDEtMDEp CiBOT1RJQ0U6ICAgIG5ldzogWzIwMjEtMDEtMDEsMjAyMi0wMS0wMSkKK05PVElDRTogIGZwb19i ZWZvcmVfcm93MTogQkVGT1JFIFVQREFURSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzIwMTktMDEt MDEsMjAzMC0wMS0wMSkKK05PVElDRTogICAgbmV3OiBbMjAyMS0wMS0wMSwyMDIyLTAxLTAxKQog Tk9USUNFOiAgZnBvX2JlZm9yZV9zdG10OiBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVDoKIE5PVElD RTogICAgb2xkOiA8TlVMTD4KIE5PVElDRTogICAgbmV3OiA8TlVMTD4KQEAgLTE5ODYsNiArMTk5 OCw3IEBAIFNFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZh bGlkX2F0OwogRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQRSBteWRh dGVyYW5nZTsKIC0tIFRlc3QgRk9SIFBPUlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRh YmxlLgorLS0gSW5jbHVkZSBhIEdFTkVSQVRFRCBTVE9SRUQgY29sdW1uIHRvIHRlc3QgdXBkYXRl ZENvbHMgY29sdW1uIG1hcHBpbmcuCiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUg c2FtZSBhdHRudW1zIGFzIHRoZSByb290CiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0 aGUgZGlmZmVyZW50IGF0dG51bXMgZnJvbSB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9u ZWRfNSBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCkBAIC0xOTkz LDI5ICsyMDA2LDM0IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCiAgIGlk IGludDRyYW5nZSwKICAgdmFsaWRfYXQgZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisgIHJhbmdl X2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFs aWRfYXQpKSBTVE9SRUQsCiAgIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAo aWQpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMyw0KScsICdbNCw1KScpOwogQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbNSw2KScsICdbNiw3KScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwotQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09M VU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byBjb2x1bW4gcmFuZ2VfbGVuIG9mIHRhYmxlIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMK IEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFu Z2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBT VE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9O IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7 CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzU7Ci1BTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERS T1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NB REU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbHVtbiByYW5nZV9sZW4gb2YgdGFibGUg dGVtcG9yYWxfcGFydGl0aW9uZWRfNQogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf NSBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBp bnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFE RCBDT0xVTU4gcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9h dCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRDsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVT IElOICgnWzUsNiknLCAnWzYsNyknKTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk IChpZCwgdmFsaWRfYXQsIG5hbWUpIFZBTFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29uZScpLAogICAoJ1szLDQpJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyksCiAgICgnWzUsNiknLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnZml2ZScpOwogU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIp IHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMyw0KSB8IFsyMDAwLTAxLTAxLDIw MTAtMDEtMDEpIHwgdGhyZWUKLSBbNSw2KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgZml2 ZQorICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICB8IHJhbmdlX2xlbiAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisg WzEsMikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IG9uZSAgIHwgICAgICAzNjUzCisgWzMs NCkgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IHRocmVlIHwgICAgICAzNjUzCisgWzUsNikg fCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IGZpdmUgIHwgICAgICAzNjUzCiAoMyByb3dzKQog CiAtLSBVcGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCkBAIC0yMDQ2LDU0 ICsyMDY0LDU0IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wCiAgICAgICBpZCA9ICdbMyw0KScK ICAgV0hFUkUgaWQgPSAnWzUsNiknOwogLS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2Ug KGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCi1TRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKLSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgIG5hbWUgICAKLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0K LSBbMSwyKSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lCi0gWzEsMikgfCBbMjAwMC0w My0wMSwyMDAwLTA0LTAxKSB8IG9uZV4xCi0gWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAx KSB8IG9uZQotIFsxLDIpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMiwzKSB8 IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgdGhyZWVeMgotIFszLDQpIHwgWzIwMDAtMDEtMDEs MjAwMC0wMy0wMSkgfCB0aHJlZQotIFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0 aHJlZV4xCi0gWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IHRocmVlCi0gWzMsNCkg fCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IGZpdmVeMgotIFszLDQpIHwgWzIwMDAtMDctMDEs MjAxMC0wMS0wMSkgfCB0aHJlZQotIFs0LDUpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCBv bmVeMgotIFs1LDYpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBmaXZlCi0gWzUsNikgfCBb MjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8IGZpdmVeMQotIFs1LDYpIHwgWzIwMDAtMDQtMDEsMjAw MC0wNi0wMSkgfCBmaXZlCi0gWzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUK K1NFTEVDVCAqLCB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8ICBuYW1lICAgfCByYW5nZV9sZW4gfCA/Y29sdW1uPyAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBvbmUgICAgIHwgICAgICAgIDYw IHwgICAgICAgNjAKKyBbMSwyKSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEgICB8 ICAgICAgICAzMSB8ICAgICAgIDMxCisgWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8 IG9uZSAgICAgfCAgICAgICAgNjEgfCAgICAgICA2MQorIFsxLDIpIHwgWzIwMDAtMDctMDEsMjAx MC0wMS0wMSkgfCBvbmUgICAgIHwgICAgICAzNDcxIHwgICAgIDM0NzEKKyBbMiwzKSB8IFsyMDAw LTA2LTAxLDIwMDAtMDctMDEpIHwgdGhyZWVeMiB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzMs NCkgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IHRocmVlICAgfCAgICAgICAgNjAgfCAgICAg ICA2MAorIFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xIHwgICAgICAg IDMxIHwgICAgICAgMzEKKyBbMyw0KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgdGhyZWUg ICB8ICAgICAgICA2MSB8ICAgICAgIDYxCisgWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAx KSB8IGZpdmVeMiAgfCAgICAgICAgMzAgfCAgICAgICAzMAorIFszLDQpIHwgWzIwMDAtMDctMDEs MjAxMC0wMS0wMSkgfCB0aHJlZSAgIHwgICAgICAzNDcxIHwgICAgIDM0NzEKKyBbNCw1KSB8IFsy MDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgb25lXjIgICB8ICAgICAgICAzMCB8ICAgICAgIDMwCisg WzUsNikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IGZpdmUgICAgfCAgICAgICAgNjAgfCAg ICAgICA2MAorIFs1LDYpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBmaXZlXjEgIHwgICAg ICAgIDMxIHwgICAgICAgMzEKKyBbNSw2KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgZml2 ZSAgICB8ICAgICAgICA2MSB8ICAgICAgIDYxCisgWzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAx LTAxKSB8IGZpdmUgICAgfCAgICAgIDM0NzEgfCAgICAgMzQ3MQogKDE1IHJvd3MpCiAKIFNFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0g IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgCi0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCi0gWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAw LTAzLTAxKSB8IG9uZQotIFsxLDIpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMQot IFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTA3 LTAxLDIwMTAtMDEtMDEpIHwgb25lCi0gWzIsMykgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8 IHRocmVlXjIKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICB8IHJh bmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbMSwyKSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lICAgICB8ICAg ICAgICA2MAorIFsxLDIpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMSAgIHwgICAg ICAgIDMxCisgWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAg ICAgNjEKKyBbMSwyKSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwgb25lICAgICB8ICAgICAg MzQ3MQorIFsyLDMpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCB0aHJlZV4yIHwgICAgICAg IDMwCiAoNSByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwotICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIAotLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHRo cmVlICAgfCBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpCi0gdGhyZWVeMSB8IFszLDQp IHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkKLSB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0w MSwyMDAwLTA2LTAxKQotIGZpdmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEp Ci0gdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkKLSBvbmVeMiAgIHwg WzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKQorICBuYW1lICAgfCAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgcmFuZ2VfbGVuIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHRocmVlICAgfCBbMyw0KSB8IFsyMDAw LTAxLTAxLDIwMDAtMDMtMDEpIHwgICAgICAgIDYwCisgdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCAgICAgICAgMzEKKyB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0w NC0wMSwyMDAwLTA2LTAxKSB8ICAgICAgICA2MQorIGZpdmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2 LTAxLDIwMDAtMDctMDEpIHwgICAgICAgIDMwCisgdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDct MDEsMjAxMC0wMS0wMSkgfCAgICAgIDM0NzEKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0w MSwyMDAwLTA3LTAxKSB8ICAgICAgICAzMAogKDYgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKLSAgbmFtZSAgfCAgICAg ICAgdmFsaWRfYXQgICAgICAgICB8ICBpZCAgIAotLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tCi0gZml2ZSAgIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBbNSw2 KQotIGZpdmVeMSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgWzUsNikKLSBmaXZlICAgfCBb MjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IFs1LDYpCi0gZml2ZSAgIHwgWzIwMDAtMDctMDEsMjAx MC0wMS0wMSkgfCBbNSw2KQorICBuYW1lICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlk ICAgfCByYW5nZV9sZW4gCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0KKyBmaXZlICAgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IFs1LDYp IHwgICAgICAgIDYwCisgZml2ZV4xIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBbNSw2KSB8 ICAgICAgICAzMQorIGZpdmUgICB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgWzUsNikgfCAg ICAgICAgNjEKKyBmaXZlICAgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IFs1LDYpIHwgICAg ICAzNDcxCiAoNCByb3dzKQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpAQCAt MjE1Miw0ICsyMTcwLDExNSBAQCBTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwog KDIgcm93cykKIAogRFJPUCBUQUJMRSBmcG9fcnVsZTsKKy0tIFVQREFURSBGT1IgUE9SVElPTiBP RiB3aXRoIGdlbmVyYXRlZCBzdG9yZWQgY29sdW1ucworLS0gVGhlIGdlbmVyYXRlZCBjb2x1bW4g ZGVwZW5kcyBvbiB0aGUgcmFuZ2UgY29sdW1uLCBzbyBpdCBtdXN0IGJlCistLSByZWNvbXB1dGVk IHdoZW4gRk9SIFBPUlRJT04gT0YgbmFycm93cyB0aGUgcmFuZ2UuCitDUkVBVEUgVEFCTEUgZnBv X2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQgaW50NHJhbmdlLAorICByYW5nZV9s ZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlk X2F0KSkgU1RPUkVELAorICByYW5nZV9sZW52IGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBl cih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpCispOworSU5TRVJUIElOVE8gZnBvX2dlbmVy YXRlZCAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKDEsICdbMTAsMTAwKScpOworU0VMRUNUICogRlJP TSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0OworIGlkIHwgdmFsaWRfYXQgfCByYW5n ZV9sZW4gfCByYW5nZV9sZW52IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAxIHwgWzEwLDEwMCkgfCAgICAgICAgOTAgfCAgICAgICAgIDkwCisoMSByb3cpCisK K0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlk X2F0IE9OIGZwb19nZW5lcmF0ZWQKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1 bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cy CisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZnBvX2dlbmVyYXRlZAorICBGT1IgRUFD SCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7 CistLSBBZnRlciB0aGUgRk9SIFBPUlRJT04gT0YgKEZQTykgdXBkYXRlLCBhbGwgdGhyZWUgcmVz dWx0aW5nIHJvd3MKKy0tIChsZWZ0b3Zlci1iZWZvcmUsIHVwZGF0ZWQsIGFuZCBsZWZ0b3Zlci1h ZnRlcikgbXVzdCBjb250YWluIHRoZSBjb3JyZWN0CistLSB2YWx1ZXMgZm9yIHJhbmdlX2xlbiBh bmQgcmFuZ2VfbGVudi4KKy0tIFRyaWdnZXJzIGZwb19iZWZvcmVfcm93MSBhbmQgZnBvX2JlZm9y ZV9yb3cyIHNob3VsZCBhbHNvIGJlIGZpcmVkLgorVVBEQVRFIGZwb19nZW5lcmF0ZWQKKyAgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAorICBTRVQgaWQgPSAyOworTk9USUNF OiAgZnBvX2JlZm9yZV9yb3cyOiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKK05PVElDRTogICAg b2xkOiA8TlVMTD4KK05PVElDRTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19iZWZvcmVf cm93MTogQkVGT1JFIFVQREFURSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzEwLDEwMCkKK05PVElD RTogICAgbmV3OiBbMzAsNzApCitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkg dmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IHJhbmdlX2xlbiB8IHJhbmdlX2xlbnYgCistLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCBbMTAsMzApICB8ICAg ICAgICAyMCB8ICAgICAgICAgMjAKKyAgMiB8IFszMCw3MCkgIHwgICAgICAgIDQwIHwgICAgICAg ICA0MAorICAxIHwgWzcwLDEwMCkgfCAgICAgICAgMzAgfCAgICAgICAgIDMwCisoMyByb3dzKQor CistLSBBbHNvIHRlc3Qgd2l0aCBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCByZWZlcmVuY2VzIGJv dGggYSBTRVQgY29sdW1uCistLSBhbmQgdGhlIHJhbmdlIGNvbHVtbi4KK0RST1AgVEFCTEUgZnBv X2dlbmVyYXRlZDsKK0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAgaWQgaW50LAorICB2 YWxpZF9hdCBpbnQ0cmFuZ2UsCisgIGlkX3BsdXNfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVELAorICBpZF9w bHVzX2xlbnYgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGlkICsgdXBwZXIodmFsaWRfYXQpIC0g bG93ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxp ZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRl ZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8IHZhbGlkX2F0IHwgaWRfcGx1c19sZW4gfCBpZF9w bHVzX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor ICAxIHwgWzEwLDEwMCkgfCAgICAgICAgICA5MSB8ICAgICAgICAgICA5MQorKDEgcm93KQorCitV UERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRP IDcwCisgIFNFVCBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkg dmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IGlkX3BsdXNfbGVuIHwgaWRfcGx1c19sZW52IAor LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyAgMSB8IFsxMCwz MCkgIHwgICAgICAgICAgMjEgfCAgICAgICAgICAgMjEKKyAgMiB8IFszMCw3MCkgIHwgICAgICAg ICAgNDIgfCAgICAgICAgICAgNDIKKyAgMSB8IFs3MCwxMDApIHwgICAgICAgICAgMzEgfCAgICAg ICAgICAgMzEKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgZnBvX2dlbmVyYXRlZDsKKy0tIFVQREFU RSBGT1IgUE9SVElPTiBPRiB3aXRoIHRhYmxlIGluaGVyaXRhbmNlCistLSBMZWZ0b3ZlciByb3dz IG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIHByZXNlcnZpbmcgY2hpbGQtc3BlY2lmaWMg Y29sdW1ucy4KK0NSRUFURSBUQUJMRSBmcG9faW5oX3BhcmVudCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQKKyk7CitDUkVBVEUgVEFCTEUgZnBv X2luaF9jaGlsZCAoCisgIGRlc2NyaXB0aW9uIHRleHQKKykgSU5IRVJJVFMgKGZwb19pbmhfcGFy ZW50KTsKK0lOU0VSVCBJTlRPIGZwb19pbmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVz Y3JpcHRpb24pIFZBTFVFUworICAoJ1sxLDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywg J29uZScsICdpbml0aWFsJyk7CistLSBVcGRhdGUgdGFyZ2V0cyB0aGUgcGFyZW50OyB0aGUgbWF0 Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK1VQREFURSBmcG9faW5oX3BhcmVudCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0xMC0wMScKKyAg U0VUIG5hbWUgPSAnb25lXjEnOworLS0gQWxsIHRocmVlIHJvd3Mgc2hvdWxkIGJlIGluIHRoZSBj aGlsZCwgd2l0aCBkZXNjcmlwdGlvbiBwcmVzZXJ2ZWQuCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gZnBvX2luaF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgICB0YWJsZW9p ZCAgICB8ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIGZwb19p bmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTAxLTAxLDIwMTgtMDQtMDEpIHwgb25lCisgZnBvX2lu aF9jaGlsZCB8IFsxLDIpIHwgWzIwMTgtMDQtMDEsMjAxOC0xMC0wMSkgfCBvbmVeMQorIGZwb19p bmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTEwLTAxLDIwMTktMDEtMDEpIHwgb25lCisoMyByb3dz KQorCitTRUxFQ1QgKiBGUk9NIGZwb19pbmhfY2hpbGQgT1JERVIgQlkgdmFsaWRfYXQ7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIHwgZGVzY3JpcHRpb24gCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgWzEs MikgfCBbMjAxOC0wMS0wMSwyMDE4LTA0LTAxKSB8IG9uZSAgIHwgaW5pdGlhbAorIFsxLDIpIHwg WzIwMTgtMDQtMDEsMjAxOC0xMC0wMSkgfCBvbmVeMSB8IGluaXRpYWwKKyBbMSwyKSB8IFsyMDE4 LTEwLTAxLDIwMTktMDEtMDEpIHwgb25lICAgfCBpbml0aWFsCisoMyByb3dzKQorCistLSBObyBy b3dzIHNob3VsZCBoYXZlIGxlYWtlZCBpbnRvIHRoZSBwYXJlbnQuCitTRUxFQ1QgKiBGUk9NIE9O TFkgZnBvX2luaF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IG5h bWUgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGZwb19p bmhfcGFyZW50IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGZwb19p bmhfY2hpbGQKIFJFU0VUIGRhdGVzdHlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbAppbmRleCBmZDc5YTliNzhlNy4uMDRlMGRiYTYzNzUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTkxMyw2ICs5MTMsMTAgQEAgQ1JFQVRFIFRSSUdH RVIgZnBvX2JlZm9yZV9zdG10CiAgIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBP TiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NF RFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKIAorQ1JFQVRFIFRSSUdHRVIgZnBvX2Jl Zm9yZV9zdG10MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dl cihmYWxzZSwgZmFsc2UpOworCiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3N0bXQK ICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggU1RBVEVN RU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtOTMx LDYgKzkzNSwxMCBAQCBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5T RVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFD SCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiAKK0NS RUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0 IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJF IGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworCiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJf aW5zZXJ0X3JvdwogICBBRlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1Ig RUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CkBA IC0xMjkyLDYgKzEzMDAsNyBAQCBEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOwogRFJP UCBUWVBFIG15ZGF0ZXJhbmdlOwogCiAtLSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWluc3QgYSBw YXJ0aXRpb25lZCB0YWJsZS4KKy0tIEluY2x1ZGUgYSBHRU5FUkFURUQgU1RPUkVEIGNvbHVtbiB0 byB0ZXN0IHVwZGF0ZWRDb2xzIGNvbHVtbiBtYXBwaW5nLgogLS0gdGVtcG9yYWxfcGFydGl0aW9u ZWRfMSBoYXMgdGhlIHNhbWUgYXR0bnVtcyBhcyB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKIC0tIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzUgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1dCByZXZl cnNlZApAQCAtMTMwMCw2ICsxMzA5LDcgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkICgKICAgaWQgaW50NHJhbmdlLAogICB2YWxpZF9hdCBkYXRlcmFuZ2UsCiAgIG5hbWUgdGV4 dCwKKyAgcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkg LSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKICAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlv bmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElP TiBCWSBMSVNUIChpZCk7CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQQVJU SVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDIpJywgJ1sy LDMpJyk7CkBAIC0xMzA3LDEzICsxMzE3LDE1IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF8zIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTCiBD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIEFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0 aW9uZWRfMzsKLUFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRFJPUCBDT0xVTU4g aWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9U IE5VTEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7 CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiAKIEFM VEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxf cGFydGl0aW9uZWRfNTsKLUFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBD T0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsK IEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBk YXRlcmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBT VE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9O IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7 CiAKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUp IFZBTFVFUwpAQCAtMTM1OCw3ICsxMzcwLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTAKIAog LS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCiAK LVNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworU0VMRUNUICosIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKQEAgLTEz OTgsNCArMTQxMCw4MCBAQCBTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwogCiBE Uk9QIFRBQkxFIGZwb19ydWxlOwogCistLSBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBnZW5l cmF0ZWQgc3RvcmVkIGNvbHVtbnMKKy0tIFRoZSBnZW5lcmF0ZWQgY29sdW1uIGRlcGVuZHMgb24g dGhlIHJhbmdlIGNvbHVtbiwgc28gaXQgbXVzdCBiZQorLS0gcmVjb21wdXRlZCB3aGVuIEZPUiBQ T1JUSU9OIE9GIG5hcnJvd3MgdGhlIHJhbmdlLgorQ1JFQVRFIFRBQkxFIGZwb19nZW5lcmF0ZWQg KAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRyYW5nZSwKKyAgcmFuZ2VfbGVuIGludCBHRU5F UkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JF RCwKKyAgcmFuZ2VfbGVudiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQp IC0gbG93ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKKworU0VMRUNUICogRlJPTSBmcG9fZ2Vu ZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0OworCitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3Jv dzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmcG9fZ2VuZXJhdGVkCisgIEZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKKwor Q1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cyCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRf YXQgT04gZnBvX2dlbmVyYXRlZAorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURV UkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CisKKy0tIEFmdGVyIHRoZSBGT1IgUE9SVElP TiBPRiAoRlBPKSB1cGRhdGUsIGFsbCB0aHJlZSByZXN1bHRpbmcgcm93cworLS0gKGxlZnRvdmVy LWJlZm9yZSwgdXBkYXRlZCwgYW5kIGxlZnRvdmVyLWFmdGVyKSBtdXN0IGNvbnRhaW4gdGhlIGNv cnJlY3QKKy0tIHZhbHVlcyBmb3IgcmFuZ2VfbGVuIGFuZCByYW5nZV9sZW52LgorLS0gVHJpZ2dl cnMgZnBvX2JlZm9yZV9yb3cxIGFuZCBmcG9fYmVmb3JlX3JvdzIgc2hvdWxkIGFsc28gYmUgZmly ZWQuCitVUERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBP UkRFUiBCWSB2YWxpZF9hdDsKKworLS0gQWxzbyB0ZXN0IHdpdGggYSBnZW5lcmF0ZWQgY29sdW1u IHRoYXQgcmVmZXJlbmNlcyBib3RoIGEgU0VUIGNvbHVtbgorLS0gYW5kIHRoZSByYW5nZSBjb2x1 bW4uCitEUk9QIFRBQkxFIGZwb19nZW5lcmF0ZWQ7CitDUkVBVEUgVEFCTEUgZnBvX2dlbmVyYXRl ZCAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQgaW50NHJhbmdlLAorICBpZF9wbHVzX2xlbiBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoaWQgKyB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9h dCkpIFNUT1JFRCwKKyAgaWRfcGx1c19sZW52IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpZCAr IHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkKKyk7CisKK0lOU0VSVCBJTlRPIGZw b19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVD VCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworVVBEQVRFIGZwb19n ZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAorICBTRVQg aWQgPSAyOworU0VMRUNUICogRlJPTSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0Owor RFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVkOworCisKKy0tIFVQREFURSBGT1IgUE9SVElPTiBPRiB3 aXRoIHRhYmxlIGluaGVyaXRhbmNlCistLSBMZWZ0b3ZlciByb3dzIG11c3Qgc3RheSBpbiB0aGUg Y2hpbGQgdGFibGUsIHByZXNlcnZpbmcgY2hpbGQtc3BlY2lmaWMgY29sdW1ucy4KK0NSRUFURSBU QUJMRSBmcG9faW5oX3BhcmVudCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBuYW1lIHRleHQKKyk7CitDUkVBVEUgVEFCTEUgZnBvX2luaF9jaGlsZCAoCisgIGRl c2NyaXB0aW9uIHRleHQKKykgSU5IRVJJVFMgKGZwb19pbmhfcGFyZW50KTsKK0lOU0VSVCBJTlRP IGZwb19pbmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUwor ICAoJ1sxLDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7 CisKKy0tIFVwZGF0ZSB0YXJnZXRzIHRoZSBwYXJlbnQ7IHRoZSBtYXRjaGluZyByb3cgbGl2ZXMg aW4gdGhlIGNoaWxkLgorVVBEQVRFIGZwb19pbmhfcGFyZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTEwLTAxJworICBTRVQgbmFtZSA9ICdvbmVe MSc7CisKKy0tIEFsbCB0aHJlZSByb3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVz Y3JpcHRpb24gcHJlc2VydmVkLgorU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZw b19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2No aWxkIE9SREVSIEJZIHZhbGlkX2F0OworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50 byB0aGUgcGFyZW50LgorU0VMRUNUICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZ IHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZwb19pbmhfcGFyZW50IENBU0NBREU7CisKIFJFU0VU IGRhdGVzdHlsZTsKLS0gCjIuNDcuMwoK --0000000000006c08710651190870--