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 1wL8Ru-001YV5-0K for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 23:48:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wL8Rs-006ocY-2B for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 23:48:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wL8Rs-006ocD-0q for pgsql-hackers@lists.postgresql.org; Thu, 07 May 2026 23:48:08 +0000 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wL8Rk-000000017Ac-0Sz0 for pgsql-hackers@lists.postgresql.org; Thu, 07 May 2026 23:48:02 +0000 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-694891f8f75so826301eaf.1 for ; Thu, 07 May 2026 16:47:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778197678; cv=none; d=google.com; s=arc-20240605; b=fqyl/P0JqpeE7VWFIvvkfTrTLhbBcmpjx4GxyyRwUOlgeEKIwr3DJF4k4du/rtLOLg 5NrOm5Lc5ExeAA0rxgHSUK4A2HtBeOBpeBzm3HFxtS3Yisq4FVC3Dw5SnkEwavFVDA9+ JRPZrGy748dTPaif6aU6kD8nRVJSuIVgTeyfQsV/tkm1XNT7w5B7qiSAiMzhz5oEDBr3 3OY9Jei6NV/F58WPKZwDvpBNdhbJR+BxTM4Gz3eF2pZV7mBo3g9j48B+KZ2pQ66SLs4N kzSomjLivtgv2pM+mhonTNP9cVF0w3OmM+p02HV4nSKKEgRSpNZsD2wi8p/tGG6IG6DV 8toQ== 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=p/akXITcz/Wtezqyytl6DJsAUF8BVD9kb8opelE+D3g=; fh=3IxCvQL+CjbDcWpblMg3sPY3s0PcHA0xO7fnQEH04jY=; b=gbdooqfhtitv0Y7sB/2KcoTL3WG/hLWebIgidE+7hhucUWV5+RJ9Mh9PT1UXpRVpT5 gc2vOlzXFBNxrFrEjYAxKe1sNLHj5WdH4Dk4UB/NLISz6oLmOfyLWI4hStdfEnCE0KqY FW1l0+RCPbkanOEsi/tBOfh174J4RsRU9gsdB0flBrt+Y4+IvAjGWomQefsaZjMiIVYw nfkCNOSwhQMiszUorp6JMH/zIxHWbn9Op6W5aqv8J4b0D7mHoLz0gViJvP32KFlam9Z+ dGOL4hzc+sQnwxecFoX5i/Ln70ogQta7aFOdLHnt6lnvwhXOhE4zLyIdu6xudXQOAcyk UwmA==; 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=1778197678; x=1778802478; 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=p/akXITcz/Wtezqyytl6DJsAUF8BVD9kb8opelE+D3g=; b=XZ8R5m7TJ32TxCX87hhZyrie8godFuW83dWzUc5aBjaVqLjg4NeYaBf7dUTZUQGuEs QwPiQoKr3Y7hVB5CSTNNWhJ/WB3gTXNlhc2NrCGhQonAIp/2jZHVPDXuiS+RRnAS1E1B QELSUsiZUHGdmXROelLt0n8cKFJZ+Pdthb2McaSaMNeAuN83IIKgpTsG2nuw1eGLtwMK usnxtVywCv5qNkWLTI6UfU/ohGK9owqUOOeM5V5/T2jtrmDOZkEkWkVJa7mvvUHRVatt +DPkbRA9BMoJnmjVXHRBMu08/ddNZb42PitZmbzwI56dYEY5O4laQXGLdprz+7/9zLNp mQhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778197678; x=1778802478; 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=p/akXITcz/Wtezqyytl6DJsAUF8BVD9kb8opelE+D3g=; b=oVR0kTIC9Rg5wUVeQHzLH6DU5V+VfAcFAHRm7tN1pQJwOMqNWrerDBnJWTPkL3V/NE Jb413Y4ghZkcKR+AemlP0pfr3k0kLLCZgQxkY/Og43d0t4uECIvXxln+QeNHrgWfr3ff y/MwHOPDgVW5Z2HYSy+XAxCEgys/EUIQ1wV3jOuwKsDTzVnTXmvjLFmBe2G4RMP24x1j /ZkNRdI0Nnant9eDZQT3Bz8wZUPZPG8lg8YBibbeLieWhob5ttrVwxXhwwAMFr9lN3z8 4u+1iItk274LQxYRafF9xrJ49caa/UQ4B3lrSLwpaMv6a7SEjyYpDr9k7jl0TrMsDxPU ocGA== X-Forwarded-Encrypted: i=1; AFNElJ94FRcC+IGqmzlDj29yUHttyxE0arJxOP7LZC+Bhy2cIes/w32cOOUgXVjIcA7rvt9y04yivFB9uR03SIa2@lists.postgresql.org X-Gm-Message-State: AOJu0YxA/jhhmPDcE+v8OSDgbE8U8Qs57n5njsJCCKN7Vx9ifNo2yVDX 2xuVmtgemfSXMvDwRHlIYFmY/4C5llDMi0KGAo3qM/hofgh5LqAVsr6ciut8A4PH+y0wf6goVtO F/hBEtcaGA8/UPrLl5FU+TVtu+UU5VA/80M3xAj3Zyg== X-Gm-Gg: AeBDiettVVO8zWx9S/kyA0sg7ozx7jEtSgsKQS5DUJ1v+xu5VG57cvEtqEtQxk/9sSV q3xqqsU9bkB1JpCc4Qur6eOf1Ib5JHTwASRXc4tgvsO3N6RJ+nucTwHOaQ6ZILu1NMD0xPlcWBA YtOKm0S8md51K4eJgTzNdxLi0ILOlEv056ColosNwseIb1LomEmDlm4aUojr9tVTeG4mFyrbRBi y5Panmi9xbkv7qvNYOXGDS6XvR/o1c7WL22aJlu951uiMRfa2eqY2SxXIO+auqmft55kfoa+Tqf sygT X-Received: by 2002:a05:6820:1988:b0:696:97e7:7c63 with SMTP id 006d021491bc7-69998c8368cmr5766226eaf.3.1778197677888; Thu, 07 May 2026 16:47:57 -0700 (PDT) MIME-Version: 1.0 References: <27BD5D23-19C9-4FD1-8935-9C788C3C9869@gmail.com> <66C1555B-CA54-4ED1-AB4F-0EE97D24A006@gmail.com> <91B35E0F-5DC1-4417-A1B9-FAF4A3DCD2BD@gmail.com> In-Reply-To: <91B35E0F-5DC1-4417-A1B9-FAF4A3DCD2BD@gmail.com> From: Paul A Jungwirth Date: Thu, 7 May 2026 16:47:46 -0700 X-Gm-Features: AVHnY4KkOSZ4IgLTuBayD6EtMfvomMtVmMp9s-SnEfpbuouvvKMZzOQ8pt7bXn4 Message-ID: Subject: Re: FOR PORTION OF does not recompute GENERATED STORED columns that depend on the range column To: Chao Li Cc: Peter Eisentraut , jian he , SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000ef0350065142e83d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ef0350065142e83d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, May 7, 2026 at 12:06=E2=80=AFAM Chao Li wr= ote: > > > > A few comments for 0001: > > 1 - execUtils.c > The comment explicitly says that it is unsafe to mutate perminfo, but bms= _add_member() does not always allocate a new bitmapset. So if updatedCols s= till points to perminfo->updatedCols, then bms_add_member() may mutate perm= info->updatedCols. > > To verify that, I added Assert(updatedCols !=3D perminfo->updatedCols); r= ight after the bms_add_member(), then ran "make check". A lot of tests fail= ed, which seems to confirm that perminfo->updatedCols was being mutated. > > So, I think we should make a copy the bitmapset before bms_add_member whe= n needed, to make sure perminfo is not mutated, something like: > ``` > if (updatedCols =3D=3D perminfo->updatedCols) > updatedCols =3D bms_copy(updatedCols); > > updatedCols =3D > bms_add_member(updatedCols, > rangeAttno - F= irstLowInvalidHeapAttributeNumber); > ``` Ah, thanks for catching this! Fixed. > 2 - execUtils.c > ``` > + * because the user does not need UPDATE permission on it. Now manualy > ``` > > Typo: manualy -> manually Fixed. > 3 - nodeModifyTable.c > ``` > + /* > + * If we don't have a ForPortionOfState yet, we must be a= partition > + * child being hit for the first time. Make a copy from t= he root, with > + * our own TupleTableSlot. We do this lazily so that we d= on't pay the > + * price of unused partitions. > + */ > + if ((((ModifyTable *) context.mtstate->ps.plan)->forPorti= onOf) && > + !resultRelInfo->ri_forPortionOf) > + { > + ExecInitForPortionOf(context.mtstate, estate, res= ultRelInfo); > + } > ``` > > I think this comment is stale. It could be a partition child or an inheri= tance child. Okay. > 4 - nodeModifyTable.c > ``` > + /* Each partition needs a slot matching its tuple descriptor */ > + leafState->fp_Existing =3D > + table_slot_create(resultRelInfo->ri_RelationDesc, > + &mtstate->ps.state->es_= tupleTable); > ``` > > I think the comment should say "each child relation" rather than "each pa= rtition". Okay. In these v11 patches I've tried to separate (1) the fix for GENERATED STORED columns and UPDATE OF triggers (2) fixing inheritance and (and partitions too, for the bugs in #1). I understand why jian he combined these into one patch: there is some overlap. If you don't like my separation, let me know. Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com --000000000000ef0350065142e83d Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0001-Fix-FOR-PORTION-OF-column-dependency-tracking.patch" Content-Disposition: attachment; filename="v11-0001-Fix-FOR-PORTION-OF-column-dependency-tracking.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mow4wc310 RnJvbSBkNGMwOTRhODMxZDQ1MjA2ZjY0MmQ4MTdkMjFkMDQ1OGNhZTQ1MDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFRodSwgNyBNYXkgMjAyNiAxMzowNTo1NCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjExIDEvMl0gRml4IEZPUiBQT1JUSU9OIE9GIGNvbHVtbiBkZXBlbmRlbmN5IHRy YWNraW5nCgpXaGVuIEZPUiBQT1JUSU9OIE9GIGNoYW5nZXMgdGhlIGFwcGxpY2F0aW9uLXRpbWUg Y29sdW1uLCB3ZSBuZWVkIHRvIG1hcmsgdGhlCmNvbHVtbiBhcyB1cGRhdGVkLCBzbyB0aGF0IG90 aGVyIEdFTkVSQVRFRCBTVE9SRUQgY29sdW1ucyByZWNvbXB1dGUgaWYgdGhleQpkZXBlbmQgb24g aXQsIGFuZCBzaW1pbGFybHkgc28gdGhhdCBVUERBVEUgT0YgdHJpZ2dlcnMgZmlyZS4gV2UgZG9u J3Qgc2ltcGx5CnJlY29yZCB0aGUgY29sdW1uIGluIHVwZGF0ZWRDb2xzIG9mIFJURVBlcm1pc3Np b25JbmZvLCBiZWNhdXNlIHRoZSBVUERBVEUvREVMRVRFCnNob3VsZCB3b3JrIGV2ZW4gd2l0aG91 dCBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGF0IGNvbHVtbi4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FIZytRRGNkPXQ2OWdMZjl5UWV4TzA3RUoybXgwWjcwTkZIbzZoOTRYMUVE QT1oTTBnQG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FI ZytRRGNzWHNVVmFaK0p3TTAyeURSUUVpPWNMX3JUSF9ST0xEWWdPeDAwNHNRdTdBQG1haWwuZ21h aWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAg fCA0MCArKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29m Lm91dCB8IDgwICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwgICAgICB8IDU4ICsrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDE3NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxz LmMKaW5kZXggMWViNmI5ZjFmNDAuLjZkODM5ZTc0NGZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYwpAQCAtMTQwOCwyMCArMTQwOCw1NiBAQCBCaXRtYXBzZXQgKgogRXhlY0dldFVwZGF0ZWRD b2xzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRlKQogewogCVJURVBlcm1p c3Npb25JbmZvICpwZXJtaW5mbyA9IEdldFJlc3VsdFJURVBlcm1pc3Npb25JbmZvKHJlbGluZm8s IGVzdGF0ZSk7CisJQml0bWFwc2V0ICp1cGRhdGVkQ29sczsKIAogCWlmIChwZXJtaW5mbyA9PSBO VUxMKQogCQlyZXR1cm4gTlVMTDsKIAorCXVwZGF0ZWRDb2xzID0gcGVybWluZm8tPnVwZGF0ZWRD b2xzOworCiAJLyogTWFwIHRoZSBjb2x1bW5zIHRvIGNoaWxkJ3MgYXR0cmlidXRlIG51bWJlcnMg aWYgbmVlZGVkLiAqLwogCWlmIChyZWxpbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKIAl7CiAJ CVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dldFJvb3RUb0NoaWxkTWFwKHJlbGluZm8s IGVzdGF0ZSk7CiAKIAkJaWYgKG1hcCkKLQkJCXJldHVybiBleGVjdXRlX2F0dHJfbWFwX2NvbHMo bWFwLT5hdHRyTWFwLCBwZXJtaW5mby0+dXBkYXRlZENvbHMpOworCQkJdXBkYXRlZENvbHMgPSBl eGVjdXRlX2F0dHJfbWFwX2NvbHMobWFwLT5hdHRyTWFwLCB1cGRhdGVkQ29scyk7CisJfQorCisJ LyoKKwkqIEZvciBVUERBVEUgLi4uIEZPUiBQT1JUSU9OIE9GLCB0aGUgcmFuZ2UgY29sdW1uIGlz IGJlaW5nIG1vZGlmaWVkCisJKiAobmFycm93ZWQgdmlhIGludGVyc2VjdGlvbiksIGJ1dCBpdCBp cyBub3QgaW5jbHVkZWQgaW4gdXBkYXRlZENvbHMKKwkqIGJlY2F1c2UgdGhlIHVzZXIgZG9lcyBu b3QgbmVlZCBVUERBVEUgcGVybWlzc2lvbiBvbiBpdC4gTm93IG1hbnVhbGx5CisJKiBhZGQgaXQg dG8gdXBkYXRlZENvbHMuCisJKgorCSogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgcmlfZm9yUG9y dGlvbk9mLT5mcF9yYW5nZUF0dG5vIGlzIGFscmVhZHkgbWFwcGVkCisJKiBmb3IgdGhlIGNoaWxk IHBhcnRpdGlvbiwgc28gd2UgaGF2ZSB0byBhZGQgaXQgYWZ0ZXIgdGhlIG1hcHBpbmcganVzdAor CSogYWJvdmUuIEFsc28gdGhhdCBtYWtlcyBpdCB1bnNhZmUgdG8gbXV0YXRlIHBlcm1pbmZvLiBX ZSBtYWtlIGFuIGV4cGxpY2l0CisJKiBjb3B5IG9mIHRoZSBCaXRtYXBzZXQgc2luY2UgYm1zX2Fk ZF9tZW1iZXIgbWF5IGNoYW5nZSBpdCBpbi1wbGFjZS4KKwkqIFhYWDogQWx3YXlzIGFkZCB0aGUg dW5tYXBwZWQgYXR0bm8gaW5zdGVhZCAoYmVmb3JlIG1hcHBpbmcpLCBhbmQgbXV0YXRlCisJKiBw ZXJtaW5mbywgdG8gYXZvaWQgcmVwZWF0ZWQgYWxsb2NhdGlvbnM/CisJKi8KKwlpZiAocmVsaW5m by0+cmlfZm9yUG9ydGlvbk9mKQorCXsKKwkJQXR0ck51bWJlciAgcmFuZ2VBdHRubyA9IHJlbGlu Zm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VBdHRubzsKKworCQlpZiAoIWJtc19pc19tZW1i ZXIocmFuZ2VBdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJ CQkgICB1cGRhdGVkQ29scykpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKKwor CQkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4 dCk7CisKKwkJCXVwZGF0ZWRDb2xzID0gYm1zX2NvcHkodXBkYXRlZENvbHMpOworCQkJdXBkYXRl ZENvbHMgPQorCQkJCWJtc19hZGRfbWVtYmVyKHVwZGF0ZWRDb2xzLAorCQkJCQkJCSAgIHJhbmdl QXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKworCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOworCQl9CiAJfQogCi0JcmV0dXJuIHBlcm1pbmZv LT51cGRhdGVkQ29sczsKKwlyZXR1cm4gdXBkYXRlZENvbHM7CiB9CiAKIC8qIFJldHVybiBhIGJp dG1hcCByZXByZXNlbnRpbmcgZ2VuZXJhdGVkIGNvbHVtbnMgYmVpbmcgdXBkYXRlZCAqLwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAppbmRleCAwYzBhMjA1 YzQ0Yi4uMDk0MDIyZDUzZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Zm9yX3BvcnRpb25fb2Yub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3Bv cnRpb25fb2Yub3V0CkBAIC0yMTUyLDQgKzIxNTIsODQgQEAgU0VMRUNUICogRlJPTSBmcG9fcnVs ZSBPUkRFUiBCWSBmMTsKICgyIHJvd3MpCiAKIERST1AgVEFCTEUgZnBvX3J1bGU7CistLSBVUERB VEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBnZW5lcmF0ZWQgc3RvcmVkIGNvbHVtbnMKKy0tIFRoZSBn ZW5lcmF0ZWQgY29sdW1uIGRlcGVuZHMgb24gdGhlIHJhbmdlIGNvbHVtbiwgc28gaXQgbXVzdCBi ZQorLS0gcmVjb21wdXRlZCB3aGVuIEZPUiBQT1JUSU9OIE9GIG5hcnJvd3MgdGhlIHJhbmdlLgor Q1JFQVRFIFRBQkxFIGZwb19nZW5lcmF0ZWQgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRy YW5nZSwKKyAgcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9h dCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKKyAgcmFuZ2VfbGVudiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VS VCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCkn KTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8 IHZhbGlkX2F0IHwgcmFuZ2VfbGVuIHwgcmFuZ2VfbGVudiAKKy0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgMSB8IFsxMCwxMDApIHwgICAgICAgIDkwIHwgICAgICAg ICA5MAorKDEgcm93KQorCistLSBBZnRlciB0aGUgRk9SIFBPUlRJT04gT0YgKEZQTykgdXBkYXRl LCBhbGwgdGhyZWUgcmVzdWx0aW5nIHJvd3MKKy0tIChsZWZ0b3Zlci1iZWZvcmUsIHVwZGF0ZWQs IGFuZCBsZWZ0b3Zlci1hZnRlcikgbXVzdCBjb250YWluIHRoZSBjb3JyZWN0CistLSB2YWx1ZXMg Zm9yIHJhbmdlX2xlbiBhbmQgcmFuZ2VfbGVudi4KK1VQREFURSBmcG9fZ2VuZXJhdGVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMzAgVE8gNzAKKyAgU0VUIGlkID0gMjsKK1NFTEVD VCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8IHZhbGlkX2F0 IHwgcmFuZ2VfbGVuIHwgcmFuZ2VfbGVudiAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgMSB8IFsxMCwzMCkgIHwgICAgICAgIDIwIHwgICAgICAgICAyMAorICAy IHwgWzMwLDcwKSAgfCAgICAgICAgNDAgfCAgICAgICAgIDQwCisgIDEgfCBbNzAsMTAwKSB8ICAg ICAgICAzMCB8ICAgICAgICAgMzAKKygzIHJvd3MpCisKKy0tIEFsc28gdGVzdCB3aXRoIGEgZ2Vu ZXJhdGVkIGNvbHVtbiB0aGF0IHJlZmVyZW5jZXMgYm90aCBhIFNFVCBjb2x1bW4KKy0tIGFuZCB0 aGUgcmFuZ2UgY29sdW1uLgorRFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVkOworQ1JFQVRFIFRBQkxF IGZwb19nZW5lcmF0ZWQgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRyYW5nZSwKKyAgaWRf cGx1c19sZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGlkICsgdXBwZXIodmFsaWRfYXQpIC0g bG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCisgIGlkX3BsdXNfbGVudiBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoaWQgKyB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpCispOworSU5T RVJUIElOVE8gZnBvX2dlbmVyYXRlZCAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKDEsICdbMTAsMTAw KScpOworU0VMRUNUICogRlJPTSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0OworIGlk IHwgdmFsaWRfYXQgfCBpZF9wbHVzX2xlbiB8IGlkX3BsdXNfbGVudiAKKy0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgIDEgfCBbMTAsMTAwKSB8ICAgICAgICAg IDkxIHwgICAgICAgICAgIDkxCisoMSByb3cpCisKK1VQREFURSBmcG9fZ2VuZXJhdGVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMzAgVE8gNzAKKyAgU0VUIGlkID0gMjsKK1NFTEVD VCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8IHZhbGlkX2F0 IHwgaWRfcGx1c19sZW4gfCBpZF9wbHVzX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLQorICAxIHwgWzEwLDMwKSAgfCAgICAgICAgICAyMSB8ICAgICAg ICAgICAyMQorICAyIHwgWzMwLDcwKSAgfCAgICAgICAgICA0MiB8ICAgICAgICAgICA0MgorICAx IHwgWzcwLDEwMCkgfCAgICAgICAgICAzMSB8ICAgICAgICAgICAzMQorKDMgcm93cykKKworRFJP UCBUQUJMRSBmcG9fZ2VuZXJhdGVkOworLS0gVGVzdCB0aGF0IFVQREFURSBPRiBjb2xuYW1lIHRy aWdnZXJzIGZpcmUgaWYgY29sbmFtZSBpcyB2YWxpZF9hdDoKK0NSRUFURSBUQUJMRSBmcG9fdXBk YXRlX29mX3RyaWdnZXIgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRyYW5nZQorKTsKK0lO U0VSVCBJTlRPIGZwb191cGRhdGVfb2ZfdHJpZ2dlciAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKDEs ICdbMTAsMTAwKScpOworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cxCisgIEJFRk9SRSBV UERBVEUgT0YgdmFsaWRfYXQgT04gZnBvX3VwZGF0ZV9vZl90cmlnZ2VyCisgIEZPUiBFQUNIIFJP VyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKK0NSRUFURSBU UklHR0VSIGZwb19iZWZvcmVfcm93MgorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZw b191cGRhdGVfb2ZfdHJpZ2dlcgorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURV UkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitVUERBVEUgZnBvX3VwZGF0ZV9vZl90cmln Z2VyCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMzAgVE8gNzAKKyAgU0VUIGlkID0g MjsKK05PVElDRTogIGZwb19iZWZvcmVfcm93MjogQkVGT1JFIFVQREFURSBTVEFURU1FTlQ6CitO T1RJQ0U6ICAgIG9sZDogPE5VTEw+CitOT1RJQ0U6ICAgIG5ldzogPE5VTEw+CitOT1RJQ0U6ICBm cG9fYmVmb3JlX3JvdzE6IEJFRk9SRSBVUERBVEUgUk9XOgorTk9USUNFOiAgICBvbGQ6IFsxMCwx MDApCitOT1RJQ0U6ICAgIG5ldzogWzMwLDcwKQorRFJPUCBUQUJMRSBmcG9fdXBkYXRlX29mX3Ry aWdnZXI7CiBSRVNFVCBkYXRlc3R5bGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mb3JfcG9ydGlvbl9vZi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwKaW5kZXggZmQ3OWE5Yjc4ZTcuLmFjNWJjZTU1M2ViIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZm9yX3BvcnRpb25fb2Yuc3FsCkBAIC0xMzk4LDQgKzEzOTgsNjIgQEAgU0VMRUNUICogRlJP TSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKIAogRFJPUCBUQUJMRSBmcG9fcnVsZTsKIAorLS0gVVBE QVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBjb2x1bW5zCistLSBUaGUg Z2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1bW4sIHNvIGl0IG11c3Qg YmUKKy0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJyb3dzIHRoZSByYW5nZS4K K0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAgaWQgaW50LAorICB2YWxpZF9hdCBpbnQ0 cmFuZ2UsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRf YXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCisgIHJhbmdlX2xlbnYgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkKKyk7CitJTlNF UlQgSU5UTyBmcG9fZ2VuZXJhdGVkIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDAp Jyk7CisKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKwor LS0gQWZ0ZXIgdGhlIEZPUiBQT1JUSU9OIE9GIChGUE8pIHVwZGF0ZSwgYWxsIHRocmVlIHJlc3Vs dGluZyByb3dzCistLSAobGVmdG92ZXItYmVmb3JlLCB1cGRhdGVkLCBhbmQgbGVmdG92ZXItYWZ0 ZXIpIG11c3QgY29udGFpbiB0aGUgY29ycmVjdAorLS0gdmFsdWVzIGZvciByYW5nZV9sZW4gYW5k IHJhbmdlX2xlbnYuCitVUERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZnBvX2dl bmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworLS0gQWxzbyB0ZXN0IHdpdGggYSBnZW5lcmF0 ZWQgY29sdW1uIHRoYXQgcmVmZXJlbmNlcyBib3RoIGEgU0VUIGNvbHVtbgorLS0gYW5kIHRoZSBy YW5nZSBjb2x1bW4uCitEUk9QIFRBQkxFIGZwb19nZW5lcmF0ZWQ7CitDUkVBVEUgVEFCTEUgZnBv X2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQgaW50NHJhbmdlLAorICBpZF9wbHVz X2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaWQgKyB1cHBlcih2YWxpZF9hdCkgLSBsb3dl cih2YWxpZF9hdCkpIFNUT1JFRCwKKyAgaWRfcGx1c19sZW52IGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkKKyk7CisKK0lOU0VS VCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCkn KTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworVVBE QVRFIGZwb19nZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3 MAorICBTRVQgaWQgPSAyOworU0VMRUNUICogRlJPTSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZh bGlkX2F0OworRFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVkOworCistLSBUZXN0IHRoYXQgVVBEQVRF IE9GIGNvbG5hbWUgdHJpZ2dlcnMgZmlyZSBpZiBjb2xuYW1lIGlzIHZhbGlkX2F0OgorQ1JFQVRF IFRBQkxFIGZwb191cGRhdGVfb2ZfdHJpZ2dlciAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQgaW50 NHJhbmdlCispOworSU5TRVJUIElOVE8gZnBvX3VwZGF0ZV9vZl90cmlnZ2VyIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3Jv dzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmcG9fdXBkYXRlX29mX3RyaWdnZXIK KyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFs c2UpOworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cyCisgIEJFRk9SRSBVUERBVEUgT0Yg dmFsaWRfYXQgT04gZnBvX3VwZGF0ZV9vZl90cmlnZ2VyCisgIEZPUiBFQUNIIFNUQVRFTUVOVCBF WEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKK1VQREFURSBmcG9f dXBkYXRlX29mX3RyaWdnZXIKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3 MAorICBTRVQgaWQgPSAyOworRFJPUCBUQUJMRSBmcG9fdXBkYXRlX29mX3RyaWdnZXI7CisKIFJF U0VUIGRhdGVzdHlsZTsKLS0gCjIuNDcuMwoK --000000000000ef0350065142e83d Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0002-Fix-FOR-PORTION-OF-with-partitions-and-inheritan.patch" Content-Disposition: attachment; filename="v11-0002-Fix-FOR-PORTION-OF-with-partitions-and-inheritan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mow4wf521 RnJvbSAzZDA3NTEwZGRmYWNhMWUyZTgwMTY4NTFhNWE4ZmFhMTAxY2Y4NjNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFRodSwgNyBNYXkgMjAyNiAxNTozMToxMiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjExIDIvMl0gRml4IEZPUiBQT1JUSU9OIE9GIHdpdGggcGFydGl0aW9ucyBhbmQg aW5oZXJpdGFuY2UKCi0gRml4ZWQgaW5zZXJ0aW5nIGxlZnRvdmVycyB3aXRoIHRyYWRpdGlvbmFs IHRhYmxlIGluaGVyaXRhbmNlLiBTaW5jZSB0aGVyZSBpcwogIG5vIHR1cGxlIHJvdXRpbmcsIHdl IG11c3QgYWRkIHRoZW0gZGlyZWN0bHkgdG8gdGhlIGNoaWxkIHRhYmxlLiBBbHNvIHRoaXMKICBw cmVzZXJ2ZXMgZXh0cmEgY29sdW1ucyBpbiB0aGF0IHRhYmxlLgotIEFkZGVkIEV4ZWNJbml0Rm9y UG9ydGlvbk9mLiBUaGlzIHNldHMgdXAgZXhlY3V0b3Igc3RhdGUgZm9yIGNoaWxkIHBhcnRpdGlv bnMuCiAgUHJldmlvdXNseSB3ZSBkaWQgdGhpcyBpbiBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJz LCBidXQgZG9pbmcgaXQgZWFybGllciBsZXRzCiAgdXMgdXNlIHRoZSBjaGlsZC0+cGFyZW50IGF0 dHIgbWFwcGluZyBpbiB1cGRhdGVkQ29scyAodXNlZCB0byByZWNvbXB1dGUKICBHRU5FUkFURUQg U1RPUkVEIGNvbHVtbnMgYW5kIGNhbGwgVVBEQVRFIE9GIHRyaWdnZXJzLCBpZiB0aGUgY29sdW1u IGhhcwogIGNoYW5nZWQpLgotIENsYXJpZmllZCBhIGNvbW1lbnQgYWJvdXQgdGhlIHJhbmdldHlw ZSBzdG9yZWQgaW4gRm9yUG9ydGlvbk9mU3RhdGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL0NBSGcrUURjZD10NjlnTGY5eVFleE8wN0VKMm14MFo3ME5GSG82aDk0WDFFREE9aE0w Z0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSGcrUURj c1hzVVZhWitKd00wMnlEUlFFaT1jTF9yVEhfUk9MRFlnT3gwMDRzUXU3QUBtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwgMTUw ICsrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 IHwgMjQxICsrKysrKysrKysrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0 aW9uX29mLnNxbCAgICAgIHwgIDkxICsrKysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMzg4IGluc2Vy dGlvbnMoKyksIDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKaW5kZXggNGNiMDU3Y2E0ZjkuLjRjMzFjZDgwZGEwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTk4LDYgKzE5OCw4IEBAIHN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqRXhlY01lcmdlTm90TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiBz dGF0aWMgdm9pZCBFeGVjU2V0dXBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIGZpcmVCU1RyaWdnZXJz KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpOwogc3RhdGljIHZvaWQgZmlyZUFTVHJpZ2dlcnMoTW9k aWZ5VGFibGVTdGF0ZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBFeGVjSW5pdEZvclBvcnRpb25PZihN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOwogCiAKIC8qCkBAIC0xNDA5LDcgKzE0MTEsNiBAQCBF eGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKIAlNb2RpZnlUYWJs ZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5wcy5wbGFuOwogCUZvclBvcnRpb25P ZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRp b25PZjsKLQlBdHRyTnVtYmVyCXJhbmdlQXR0bm87CiAJRGF0dW0JCW9sZFJhbmdlOwogCVR5cGVD YWNoZUVudHJ5ICp0eXBjYWNoZTsKIAlGb3JQb3J0aW9uT2ZTdGF0ZSAqZnBvU3RhdGU7CkBAIC0x NDI0LDM3ICsxNDI1LDEwIEBAIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVD b250ZXh0ICpjb250ZXh0LAogCVJldHVyblNldEluZm8gcnNpOwogCWJvb2wJCWRpZEluaXQgPSBm YWxzZTsKIAlib29sCQlzaG91bGRGcmVlID0gZmFsc2U7CisJUmVzdWx0UmVsSW5mbyAqcm9vdFJl bEluZm8gPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbzsKIAogCUxPQ0FMX0ZDSU5GTyhmY2lu Zm8sIDIpOwogCi0JaWYgKCFyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YpCi0JewotCQkv KgotCQkgKiBJZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0 IGJlIGEgcGFydGl0aW9uCi0JCSAqIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZpcnN0IHRpbWUu IE1ha2UgYSBjb3B5IGZyb20gdGhlIHJvb3QsIHdpdGgKLQkJICogb3VyIG93biBUdXBsZVRhYmxl U2xvdC4gV2UgZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZSBkb24ndCBwYXkgdGhlCi0JCSAqIHBy aWNlIG9mIHVudXNlZCBwYXJ0aXRpb25zLgotCQkgKi8KLQkJRm9yUG9ydGlvbk9mU3RhdGUgKmxl YWZTdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKLQotCQlpZiAoIW10c3RhdGUt PnJvb3RSZXN1bHRSZWxJbmZvKQotCQkJZWxvZyhFUlJPUiwgIm5vIHJvb3QgcmVsYXRpb24gYnV0 IHJpX2ZvclBvcnRpb25PZiBpcyB1bmluaXRpYWxpemVkIik7Ci0KLQkJZnBvU3RhdGUgPSBtdHN0 YXRlLT5yb290UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOwotCQlBc3NlcnQoZnBvU3Rh dGUpOwotCi0JCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VOYW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFt ZTsKLQkJbGVhZlN0YXRlLT5mcF9yYW5nZVR5cGUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VUeXBlOwot CQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKLQkJ bGVhZlN0YXRlLT5mcF90YXJnZXRSYW5nZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKLQkJ bGVhZlN0YXRlLT5mcF9MZWZ0b3ZlciA9IGZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjsKLQkJLyogRWFj aCBwYXJ0aXRpb24gbmVlZHMgYSBzbG90IG1hdGNoaW5nIGl0cyB0dXBsZSBkZXNjcmlwdG9yICov Ci0JCWxlYWZTdGF0ZS0+ZnBfRXhpc3RpbmcgPQotCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAotCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5l c190dXBsZVRhYmxlKTsKLQotCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBsZWFm U3RhdGU7Ci0JfQogCWZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOwog CW9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGluZzsKIAlsZWZ0b3ZlclNsb3QgPSBm cG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CkBAIC0xNDc1LDIxICsxNDQ5LDEzIEBAIEV4ZWNGb3JQb3J0 aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWlmICghdGFibGVf dHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0 dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKIAkJZWxvZyhFUlJPUiwgImZhaWxl ZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKIAotCS8qCi0JICogR2V0IHRo ZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29yZCBiZWluZyB1cGRhdGVkL2RlbGV0ZWQuIE11c3QgcmVh ZCB3aXRoCi0JICogdGhlIGF0dG5vIG9mIHRoZSBsZWFmIHBhcnRpdGlvbiBiZWluZyB1cGRhdGVk LgotCSAqLwotCi0JcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5v OwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKLQkJbWFwID0gRXhl Y0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOwotCWlmIChtYXAgIT0gTlVMTCkKLQkJ cmFuZ2VBdHRubyA9IG1hcC0+YXR0ck1hcC0+YXR0bnVtc1tyYW5nZUF0dG5vIC0gMV07CiAJc2xv dF9nZXRhbGxhdHRycyhvbGR0dXBsZVNsb3QpOwogCi0JaWYgKG9sZHR1cGxlU2xvdC0+dHRzX2lz bnVsbFtyYW5nZUF0dG5vIC0gMV0pCisJLyogR2V0IHRoZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29y ZCBiZWluZyB1cGRhdGVkL2RlbGV0ZWQuICovCisKKwlpZiAob2xkdHVwbGVTbG90LT50dHNfaXNu dWxsW2Zwb1N0YXRlLT5mcF9yYW5nZUF0dG5vIC0gMV0pCiAJCWVsb2coRVJST1IsICJmb3VuZCBh IE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOwotCW9sZFJhbmdlID0gb2xkdHVwbGVT bG90LT50dHNfdmFsdWVzW3JhbmdlQXR0bm8gLSAxXTsKKwlvbGRSYW5nZSA9IG9sZHR1cGxlU2xv dC0+dHRzX3ZhbHVlc1tmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyAtIDFdOwogCiAJLyoKIAkgKiBH ZXQgdGhlIHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZv ciB0aGUgd2hvbGUKQEAgLTE1MjcsMTIgKzE0OTMsMjAgQEAgRXhlY0ZvclBvcnRpb25PZkxlZnRv dmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJZmNpbmZvLT5hcmdzWzFdLmlzbnVs bCA9IGZhbHNlOwogCiAJLyoKLQkgKiBJZiB0aGVyZSBhcmUgcGFydGl0aW9ucywgd2UgbXVzdCBp bnNlcnQgaW50byB0aGUgcm9vdCB0YWJsZSwgc28gd2UgZ2V0Ci0JICogdHVwbGUgcm91dGluZy4g V2UgYWxyZWFkeSBzZXQgdXAgbGVmdG92ZXJTbG90IHdpdGggdGhlIHJvb3QgdHVwbGUKLQkgKiBk ZXNjcmlwdG9yLgorCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgcmVhZCBsZWZ0 b3ZlcnMgd2l0aCB0aGUgdHVwbGUKKwkgKiBkZXNjcmlwdG9yIG9mIHRoZSBjaGlsZCB0YWJsZSwg YnV0IGluc2VydCBpbnRvIHRoZSByb290IHRhYmxlIHRvIGVuYWJsZQorCSAqIHR1cGxlIHJvdXRp bmcuICBTbyBsZWZ0b3ZlclNsb3QgaXMgY29uZmlndXJlZCB3aXRoIHRoZSByb290J3MgdHVwbGUK KwkgKiBkZXNjcmlwdG9yLiAgSG93ZXZlciwgZm9yIHRyYWRpdGlvbmFsIHRhYmxlIGluaGVyaXRh bmNlLCB3ZSBkb24ndCBuZWVkCisJICogdHVwbGUgcm91dGluZyBhbmQganVzdCBpbnNlcnQgZGly ZWN0bHkgaW50byB0aGUgY2hpbGQgdGFibGUgdG8gcHJlc2VydmUKKwkgKiBjaGlsZC1zcGVjaWZp YyBjb2x1bW5zLiAgSW4gdGhhdCBjYXNlLCBsZWZ0b3ZlclNsb3QgdXNlcyB0aGUgY2hpbGQncwor CSAqIChyZXN1bHRSZWxJbmZvKSB0dXBsZSBkZXNjcmlwdG9yLgogCSAqLwotCWlmIChyZXN1bHRS ZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKKwlpZiAocm9vdFJlbEluZm8gJiYKKwkJcm9v dFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYy0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpCisJeworCQltYXAgPSBFeGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0 UmVsSW5mbyk7CiAJCXJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0 UmVsSW5mbzsKKwl9CiAKIAkvKgogCSAqIEluc2VydCBhIGxlZnRvdmVyIGZvciBlYWNoIHZhbHVl IHJldHVybmVkIGJ5IHRoZSB3aXRob3V0X3BvcnRpb24gaGVscGVyCkBAIC0xNjAxLDggKzE1NzUs OCBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKIAkJCWRpZEluaXQgPSB0cnVlOwogCQl9CiAKLQkJbGVmdG92ZXJTbG90LT50dHNfdmFsdWVz W2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBsZWZ0b3ZlcjsKLQkJbGVm dG92ZXJTbG90LT50dHNfaXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0g MV0gPSBmYWxzZTsKKwkJbGVmdG92ZXJTbG90LT50dHNfdmFsdWVzW3Jlc3VsdFJlbEluZm8tPnJp X2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VBdHRubyAtIDFdID0gbGVmdG92ZXI7CisJCWxlZnRvdmVy U2xvdC0+dHRzX2lzbnVsbFtyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3Jhbmdl QXR0bm8gLSAxXSA9IGZhbHNlOwogCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7 CiAKIAkJLyoKQEAgLTQ3NzcsNiArNDc1MSwxOCBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRl ICpwc3RhdGUpCiAJCQkJCQkJCQkJCQkJCSBmYWxzZSwgdHJ1ZSk7CiAJCX0KIAorCQkvKgorCQkg KiBJZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0IGJlIGEg cGFydGl0aW9uIG9yCisJCSAqIGluaGVyaXRhbmNlIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZp cnN0IHRpbWUuIE1ha2UgYSBjb3B5IGZyb20gdGhlCisJCSAqIHJvb3QsIHdpdGggb3VyIG93biBU dXBsZVRhYmxlU2xvdC4gV2UgZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZSBkb24ndAorCQkgKiBw YXkgdGhlIHByaWNlIG9mIHVudXNlZCBwYXJ0aXRpb25zLgorCQkgKi8KKwkJaWYgKCgoKE1vZGlm eVRhYmxlICopIGNvbnRleHQubXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikgJiYKKwkJ CSFyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YpCisJCXsKKwkJCUV4ZWNJbml0Rm9yUG9y dGlvbk9mKGNvbnRleHQubXRzdGF0ZSwgZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsKKwkJfQorCiAJ CS8qCiAJCSAqIElmIHJlc3VsdFJlbEluZm8tPnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgaXMgdHJ1 ZSwgYWxsIHdlIG5lZWQgdG8gZG8KIAkJICogaGVyZSBpcyBjb21wdXRlIHRoZSBSRVRVUk5JTkcg ZXhwcmVzc2lvbnMuCkBAIC01ODYwLDMgKzU4NDYsNzMgQEAgRXhlY1JlU2Nhbk1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICovCiAJZWxvZyhFUlJPUiwgIkV4ZWNSZVNjYW5N b2RpZnlUYWJsZSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKIH0KKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4 ZWNJbml0Rm9yUG9ydGlvbk9mCisgKgorICoJCUluaXRpYWxpemVzIHJlc3VsdFJlbEluZm8tPnJp X2ZvclBvcnRpb25PZiBmb3IgY2hpbGQgdGFibGVzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMg dm9pZAorRXhlY0luaXRGb3JQb3J0aW9uT2YoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0 YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CisJRm9yUG9ydGlvbk9mU3RhdGUgKmxlYWZTdGF0ZTsKKwlSZXN1bHRSZWxJ bmZvICpyb290UmVsSW5mbyA9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvOworCUZvclBvcnRp b25PZlN0YXRlICpmcG9TdGF0ZTsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKm1hcDsKKworCWlmICgh cm9vdFJlbEluZm8pCisJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9uIGJ1dCByaV9mb3JQ b3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOworCisJZnBvU3RhdGUgPSBtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOworCisJLyogVGhpbmdzIGJ1aWx0IGhlcmUg aGF2ZSB0byBsYXN0IGZvciB0aGUgcXVlcnkgZHVyYXRpb24uICovCisJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCWxlYWZTdGF0ZSA9IG1h a2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKworCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VOYW1lID0g ZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwlsZWFmU3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZwb1N0 YXRlLT5mcF9yYW5nZVR5cGU7CisJbGVhZlN0YXRlLT5mcF90YXJnZXRSYW5nZSA9IGZwb1N0YXRl LT5mcF90YXJnZXRSYW5nZTsKKwltYXAgPSBFeGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0UmVs SW5mbyk7CisKKwkvKgorCSAqIGZwX3JhbmdlQXR0bm8gbXVzdCBtYXRjaCB0aGUgdHVwbGUgbGF5 b3V0IHVzZWQgZm9yIHJlYWRpbmcgdGhlIG9sZAorCSAqIHJhbmdlIHZhbHVlLiAgVGhlIHF1ZXJ5 IHVzZXMgdGhlIHRhcmdldCByZWxhdGlvbidzIGF0dG5vLCBzbyB0cmFuc2xhdGUKKwkgKiBpdCB0 byB0aGUgY2hpbGQgYXR0bm8gd2hlbiB0aGUgY2hpbGQgaGFzIGEgZGlmZmVyZW50IGNvbHVtbiBs YXlvdXQuCisJICovCisJaWYgKG1hcCkKKwkJbGVhZlN0YXRlLT5mcF9yYW5nZUF0dG5vID0gbWFw LT5hdHRyTWFwLT5hdHRudW1zW2Zwb1N0YXRlLT5mcF9yYW5nZUF0dG5vIC0gMV07CisJZWxzZQor CQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKKwor CS8qCisJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyB3ZSBtdXN0IHJlYWQgdGhlIGxlZnRvdmVy cyB1c2luZyB0aGUgY2hpbGQKKwkgKiB0YWJsZSdzIHR1cGxlIGRlc2NyaXB0b3IsIGJ1dCB0aGVu IGluc2VydCB0aGVtIGludG8gdGhlIHJvb3QgdGFibGUKKwkgKiAodXNpbmcgaXRzIHR1cGxlIGRl c2NyaXB0b3IpIHNvIHdlIGdldCB0dXBsZSByb3V0aW5nLgorCSAqCisJICogRm9yIHRyYWRpdGlv bmFsIHRhYmxlIGluaGVyaXRhbmNlLCB3ZSByZWFkIGFuZCBpbnNlcnQgZGlyZWN0bHkgaW50bwor CSAqIHRoaXMgcmVzdWx0UmVsSW5mbzsgbm8gdHVwbGUgcm91dGluZyB0byB0aGUgcGFyZW50IGlz IHJlcXVpcmVkLgorCSAqLworCWlmIChyb290UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCWxlYWZTdGF0 ZS0+ZnBfTGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJfQorCWVsc2UKKwl7CisJ CWxlYWZTdGF0ZS0+ZnBfTGVmdG92ZXIgPQorCQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0 YXRlLT5wcy5zdGF0ZSwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihyZXN1bHRSZWxJbmZv LT5yaV9SZWxhdGlvbkRlc2MpLAorCQkJCQkJCQkgICAmVFRTT3BzVmlydHVhbCk7CisJfQorCisJ LyogRWFjaCBjaGlsZCByZWxhdGlvbiBuZWVkcyBhIHNsb3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRl c2NyaXB0b3IgKi8KKwlsZWFmU3RhdGUtPmZwX0V4aXN0aW5nID0KKwkJdGFibGVfc2xvdF9jcmVh dGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJICAmbXRzdGF0ZS0+cHMu c3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9m ID0gbGVhZlN0YXRlOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li41M2MxMzgzMTBkYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTQ3Nyw3ICs0NzcsOCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZT dGF0ZQogCU5vZGVUYWcJCXR5cGU7CiAKIAljaGFyCSAgICpmcF9yYW5nZU5hbWU7CS8qIHRoZSBj b2x1bW4gbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8KLQlPaWQJCQlmcF9yYW5nZVR5cGU7CS8q IHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisJT2lkCQkJZnBf cmFuZ2VUeXBlOwkvKiB0aGUgYmFzZSB0eXBlIChub3QgZG9tYWluKSBvZiB0aGUgRk9SCisJCQkJ CQkJCSAqIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLwogCWludAkJCWZwX3JhbmdlQXR0bm87CS8q IHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uICovCiAJRGF0dW0JCWZwX3RhcmdldFJhbmdl OyAvKiB0aGUgcmFuZ2UvbXVsdGlyYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCiAJVHlwZUNh Y2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRo ZSByYW5nZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9y dGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91 dAppbmRleCAwOTQwMjJkNTNlYS4uYjkzMzc1YjhmZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0xMzY1LDYgKzEzNjUsOSBAQCAkJDsKIENS RUFURSBUUklHR0VSIGZwb19iZWZvcmVfc3RtdAogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBP UiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBTVEFURU1FTlQgRVhF Q1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJR0dF UiBmcG9fYmVmb3JlX3N0bXQxCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVt cF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0 X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0gg U1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpA QCAtMTM3OCw2ICsxMzgxLDkgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2FmdGVyX2RlbGV0ZV9zdG10 CiBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFU RSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VU RSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJR0dFUiBm cG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIo ZmFsc2UsIGZhbHNlKTsKIENSRUFURSBUUklHR0VSIGZwb19hZnRlcl9pbnNlcnRfcm93CiAgIEFG VEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKQEAgLTEzOTQsOSArMTQwMCwx NSBAQCBVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAogTk9USUNFOiAgZnBvX2JlZm9yZV9zdG10 OiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4KIE5PVElD RTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19iZWZvcmVfc3RtdDE6IEJFRk9SRSBVUERB VEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxOVUxMPgorTk9USUNFOiAgICBuZXc6IDxO VUxMPgogTk9USUNFOiAgZnBvX2JlZm9yZV9yb3c6IEJFRk9SRSBVUERBVEUgUk9XOgogTk9USUNF OiAgICBvbGQ6IFsyMDE5LTAxLTAxLDIwMzAtMDEtMDEpCiBOT1RJQ0U6ICAgIG5ldzogWzIwMjEt MDEtMDEsMjAyMi0wMS0wMSkKK05PVElDRTogIGZwb19iZWZvcmVfcm93MTogQkVGT1JFIFVQREFU RSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzIwMTktMDEtMDEsMjAzMC0wMS0wMSkKK05PVElDRTog ICAgbmV3OiBbMjAyMS0wMS0wMSwyMDIyLTAxLTAxKQogTk9USUNFOiAgZnBvX2JlZm9yZV9zdG10 OiBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4KIE5PVElD RTogICAgbmV3OiA8TlVMTD4KQEAgLTE5ODYsNiArMTk5OCw3IEBAIFNFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIFRlc3QgRk9SIFBP UlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gSW5jbHVkZSBhIEdFTkVS QVRFRCBTVE9SRUQgY29sdW1uIHRvIHRlc3QgdXBkYXRlZENvbHMgY29sdW1uIG1hcHBpbmcuCiAt LSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFzIHRoZSByb290 CiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgZnJv bSB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMgdGhlIGRpZmZlcmVudCBh dHRudW1zIHRvbywgYnV0IHJldmVyc2VkCkBAIC0xOTkzLDI5ICsyMDA2LDM0IEBAIENSRUFURSBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCiAgIGlkIGludDRyYW5nZSwKICAgdmFsaWRfYXQg ZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCiAgIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwogQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBW QUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4g KCdbMyw0KScsICdbNCw1KScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUg UEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbNSw2KScs ICdbNiw3KScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNIIFBBUlRJ VElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwotQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxp ZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb2x1bW4gcmFuZ2VfbGVu IG9mIHRhYmxlIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4g dmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBw ZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMg Rk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzU7Ci1BTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVN TiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xV TU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIGNvbHVtbiByYW5nZV9sZW4gb2YgdGFibGUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNQog QUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHZhbGlkX2F0IGRh dGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gcmFuZ2VfbGVuIGludCBH RU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNU T1JFRDsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04g dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNiknLCAnWzYsNyknKTsK IElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUpIFZB TFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwg J29uZScpLAogICAoJ1szLDQpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ3RocmVlJyksCiAgICgnWzUsNiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0w MS0wMScpLCAnZml2ZScpOwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLSAg aWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCi0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0w MSkgfCBvbmUKLSBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgdGhyZWUKLSBbNSw2 KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgZml2ZQorICBpZCAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBuYW1lICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKSB8IG9uZSAgIHwgICAgICAzNjUzCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKSB8IHRocmVlIHwgICAgICAzNjUzCisgWzUsNikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAx KSB8IGZpdmUgIHwgICAgICAzNjUzCiAoMyByb3dzKQogCiAtLSBVcGRhdGUgd2l0aG91dCBtb3Zp bmcgd2l0aGluIHBhcnRpdGlvbiAxCkBAIC0yMDQ2LDU0ICsyMDY0LDU0IEBAIFVQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAx JyBUTyAnMjAwMC0wCiAgICAgICBpZCA9ICdbMyw0KScKICAgV0hFUkUgaWQgPSAnWzUsNiknOwog LS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCi1T RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK LSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KLSBbMSwyKSB8IFsyMDAwLTAxLTAxLDIw MDAtMDMtMDEpIHwgb25lCi0gWzEsMikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8IG9uZV4x Ci0gWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZQotIFsxLDIpIHwgWzIwMDAt MDctMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEp IHwgdGhyZWVeMgotIFszLDQpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCB0aHJlZQotIFsz LDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xCi0gWzMsNCkgfCBbMjAwMC0w NC0wMSwyMDAwLTA2LTAxKSB8IHRocmVlCi0gWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAx KSB8IGZpdmVeMgotIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJlZQotIFs0 LDUpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCBvbmVeMgotIFs1LDYpIHwgWzIwMDAtMDEt MDEsMjAwMC0wMy0wMSkgfCBmaXZlCi0gWzUsNikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8 IGZpdmVeMQotIFs1LDYpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBmaXZlCi0gWzUsNikg fCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUKK1NFTEVDVCAqLCB1cHBlcih2YWxpZF9h dCkgLSBsb3dlcih2YWxpZF9hdCkgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAg fCByYW5nZV9sZW4gfCA/Y29sdW1uPyAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMDAtMDEtMDEs MjAwMC0wMy0wMSkgfCBvbmUgICAgIHwgICAgICAgIDYwIHwgICAgICAgNjAKKyBbMSwyKSB8IFsy MDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEgICB8ICAgICAgICAzMSB8ICAgICAgIDMxCisg WzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAgNjEgfCAg ICAgICA2MQorIFsxLDIpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBvbmUgICAgIHwgICAg ICAzNDcxIHwgICAgIDM0NzEKKyBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgdGhy ZWVeMiB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwyMDAwLTAz LTAxKSB8IHRocmVlICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFszLDQpIHwgWzIwMDAtMDMt MDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xIHwgICAgICAgIDMxIHwgICAgICAgMzEKKyBbMyw0KSB8 IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgdGhyZWUgICB8ICAgICAgICA2MSB8ICAgICAgIDYx CisgWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IGZpdmVeMiAgfCAgICAgICAgMzAg fCAgICAgICAzMAorIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJlZSAgIHwg ICAgICAzNDcxIHwgICAgIDM0NzEKKyBbNCw1KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwg b25lXjIgICB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzUsNikgfCBbMjAwMC0wMS0wMSwyMDAw LTAzLTAxKSB8IGZpdmUgICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFs1LDYpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCBmaXZlXjEgIHwgICAgICAgIDMxIHwgICAgICAgMzEKKyBbNSw2 KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgZml2ZSAgICB8ICAgICAgICA2MSB8ICAgICAg IDYxCisgWzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUgICAgfCAgICAgIDM0 NzEgfCAgICAgMzQ3MQogKDE1IHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0gIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8ICBuYW1lICAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tCi0gWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IG9uZQotIFsxLDIpIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMQotIFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAw MC0wNi0wMSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwgb25lCi0g WzIsMykgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IHRocmVlXjIKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMSwyKSB8IFsyMDAw LTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lICAgICB8ICAgICAgICA2MAorIFsxLDIpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMSAgIHwgICAgICAgIDMxCisgWzEsMikgfCBbMjAwMC0w NC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAgNjEKKyBbMSwyKSB8IFsyMDAwLTA3 LTAxLDIwMTAtMDEtMDEpIHwgb25lICAgICB8ICAgICAgMzQ3MQorIFsyLDMpIHwgWzIwMDAtMDYt MDEsMjAwMC0wNy0wMSkgfCB0aHJlZV4yIHwgICAgICAgIDMwCiAoNSByb3dzKQogCiBTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwotICBu YW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAotLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTAx LTAxLDIwMDAtMDMtMDEpCi0gdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0w MSkKLSB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKQotIGZpdmVeMiAg fCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpCi0gdGhyZWUgICB8IFszLDQpIHwgWzIw MDAtMDctMDEsMjAxMC0wMS0wMSkKLSBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAw LTA3LTAxKQorICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcmFu Z2VfbGVuIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgICAg ICAgIDYwCisgdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCAgICAg ICAgMzEKKyB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8ICAgICAg ICA2MQorIGZpdmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgICAgICAg IDMwCisgdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCAgICAgIDM0 NzEKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8ICAgICAgICAz MAogKDYgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKLSAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBp ZCAgIAotLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCi0gZml2ZSAg IHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBbNSw2KQotIGZpdmVeMSB8IFsyMDAwLTAzLTAx LDIwMDAtMDQtMDEpIHwgWzUsNikKLSBmaXZlICAgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8 IFs1LDYpCi0gZml2ZSAgIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBbNSw2KQorICBuYW1l ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkICAgfCByYW5nZV9sZW4gCistLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0KKyBmaXZlICAg fCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IFs1LDYpIHwgICAgICAgIDYwCisgZml2ZV4xIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBbNSw2KSB8ICAgICAgICAzMQorIGZpdmUgICB8IFsy MDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgWzUsNikgfCAgICAgICAgNjEKKyBmaXZlICAgfCBbMjAw MC0wNy0wMSwyMDEwLTAxLTAxKSB8IFs1LDYpIHwgICAgICAzNDcxCiAoNCByb3dzKQogCiBEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpAQCAtMjE1Miw2ICsyMTcwLDEzNyBAQCBTRUxF Q1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwogKDIgcm93cykKIAogRFJPUCBUQUJMRSBm cG9fcnVsZTsKKy0tIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCB0YWJsZSBpbmhl cml0YW5jZQorLS0gTGVmdG92ZXIgcm93cyBtdXN0IHN0YXkgaW4gdGhlIGNoaWxkIHRhYmxlLCBw cmVzZXJ2aW5nIGNoaWxkLXNwZWNpZmljIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgZnBvX2luaF9w YXJlbnQgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0 ZXh0CispOworQ1JFQVRFIFRBQkxFIGZwb19pbmhfY2hpbGQgKAorICBkZXNjcmlwdGlvbiB0ZXh0 CispIElOSEVSSVRTIChmcG9faW5oX3BhcmVudCk7CistLSBVcGRhdGUgdGFyZ2V0cyB0aGUgcGFy ZW50OyB0aGUgbWF0Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK0lOU0VSVCBJTlRPIGZw b19pbmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAo J1sxLDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitV UERBVEUgZnBvX2luaF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w NC0wMScgVE8gJzIwMTgtMTAtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJzsKKy0tIEFsbCB0aHJl ZSByb3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVzY3JpcHRpb24gcHJlc2VydmVk LgorU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZwb19pbmhfcGFyZW50IE9SREVS IEJZIHZhbGlkX2F0OworICAgdGFibGVvaWQgICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgbmFtZSAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBmcG9faW5oX2NoaWxkIHwgWzEsMikgfCBbMjAxOC0wMS0wMSwy MDE4LTA0LTAxKSB8IG9uZQorIGZwb19pbmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTA0LTAxLDIw MTgtMTAtMDEpIHwgb25lXjEKKyBmcG9faW5oX2NoaWxkIHwgWzEsMikgfCBbMjAxOC0xMC0wMSwy MDE5LTAxLTAxKSB8IG9uZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBmcG9faW5oX2NoaWxk IE9SREVSIEJZIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBu YW1lICB8IGRlc2NyaXB0aW9uIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMTgtMDEtMDEsMjAxOC0wNC0wMSkgfCBv bmUgICB8IGluaXRpYWwKKyBbMSwyKSB8IFsyMDE4LTA0LTAxLDIwMTgtMTAtMDEpIHwgb25lXjEg fCBpbml0aWFsCisgWzEsMikgfCBbMjAxOC0xMC0wMSwyMDE5LTAxLTAxKSB8IG9uZSAgIHwgaW5p dGlhbAorKDMgcm93cykKKworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50byB0aGUg cGFyZW50LgorU0VMRUNUICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlk X2F0OworIGlkIHwgdmFsaWRfYXQgfCBuYW1lIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorKDAg cm93cykKKworLS0gU2FtZSB0ZXN0IGZvciBERUxFVEUgaW5zdGVhZCBvZiBVUERBVEU6CitUUlVO Q0FURSBmcG9faW5oX2NoaWxkLCBmcG9faW5oX3BhcmVudDsKK0lOU0VSVCBJTlRPIGZwb19pbmhf Y2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sxLDIp JywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitERUxFVEUg RlJPTSBmcG9faW5oX3BhcmVudCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0 LTAxJyBUTyAnMjAxOC0xMC0wMSc7CistLSBBbGwgdGhyZWUgcm93cyBzaG91bGQgYmUgaW4gdGhl IGNoaWxkLCB3aXRoIGRlc2NyaXB0aW9uIHByZXNlcnZlZC4KK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBmcG9faW5oX3BhcmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKyAgIHRhYmxl b2lkICAgIHwgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCistLS0tLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIGZwb19p bmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTAxLTAxLDIwMTgtMDQtMDEpIHwgb25lCisgZnBvX2lu aF9jaGlsZCB8IFsxLDIpIHwgWzIwMTgtMTAtMDEsMjAxOS0wMS0wMSkgfCBvbmUKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZnBvX2luaF9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSB8IGRlc2NyaXB0aW9uIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tCisgWzEsMikg fCBbMjAxOC0wMS0wMSwyMDE4LTA0LTAxKSB8IG9uZSAgfCBpbml0aWFsCisgWzEsMikgfCBbMjAx OC0xMC0wMSwyMDE5LTAxLTAxKSB8IG9uZSAgfCBpbml0aWFsCisoMiByb3dzKQorCistLSBObyBy b3dzIHNob3VsZCBoYXZlIGxlYWtlZCBpbnRvIHRoZSBwYXJlbnQuCitTRUxFQ1QgKiBGUk9NIE9O TFkgZnBvX2luaF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IG5h bWUgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGZwb19p bmhfcGFyZW50IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGZwb19p bmhfY2hpbGQKKy0tIFVQREFURSBGT1IgUE9SVElPTiBPRiB3aXRoIG11bHRpcGxlIGluaGVyaXRh bmNlCistLSBMZWZ0b3ZlciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIGV2ZW4g aWYgdGhlIHJhbmdlIGNvbHVtbidzCistLSBhdHRudW0gZGlmZmVycyBiZXR3ZWVuIHRoZSB0YXJn ZXQgcGFyZW50IGFuZCBjaGlsZC4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgKAorICBp ZCBpbnQsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworQ1JFQVRFIFRB QkxFIG90aGVyX3BhcmVudCAoCisgIHByZWZpeCB0ZXh0LAorICBub3RlIHRleHQKKyk7CitDUkVB VEUgVEFCTEUgbWlfY2hpbGQgKCkgSU5IRVJJVFMgKG90aGVyX3BhcmVudCwgdGVtcG9yYWxfcGFy ZW50KTsKK0lOU0VSVCBJTlRPIG1pX2NoaWxkIChwcmVmaXgsIG5vdGUsIGlkLCB2YWxpZF9hdCwg bmFtZSkgVkFMVUVTCisgICgncGZ4JywgJ21lbW8nLCAxLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAxMC0wMS0wMScpLCAnb2xkJyk7CitVUERBVEUgdGVtcG9yYWxfcGFyZW50IEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDEtMDEtMDEnIFRPICcyMDAyLTAxLTAxJworICBTRVQg bmFtZSA9ICduZXcnCisgIFdIRVJFIGlkID0gMTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgdGFibGVvaWQgfCBp ZCB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0tLS0rLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIG1pX2NoaWxkIHwgIDEgfCBbMjAwMC0wMS0w MSwyMDAxLTAxLTAxKSB8IG9sZAorIG1pX2NoaWxkIHwgIDEgfCBbMjAwMS0wMS0wMSwyMDAyLTAx LTAxKSB8IG5ldworIG1pX2NoaWxkIHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9s ZAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBtaV9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsK KyBwcmVmaXggfCBub3RlIHwgaWQgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCist LS0tLS0tLSstLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHBm eCAgICB8IG1lbW8gfCAgMSB8IFsyMDAwLTAxLTAxLDIwMDEtMDEtMDEpIHwgb2xkCisgcGZ4ICAg IHwgbWVtbyB8ICAxIHwgWzIwMDEtMDEtMDEsMjAwMi0wMS0wMSkgfCBuZXcKKyBwZnggICAgfCBt ZW1vIHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9sZAorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3BhcmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8 IHZhbGlkX2F0IHwgbmFtZSAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1RS VU5DQVRFIG1pX2NoaWxkLCBvdGhlcl9wYXJlbnQsIHRlbXBvcmFsX3BhcmVudDsKK0lOU0VSVCBJ TlRPIG1pX2NoaWxkIChwcmVmaXgsIG5vdGUsIGlkLCB2YWxpZF9hdCwgbmFtZSkgVkFMVUVTCisg ICgncGZ4JywgJ21lbW8nLCAxLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScp LCAnb2xkJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMS0wMS0wMScgVE8gJzIwMDItMDEtMDEnCisgIFdIRVJFIGlkID0gMTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIg QlkgdmFsaWRfYXQ7CisgdGFibGVvaWQgfCBpZCB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAKKy0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQor IG1pX2NoaWxkIHwgIDEgfCBbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKSB8IG9sZAorIG1pX2NoaWxk IHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9sZAorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBtaV9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBwcmVmaXggfCBub3RlIHwgaWQg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCistLS0tLS0tLSstLS0tLS0rLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHBmeCAgICB8IG1lbW8gfCAgMSB8IFsy MDAwLTAxLTAxLDIwMDEtMDEtMDEpIHwgb2xkCisgcGZ4ICAgIHwgbWVtbyB8ICAxIHwgWzIwMDIt MDEtMDEsMjAxMC0wMS0wMSkgfCBvbGQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gT05MWSB0 ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IG5hbWUg CistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIHRlbXBvcmFs X3BhcmVudCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBtaV9jaGls ZAogLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBjb2x1bW5z CiAtLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1bW4sIHNv IGl0IG11c3QgYmUKIC0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJyb3dzIHRo ZSByYW5nZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAppbmRleCBhYzVi Y2U1NTNlYi4uMzE2YzNmNzMwODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zv cl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwKQEAgLTkxMyw2ICs5MTMsMTAgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10 CiAgIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CiAgIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIo ZmFsc2UsIGZhbHNlKTsKIAorQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10MQorICBCRUZP UkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0gg U1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwor CiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9O IGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VE VVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtOTMxLDYgKzkzNSwxMCBAQCBDUkVB VEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBE RUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9D RURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiAKK0NSRUFURSBUUklHR0VSIGZwb19i ZWZvcmVfcm93MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxz ZSwgZmFsc2UpOworCiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3JvdwogICBBRlRF UiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQ Uk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CkBAIC0xMjkyLDYgKzEzMDAsNyBA QCBEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOwogRFJPUCBUWVBFIG15ZGF0ZXJhbmdl OwogCiAtLSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4K Ky0tIEluY2x1ZGUgYSBHRU5FUkFURUQgU1RPUkVEIGNvbHVtbiB0byB0ZXN0IHVwZGF0ZWRDb2xz IGNvbHVtbiBtYXBwaW5nLgogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBoYXMgdGhlIHNhbWUg YXR0bnVtcyBhcyB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBoYXMgdGhlIGRp ZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKIC0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUg aGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1dCByZXZlcnNlZApAQCAtMTMwMCw2ICsx MzA5LDcgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKICAgaWQgaW50NHJh bmdlLAogICB2YWxpZF9hdCBkYXRlcmFuZ2UsCiAgIG5hbWUgdGV4dCwKKyAgcmFuZ2VfbGVuIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkp IFNUT1JFRCwKICAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CiBD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDIpJywgJ1syLDMpJyk7CkBAIC0xMzA3LDEz ICsxMzE3LDE1IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTCiBDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKLUFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZh bGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBp ZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4g dmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBw ZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMg Rk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKLUFM VEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09M VU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBEUk9QIENP TFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEws IEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIElOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUpIFZBTFVFUwpAQCAtMTM1OCw3 ICsxMzcwLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTAKIAogLS0gVXBkYXRlIGFsbCBwYXJ0 aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCiAKLVNFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICosIHVwcGVy KHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf MSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKQEAgLTEzOTgsNiArMTQxMCw3OSBAQCBT RUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwogCiBEUk9QIFRBQkxFIGZwb19ydWxl OwogCistLSBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggdGFibGUgaW5oZXJpdGFu Y2UKKy0tIExlZnRvdmVyIHJvd3MgbXVzdCBzdGF5IGluIHRoZSBjaGlsZCB0YWJsZSwgcHJlc2Vy dmluZyBjaGlsZC1zcGVjaWZpYyBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIGZwb19pbmhfcGFyZW50 ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dAor KTsKK0NSRUFURSBUQUJMRSBmcG9faW5oX2NoaWxkICgKKyAgZGVzY3JpcHRpb24gdGV4dAorKSBJ TkhFUklUUyAoZnBvX2luaF9wYXJlbnQpOworCistLSBVcGRhdGUgdGFyZ2V0cyB0aGUgcGFyZW50 OyB0aGUgbWF0Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK0lOU0VSVCBJTlRPIGZwb19p bmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sx LDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitVUERB VEUgZnBvX2luaF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0w MScgVE8gJzIwMTgtMTAtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJzsKKy0tIEFsbCB0aHJlZSBy b3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVzY3JpcHRpb24gcHJlc2VydmVkLgor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZwb19pbmhfcGFyZW50IE9SREVSIEJZ IHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2NoaWxkIE9SREVSIEJZIHZhbGlkX2F0 OworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50byB0aGUgcGFyZW50LgorU0VMRUNU ICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworCistLSBTYW1l IHRlc3QgZm9yIERFTEVURSBpbnN0ZWFkIG9mIFVQREFURToKK1RSVU5DQVRFIGZwb19pbmhfY2hp bGQsIGZwb19pbmhfcGFyZW50OworSU5TRVJUIElOVE8gZnBvX2luaF9jaGlsZCAoaWQsIHZhbGlk X2F0LCBuYW1lLCBkZXNjcmlwdGlvbikgVkFMVUVTCisgICgnWzEsMiknLCAnWzIwMTgtMDEtMDEs MjAxOS0wMS0wMSknLCAnb25lJywgJ2luaXRpYWwnKTsKK0RFTEVURSBGUk9NIGZwb19pbmhfcGFy ZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTEw LTAxJzsKKy0tIEFsbCB0aHJlZSByb3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVz Y3JpcHRpb24gcHJlc2VydmVkLgorU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZw b19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2No aWxkIE9SREVSIEJZIHZhbGlkX2F0OworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50 byB0aGUgcGFyZW50LgorU0VMRUNUICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZ IHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZwb19pbmhfcGFyZW50IENBU0NBREU7CisKKy0tIFVQ REFURSBGT1IgUE9SVElPTiBPRiB3aXRoIG11bHRpcGxlIGluaGVyaXRhbmNlCistLSBMZWZ0b3Zl ciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIGV2ZW4gaWYgdGhlIHJhbmdlIGNv bHVtbidzCistLSBhdHRudW0gZGlmZmVycyBiZXR3ZWVuIHRoZSB0YXJnZXQgcGFyZW50IGFuZCBj aGlsZC4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgKAorICBpZCBpbnQsCisgIHZhbGlk X2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworQ1JFQVRFIFRBQkxFIG90aGVyX3BhcmVu dCAoCisgIHByZWZpeCB0ZXh0LAorICBub3RlIHRleHQKKyk7CitDUkVBVEUgVEFCTEUgbWlfY2hp bGQgKCkgSU5IRVJJVFMgKG90aGVyX3BhcmVudCwgdGVtcG9yYWxfcGFyZW50KTsKKworSU5TRVJU IElOVE8gbWlfY2hpbGQgKHByZWZpeCwgbm90ZSwgaWQsIHZhbGlkX2F0LCBuYW1lKSBWQUxVRVMK KyAgKCdwZngnLCAnbWVtbycsIDEsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICdvbGQnKTsKKworVVBEQVRFIHRlbXBvcmFsX3BhcmVudCBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDAxLTAxLTAxJyBUTyAnMjAwMi0wMS0wMScKKyAgU0VUIG5hbWUgPSAnbmV3 JworICBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIG1pX2NoaWxk IE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3BhcmVudCBP UkRFUiBCWSB2YWxpZF9hdDsKKworVFJVTkNBVEUgbWlfY2hpbGQsIG90aGVyX3BhcmVudCwgdGVt cG9yYWxfcGFyZW50OworSU5TRVJUIElOVE8gbWlfY2hpbGQgKHByZWZpeCwgbm90ZSwgaWQsIHZh bGlkX2F0LCBuYW1lKSBWQUxVRVMKKyAgKCdwZngnLCAnbWVtbycsIDEsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdvbGQnKTsKKworREVMRVRFIEZST00gdGVtcG9yYWxf cGFyZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDEtMDEtMDEnIFRPICcyMDAy LTAxLTAxJworICBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIG1p X2NoaWxkIE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3Bh cmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgQ0FT Q0FERTsKKwogLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBj b2x1bW5zCiAtLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1 bW4sIHNvIGl0IG11c3QgYmUKIC0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJy b3dzIHRoZSByYW5nZS4KLS0gCjIuNDcuMwoK --000000000000ef0350065142e83d--