Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uy8WG-004M02-3E for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 12:41:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uy8WD-00BV8j-6P for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 12:41:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uy8WC-00BV8Z-Gx for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 12:41:17 +0000 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uy8WA-000XZn-0t for pgsql-hackers@postgresql.org; Mon, 15 Sep 2025 12:41:16 +0000 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-54a1bc43aacso596204e0c.3 for ; Mon, 15 Sep 2025 05:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757940074; x=1758544874; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=amDXTI2RPK2I8s3oT8N1XAFP0lby4pdPPX1MptQvdCQ=; b=I8z7STorJRMHoCxsSjNizC4Rz5ZpzeRWaQdLrkP1UeYwu5sJ7+7RDGlVMFOHD97n6i NTnXNcLSyUxS3/SWamhWC5KPqC4YXyxY0ti6AIPRUOYnsk8AymJkQi8cuoKMKsdYD3W7 FKhcRNdiCUUs5pHNaVeUkfrKsSnGgZN4d1hFrki5qryXuJbc+oP0CuuVAQ/wzSfBsGPW SYelIfoZR0ez2PnbLOY17lQ6piSGKRlMmWTbdIMUH693f2iRq7masokPPeVzmwObiqqJ RdYihTYD0gw5wKTVwN5hLKa36CvdIKcTyONrxW+4iA+1QLQlY81/EpEl9UdCIL7a/fZr sHPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757940074; x=1758544874; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=amDXTI2RPK2I8s3oT8N1XAFP0lby4pdPPX1MptQvdCQ=; b=Mv2AIi1Rx54hLVhLHuU96rnfzK769R3qmrg3hq7AVxspvScobX7Oz8np7k5jW+1sr0 EM2YArClUdq9bMVTjvkWaNKb9qW7qQ5OS9B8WgPP/Ig/JCoLqTuNmP4Fs6BouFw/nZxm LkDf6dw4X0SAnciNJcP648912armEGHHaqaiH+hmTpTAKk6rSsMn87jnX7Uh7hP1OTHR sxieNKii6slESrRfwEmfka5i6Cd8+5DErE1tjz1y33vouBIOs9pibQWY5KYkS5il9ANE 7azaorFPn1y+/imEEZcubqEwydESYko8zDip+5Hy7IkFwl7pSCcznbtDhJphrHQocOZ7 Lekw== X-Gm-Message-State: AOJu0Yxtj4WCaJtT8Vn32ZMDEQ4rZD4y6n16s3KezIzOAmLj0RE5TqCb 3cmVVCqUyACKMSKNmlHAzIukYPirWICMb/vE6mRIzQcLxEp4YWKwXGFaEWerRQa57oRVoGjDqVl h9iOEu8vjHEmap19JxD2tpc7qNp5sv7w= X-Gm-Gg: ASbGncu+vk58AOufnEfk7G0wOm5LRHBs9fcIxCUfdwaPDEGPm7K686bqq2jVfca/Kct YqM0zPsVZUZ1yjwbt3DMQ6ZrUiIQsMDRpCStSlsbI4wHRbYICLJflif/My0KRLG4lig2eSm5CtE WdVbsKiOsfCE+jwYx3mflZPG/VJJiYsqbQKhDLNeMDEK4cEewxdx9i3Xcvf2telfEkksaAV8d7h aPQ57FWZjHDrxozuktQuNltgam5MYEKdo5Nb9Qqv//yzo5PaA== X-Google-Smtp-Source: AGHT+IHqeUXdaLpqxJymGHal6eMMyOmmsJxupZEAlAIZvQtVMK0nU4jMQc/I+fiyo4InmbrSpUoQD9rRul5jOYcUr1Q= X-Received: by 2002:a05:6122:1823:b0:544:6d4a:f52b with SMTP id 71dfb90a1353d-54a16b1d67amr3260076e0c.3.1757940073210; Mon, 15 Sep 2025 05:41:13 -0700 (PDT) MIME-Version: 1.0 References: <2B70C6CA-606B-438C-8EF2-84DCBA1C0813@gmail.com> In-Reply-To: From: jian he Date: Mon, 15 Sep 2025 20:40:36 +0800 X-Gm-Features: AS18NWBlfCtX6CHfYsXQDBpbi_R1Cdp6IFile0uUioJ7mdb85amJj0jCqWZ6zcI Message-ID: Subject: Re: let ALTER TABLE DROP COLUMN drop whole-row referenced object To: Chao Li Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000099c88d063ed651bb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000099c88d063ed651bb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 15, 2025 at 11:48=E2=80=AFAM Chao Li w= rote: > > 3 - 0001 > ``` > + } > + } > + ReleaseSysCache(indexTuple); > + } > + CommandCounterIncrement(); > ``` > > Why CommandCounterIncrement() is needed? In current code, there is a Comm= andCounterIncrement() after CatalogTupleUpdate(), which is necessary. But f= or your new code, maybe you considered =E2=80=9CrecordDependencyOn()=E2=80= =9D needs CommandCounterIncrement(). I searched over all places when =E2=80= =9CrecordDependencyOn()=E2=80=9D is called, I don=E2=80=99t see CommandCoun= terIncrement() is called. > My thought is that CommandCounterIncrement may be needed; because recordDependencyOn inserts many tuples to pg_depend, then later performMultipleDeletions will interact with pg_depend. > > 5 - 0001 > =C2=B7=C2=B7=C2=B7 > + conscan =3D systable_beginscan(conDesc, ConstraintRelidTypidNameIndexId= , true, > + NULL, 3, skey); > + if (!HeapTupleIsValid(contuple =3D systable_getnext(conscan))) > + elog(ERROR, "constraint \"%s\" of relation \"%s\" does not exist", > + constr_name, RelationGetRelationName(rel)); > =C2=B7=C2=B7=C2=B7 > > Should we continue after elog()? > if "elog(ERROR," happens, then it will abort, so there is no need to "continue", I think. Summary of attached v4: v4-0001: Handles ALTER TABLE DROP COLUMN when whole-row Vars are referenced in check constraints and indexes. v4-0002: Handles ALTER TABLE ALTER COLUMN SET DATA TYPE when whole-row Vars are referenced in check constraints and indexes. v4-0003: Handle ALTER TABLE ALTER COLUMN SET DATA TYPE and ALTER TABLE DROP COLUMN when policy objects reference whole-row Vars. Policy quals and chec= k quals may contain whole-row Vars and can include sublinks (unplanned subqueries), pull_varattnos is not enough to locate whole-row Var. Instead, obtain the whole-row type OID and recursively check each Var in expression = node to see if its vartype matches the whole-row type OID. --00000000000099c88d063ed651bb Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0003-disallow-change-or-drop-column-when-wholerow-referenced-policy-ex.patch" Content-Disposition: attachment; filename="v4-0003-disallow-change-or-drop-column-when-wholerow-referenced-policy-ex.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfl42o6g0 RnJvbSA1ZDNhZDcyMDU5OTc3YzZjMzU3NmM5MmUxYmEyNTY4NGY4MGI2MjhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTUgU2VwIDIwMjUgMjA6MTk6MjkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDMvM10gZGlzYWxsb3cgY2hhbmdlIG9yIGRyb3AgY29sdW1uIHdoZW4gd2hvbGVyb3cKIHJlZmVy ZW5jZWQgcG9saWN5IGV4aXN0cwoKZGVtbzoKQ1JFQVRFIFRBQkxFIHJsc190YmwgKGEgaW50LCBi IGludCwgYyBpbnQpOwpDUkVBVEUgUE9MSUNZIHAxIE9OIHJsc190YmwgVVNJTkcgKHJsc190Ymwg Pj0gUk9XKDEsMSwxKSk7CgpBTFRFUiBUQUJMRSBybHNfdGJsIERST1AgQ09MVU1OIGI7IC0tZXJy b3IKRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gYiBvZiB0YWJsZSBybHNfdGJsIGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKREVUQUlMOiAgcG9saWN5IHAxIG9uIHRhYmxlIHJs c190YmwgZGVwZW5kcyBvbiBjb2x1bW4gYiBvZiB0YWJsZSBybHNfdGJsCkhJTlQ6ICBVc2UgRFJP UCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCgpBTFRFUiBU QUJMRSBybHNfdGJsIEFMVEVSIENPTFVNTiBiIFNFVCBEQVRBIFRZUEUgQklHSU5UOyAtLWVycm9y CkVSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJybHNfdGJsIiBiZWNhdXNlIHNlY3VyaXR5IHBv bGljeSAicDEiIHVzZXMgaXRzIHJvdyB0eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9w IHBvbGljeSAicDEiIGZpcnN0CgpBTFRFUiBUQUJMRSBybHNfdGJsIERST1AgQ09MVU1OIGIgQ0FT Q0FERTsgLS1vawpOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBvbGljeSBwMSBvbiB0YWJsZSBy bHNfdGJsCkFMVEVSIFRBQkxFCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1 ZnhHQTZLVlF5N0RiSEdMVnc5czlLS21wR3ladDVNRTZDN2tFZmpEcHIyd1pDd0BtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgOTEg KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5j ICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0 aW1pemVyLmggICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2Vj dXJpdHkub3V0IHwgMTcgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNx bCAgICAgIHwgMTIgKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQ5NDlkNzIwNGEwLi40MDNiOGExYWRi OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIyMDk2LDcgKzIyMDk2LDcgQEAgR2V0 QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQog fQogCiAvKgotICogUmVjb3JkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHdob2xlLXJvdyBvYmplY3Rz IChpbmRleGVzLCBjb25zdHJhaW50cykKKyAqIFJlY29yZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB3 aG9sZS1yb3cgb2JqZWN0cyAoaW5kZXhlcywgY29uc3RyYWludHMgb3IgcG9saWNpZXMpCiAgKiBh c3NvY2lhdGVkIHdpdGggcmVsYXRpb24gYW5kIHJlbGF0aW9uJ3MgT2JqZWN0QWRkcmVzcy4KICAq IGVycm9yX291dCBtZWFucyBjYW4gbm90IGluc3RhbGwgc3VjaCBkZXBlbmRlbmN5LCB3ZSBoYXZl IHRvIGVycm9yIG91dCBleHBsaWNpdGx5LgogICovCkBAIC0yMjEwNyw5ICsyMjEwNywxNSBAQCBy ZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IoUmVsYXRpb24gcmVsLCBjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsIGJvbwogCUxpc3QJICAgKmluZGV4bGlzdCA9IE5JTDsKIAlPYmpl Y3RBZGRyZXNzIGNvbl9vYmo7CiAJT2JqZWN0QWRkcmVzcyBpZHhfb2JqOworCU9iamVjdEFkZHJl c3MgcG9sX29iajsKIAlib29sCQlmaW5kX3dob2xlcm93ID0gZmFsc2U7CiAKIAlUdXBsZUNvbnN0 ciAqY29uc3RyID0gUmVsYXRpb25HZXREZXNjcihyZWwpLT5jb25zdHI7CisJUmVsYXRpb24JcGdf cG9saWN5OworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJU3lzU2NhbkRlc2Mgc3NjYW47CisJSGVh cFR1cGxlCXBvbGljeV90dXBsZTsKKwlPaWQJCQlyZWx0eXBpZDsKIAogCWlmIChjb25zdHIgJiYg Y29uc3RyLT5udW1fY2hlY2sgPiAwKQogCXsKQEAgLTIyMjY1LDQgKzIyMjcxLDg3IEBAIHJlY29y ZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihSZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwgYm9vCiAJCX0KIAkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOwog CX0KKworCWZpbmRfd2hvbGVyb3cgPSBmYWxzZTsKKwlyZWx0eXBpZCA9IGdldF9yZWxfdHlwZV9p ZChSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCisJcGdfcG9saWN5ID0gdGFibGVfb3BlbihQb2xp Y3lSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZza2V5WzBdLAor CQkJCUFudW1fcGdfcG9saWN5X3BvbHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwg Rl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOwor CXNzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BvbGljeSwKKwkJCQkJCQkgICBQb2xpY3lQ b2xyZWxpZFBvbG5hbWVJbmRleElkLCB0cnVlLCBOVUxMLCAxLAorCQkJCQkJCSAgIHNrZXkpOwor CXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHBvbGljeV90dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c3NjYW4pKSkKKwl7CisJCURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJaXNudWxsOworCQljaGFyCSAg ICpzdHJfdmFsdWU7CisJCU5vZGUJCSpwb2xleHByOworCisJCUZvcm1fcGdfcG9saWN5IHBvbGlj eSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHBvbGljeV90dXBsZSk7CisKKwkJLyogR2V0 IHBvbGljeSBxdWFsICovCisJCWRhdHVtID0gaGVhcF9nZXRhdHRyKHBvbGljeV90dXBsZSwgQW51 bV9wZ19wb2xpY3lfcG9scXVhbCwKKwkJCQkJCQkgUmVsYXRpb25HZXREZXNjcihwZ19wb2xpY3kp LCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCXsKKwkJCXN0cl92YWx1ZSA9IFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pOworCQkJcG9sZXhwciA9IChOb2RlICopIHN0cmluZ1RvTm9kZShz dHJfdmFsdWUpOworCQkJcGZyZWUoc3RyX3ZhbHVlKTsKKworCQkJZmluZF93aG9sZXJvdyA9IEV4 cHJDb250YWluV2hvbGVSb3cocG9sZXhwciwgcmVsdHlwaWQpOworCQkJaWYgKGZpbmRfd2hvbGVy b3cgJiYgIWVycm9yX291dCkKKwkJCXsKKwkJCQlwb2xfb2JqLmNsYXNzSWQgPSBQb2xpY3lSZWxh dGlvbklkOworCQkJCXBvbF9vYmoub2JqZWN0SWQgPSBwb2xpY3ktPm9pZDsKKwkJCQlwb2xfb2Jq Lm9iamVjdFN1YklkID0gMDsKKworCQkJCS8qIHJlY29yZCBkZXBlbmRlbmN5IGZvciBwb2xpY2ll cyB0aGF0IHJlZmVyZW5jZXMgd2hvbGUtcm93IFZhciAqLworCQkJCXJlY29yZERlcGVuZGVuY3lP bigmcG9sX29iaiwgb2JqZWN0LCBERVBFTkRFTkNZX05PUk1BTCk7CisJCQkJY29udGludWU7CisJ CQl9CisKKwkJCWlmIChmaW5kX3dob2xlcm93ICYmIGVycm9yX291dCkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCWVy cm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIHNlY3VyaXR5IHBvbGljeSBc IiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLAorCQkJCQkJCQlOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpLAorCQkJCQkJZXJyaGlu dCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBwb2xpY3kgXCIlc1wiIGZpcnN0IiwKKwkJCQkJCQkJ TmFtZVN0cihwb2xpY3ktPnBvbG5hbWUpKSk7CisJCX0KKworCQlkYXR1bSA9IGhlYXBfZ2V0YXR0 cihwb2xpY3lfdHVwbGUsIEFudW1fcGdfcG9saWN5X3BvbHdpdGhjaGVjaywKKwkJCQkJCQkgUmVs YXRpb25HZXREZXNjcihwZ19wb2xpY3kpLCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCXsK KwkJCXN0cl92YWx1ZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQkJcG9sZXhwciA9 IChOb2RlICopIHN0cmluZ1RvTm9kZShzdHJfdmFsdWUpOworCQkJcGZyZWUoc3RyX3ZhbHVlKTsK KworCQkJZmluZF93aG9sZXJvdyA9IEV4cHJDb250YWluV2hvbGVSb3cocG9sZXhwciwgcmVsdHlw aWQpOworCQkJaWYgKGZpbmRfd2hvbGVyb3cgJiYgIWVycm9yX291dCkKKwkJCXsKKwkJCQlwb2xf b2JqLmNsYXNzSWQgPSBQb2xpY3lSZWxhdGlvbklkOworCQkJCXBvbF9vYmoub2JqZWN0SWQgPSBw b2xpY3ktPm9pZDsKKwkJCQlwb2xfb2JqLm9iamVjdFN1YklkID0gMDsKKworCQkJCS8qIHJlY29y ZCBkZXBlbmRlbmN5IGZvciBwb2xpY2llcyB0aGF0IHJlZmVyZW5jZXMgd2hvbGUtcm93IFZhciAq LworCQkJCXJlY29yZERlcGVuZGVuY3lPbigmcG9sX29iaiwgb2JqZWN0LCBERVBFTkRFTkNZX05P Uk1BTCk7CisJCQl9CisKKwkJCWlmIChmaW5kX3dob2xlcm93ICYmIGVycm9yX291dCkKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJCWVycm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIHNlY3VyaXR5 IHBvbGljeSBcIiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQlOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpLAorCQkJ CQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBwb2xpY3kgXCIlc1wiIGZpcnN0IiwK KwkJCQkJCQkJTmFtZVN0cihwb2xpY3ktPnBvbG5hbWUpKSk7CisJCX0KKwl9CisJc3lzdGFibGVf ZW5kc2Nhbihzc2Nhbik7CisJdGFibGVfY2xvc2UocGdfcG9saWN5LCBBY2Nlc3NTaGFyZUxvY2sp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC92YXIuYwppbmRleCA4MDY1MjM3YTE4OS4uMzZkZTBhM2Jm Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5jCkBAIC00OCw2ICs0OCwxMCBAQCB0eXBlZGVm IHN0cnVjdAogCUxpc3QJICAgKnZhcnM7CiAJaW50CQkJc3VibGV2ZWxzX3VwOwogfSBwdWxsX3Zh cnNfY29udGV4dDsKK3R5cGVkZWYgc3RydWN0Cit7CisJT2lkCQkJcmVsdHlwaWQ7Cit9IGNvbnRh aW5fd2hvbGVyb3dfY29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTczLDYgKzc3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyBib29sIHB1bGxfdmFybm9zX3dhbGtlcihOb2RlICpu b2RlLAogCQkJCQkJCSAgIHB1bGxfdmFybm9zX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJv b2wgcHVsbF92YXJhdHRub3Nfd2Fsa2VyKE5vZGUgKm5vZGUsIHB1bGxfdmFyYXR0bm9zX2NvbnRl eHQgKmNvbnRleHQpOworc3RhdGljIGJvb2wgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIoTm9k ZSAqbm9kZSwgY29udGFpbl93aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBib29s IHB1bGxfdmFyc193YWxrZXIoTm9kZSAqbm9kZSwgcHVsbF92YXJzX2NvbnRleHQgKmNvbnRleHQp Owogc3RhdGljIGJvb2wgY29udGFpbl92YXJfY2xhdXNlX3dhbGtlcihOb2RlICpub2RlLCB2b2lk ICpjb250ZXh0KTsKIHN0YXRpYyBib29sIGNvbnRhaW5fdmFyc19vZl9sZXZlbF93YWxrZXIoTm9k ZSAqbm9kZSwgaW50ICpzdWJsZXZlbHNfdXApOwpAQCAtMzI3LDYgKzMzMiw2MSBAQCBwdWxsX3Zh cmF0dG5vc193YWxrZXIoTm9kZSAqbm9kZSwgcHVsbF92YXJhdHRub3NfY29udGV4dCAqY29udGV4 dCkKIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3ZhcmF0dG5vc193 YWxrZXIsIGNvbnRleHQpOwogfQogCitzdGF0aWMgYm9vbAorRXhwckNvbnRhaW5XaG9sZVJvd193 YWxrZXIoTm9kZSAqbm9kZSwgY29udGFpbl93aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KQorewor CWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgVmFy KSkKKwl7CisJCVZhcgkJICAgKnZhciA9IChWYXIgKikgbm9kZTsKKworCQlpZiAodmFyLT52YXJh dHRubyA9PSBJbnZhbGlkQXR0ck51bWJlciAmJgorCQkJdmFyLT52YXJ0eXBlID09IGNvbnRleHQt PnJlbHR5cGlkKQorCQkJcmV0dXJuIHRydWU7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlm IChJc0Eobm9kZSwgUXVlcnkpKQorCXsKKwkJLyogUmVjdXJzZSBpbnRvIFJURSBzdWJxdWVyeSBv ciBub3QteWV0LXBsYW5uZWQgc3VibGluayBzdWJxdWVyeSAqLworCQlib29sCQlyZXN1bHQ7CisK KwkJcmVzdWx0ID0gcXVlcnlfdHJlZV93YWxrZXIoKFF1ZXJ5ICopIG5vZGUsIEV4cHJDb250YWlu V2hvbGVSb3dfd2Fsa2VyLAorCQkJCQkJCQkgICBjb250ZXh0LCAwKTsKKwkJcmV0dXJuIHJlc3Vs dDsKKwl9CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBFeHByQ29udGFp bldob2xlUm93X3dhbGtlciwgY29udGV4dCk7Cit9CisKKworLyoKKyAqIEV4cHJDb250YWluV2hv bGVSb3cgLQorICoKKyAqIERldGVybWluZSB3aGV0aGVyIGFuIGV4cHJlc3Npb24gY29udGFpbnMg YSB3aG9sZS1yb3cgVmFyLCByZWN1cnNpbmcgYXMgbmVlZGVkLgorICogRm9yIHNpbXBsZSBleHBy ZXNzaW9ucyB3aXRob3V0IHN1YmxpbmtzLCBwdWxsX3ZhcmF0dG5vcyBpcyB1c3VhbGx5IHN1ZmZp Y2llbnQKKyAqIHRvIGRldGVjdCBhIHdob2xlLXJvdyBWYXIuIElmIHRoZSBub2RlIGNvbnRhaW5z IHN1YmxpbmtzICh1bnBsYW5uZWQgc3VicXVlcmllcyksCisgKiB0aGUgY2hlY2sgbXVzdCBpbnN0 ZWFkIHJlbHkgb24gdGhlIHdob2xlLXJvdyB0eXBlIE9JRC4gVGhlcmVmb3JlLCByZWx0eXBpZCBp cworICogdXNlZCBjb25zaXN0ZW50bHkgdG8gZGV0ZXJtaW5lIHRoZSBwcmVzZW5jZSBvZiBhIHdo b2xlLXJvdyBWYXIuCisgKi8KK2Jvb2wKK0V4cHJDb250YWluV2hvbGVSb3coTm9kZSAqbm9kZSwg T2lkIHJlbHR5cGlkKQoreworCWNvbnRhaW5fd2hvbGVyb3dfY29udGV4dCBjb250ZXh0OworCisJ Y29udGV4dC5yZWx0eXBpZCA9IHJlbHR5cGlkOworCisJQXNzZXJ0KE9pZElzVmFsaWQocmVsdHlw aWQpKTsKKworCXJldHVybiBxdWVyeV9vcl9leHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsCisJ CQkJCQkJCQkJICAgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIsCisJCQkJCQkJCQkJICAgJmNv bnRleHQsCisJCQkJCQkJCQkJICAgMCk7Cit9CisKIAogLyoKICAqIHB1bGxfdmFyc19vZl9sZXZl bApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IDM3YmMxM2MyY2JkLi5kMzFkMWM0OWM3 NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtMjA1LDYgKzIwNSw3IEBAIGV4dGVy biBTb3J0R3JvdXBDbGF1c2UgKmdldF9zb3J0Z3JvdXByZWZfY2xhdXNlX25vZXJyKEluZGV4IHNv cnRyZWYsCiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5vcyhQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqbm9kZSk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5vc19vZl9sZXZlbChQbGFu bmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IGxldmVsc3VwKTsKIGV4dGVybiB2b2lkIHB1 bGxfdmFyYXR0bm9zKE5vZGUgKm5vZGUsIEluZGV4IHZhcm5vLCBCaXRtYXBzZXQgKip2YXJhdHRu b3MpOworZXh0ZXJuIGJvb2wgRXhwckNvbnRhaW5XaG9sZVJvdyhOb2RlICpub2RlLCBPaWQgcmVs dHlwaWQpOwogZXh0ZXJuIExpc3QgKnB1bGxfdmFyc19vZl9sZXZlbChOb2RlICpub2RlLCBpbnQg bGV2ZWxzdXApOwogZXh0ZXJuIGJvb2wgY29udGFpbl92YXJfY2xhdXNlKE5vZGUgKm5vZGUpOwog ZXh0ZXJuIGJvb2wgY29udGFpbl92YXJzX29mX2xldmVsKE5vZGUgKm5vZGUsIGludCBsZXZlbHN1 cCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CmluZGV4IDhjODc5 NTA5MzEzLi5iMmI1MzMzZjhkYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9yb3dzZWN1cml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1 cml0eS5vdXQKQEAgLTIzNTcsNiArMjM1NywyMyBAQCBTRUxFQ1QgKiBGUk9NIGRvY3VtZW50Owog ICAxNCB8ICAxMSB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwgbmV3IG5vdmVsICAgICAg ICAgICAgICAgICAgICAgICAgfCAKICgxNiByb3dzKQogCistLWNoZWNrIGRyb3AgY29sdW1uIHJl c3RyaWN0IG9yIGFsdGVyIGNvbHVtbiBkYXRhIHR5cGUgd2lsbCBmYWlsIGJlY2F1c2Ugb2Ygd2hv bGUtcm93CistLXJlZmVyZW5jZWQgc2VjdXJpdHkgcG9saWN5IGV4aXN0cy4KK0FMVEVSIFRBQkxF IGRvY3VtZW50IEFERCBDT0xVTU4gZHVtbXkgSU5UNDsKK0NSRUFURSBQT0xJQ1kgcDcgT04gZG9j dW1lbnQgQVMgUEVSTUlTU0lWRQorICAgIFVTSU5HIChjaWQgSVMgTk9UIE5VTEwgQU5ECisgICAg KFdJVEggY3RlIEFTIChTRUxFQ1QgVFJVRSBGUk9NIHVhY2NvdW50CisgICAgICAgIFdIRVJFIEVY SVNUUyAoU0VMRUNUIGRvY3VtZW50IEZST00gdWFjY291bnQgV0hFUkUgdWFjY291bnQgSVMgTlVM TCkpCisgICAgU0VMRUNUICogRlJPTSBjdGUpKTsKK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFMVEVS IENPTFVNTiBkdW1teSBTRVQgREFUQSBUWVBFIEJJR0lOVDsgLS1lcnJvcgorRVJST1I6ICBjYW5u b3QgYWx0ZXIgdGFibGUgImRvY3VtZW50IiBiZWNhdXNlIHNlY3VyaXR5IHBvbGljeSAicDciIHVz ZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBwb2xpY3kgInA3 IiBmaXJzdAorQUxURVIgVEFCTEUgZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVtbXk7IC0tZXJyb3IK K0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGR1bW15IG9mIHRhYmxlIGRvY3VtZW50IGJlY2F1 c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBvbGljeSBwNyBvbiB0YWJs ZSBkb2N1bWVudCBkZXBlbmRzIG9uIGNvbHVtbiBkdW1teSBvZiB0YWJsZSBkb2N1bWVudAorSElO VDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRv by4KK0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15IENBU0NBREU7IC0tb2sK K05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gcG9saWN5IHA3IG9uIHRhYmxlIGRvY3VtZW50CiAt LQogLS0gUk9MRS9HUk9VUAogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jv d3NlY3VyaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbAppbmRl eCAyMWFjMGNhNTFlZS4uMGNkZDVhODJjYTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jvd3NlY3VyaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0 eS5zcWwKQEAgLTEwMjEsNiArMTAyMSwxOCBAQCBEUk9QIFBPTElDWSBwMSBPTiBkb2N1bWVudDsK IC0tIEp1c3QgY2hlY2sgZXZlcnl0aGluZyB3ZW50IHBlciBwbGFuCiBTRUxFQ1QgKiBGUk9NIGRv Y3VtZW50OwogCistLWNoZWNrIGRyb3AgY29sdW1uIHJlc3RyaWN0IG9yIGFsdGVyIGNvbHVtbiBk YXRhIHR5cGUgd2lsbCBmYWlsIGJlY2F1c2Ugb2Ygd2hvbGUtcm93CistLXJlZmVyZW5jZWQgc2Vj dXJpdHkgcG9saWN5IGV4aXN0cy4KK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFERCBDT0xVTU4gZHVt bXkgSU5UNDsKK0NSRUFURSBQT0xJQ1kgcDcgT04gZG9jdW1lbnQgQVMgUEVSTUlTU0lWRQorICAg IFVTSU5HIChjaWQgSVMgTk9UIE5VTEwgQU5ECisgICAgKFdJVEggY3RlIEFTIChTRUxFQ1QgVFJV RSBGUk9NIHVhY2NvdW50CisgICAgICAgIFdIRVJFIEVYSVNUUyAoU0VMRUNUIGRvY3VtZW50IEZS T00gdWFjY291bnQgV0hFUkUgdWFjY291bnQgSVMgTlVMTCkpCisgICAgU0VMRUNUICogRlJPTSBj dGUpKTsKK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFMVEVSIENPTFVNTiBkdW1teSBTRVQgREFUQSBU WVBFIEJJR0lOVDsgLS1lcnJvcgorQUxURVIgVEFCTEUgZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVt bXk7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15IENBU0NB REU7IC0tb2sKKwogLS0KIC0tIFJPTEUvR1JPVVAKIC0tCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IGExM2U4MTYyODkwLi44MWI5N2NjNjIyZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTM1MjEsNiArMzUyMSw3IEBAIGNvbm5fb2F1dGhfc2NvcGVfZnVuYwogY29ubl9zYXNs X3N0YXRlX2Z1bmMKIGNvbnRhaW5fYWdnc19vZl9sZXZlbF9jb250ZXh0CiBjb250YWluX3BsYWNl aG9sZGVyX3JlZmVyZW5jZXNfY29udGV4dAorY29udGFpbl93aG9sZXJvd19jb250ZXh0CiBjb252 ZXJ0X3Rlc3RleHByX2NvbnRleHQKIGNvcHlfZGF0YV9kZXN0X2NiCiBjb3B5X2RhdGFfc291cmNl X2NiCi0tIAoyLjM0LjEKCg== --00000000000099c88d063ed651bb Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Disposition: attachment; filename="v4-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfl42o6n2 RnJvbSBlZGYwOWI0ZDdkYTkzN2Q5NDZmNWM2ZWY2Y2E2ODA2MDE5ZDM3ZmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTUgU2VwIDIwMjUgMTU6MzI6NDkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDEvM10gQUxURVIgVEFCTEUgRFJPUCBDT0xVTU4gZHJvcCB3aG9sZXJvdyByZWZlcmVuY2VkCiBv YmplY3QKCkNSRUFURSBUQUJMRSB0cyAoYSBpbnQsIGMgaW50LCBiIGludCBjb25zdHJhaW50IGNj IGNoZWNrKCh0cyA9IFJPVygxLDEsMSkpKSk7CkNSRUFURSBJTkRFWCB0c2kzIG9uIHRzICgodHMg aXMgbnVsbCkpOwpDUkVBVEUgSU5ERVggdHNpNCBvbiB0cyAoYikgd2hlcmUgdHMgaXMgbm90IG51 bGw7CgpBTFRFUiBUQUJMRSB0cyBEUk9QIENPTFVNTiBhIENBU0NBREU7CndpbGwgZHJvcCBhYm92 ZSBhbGwgaW5kZXhlcywgY29uc3RyYWludHMgb24gdGhlIHRhYmxlIHRzLgoKbm93ClxkIHRzCiAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50cyIKIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQKLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCiBjICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfAogYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKCmRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEdBNktWUXk3RGJIR0xWdzlzOUtLbXBH eVp0NU1FNkM3a0VmakRwcjJ3WkN3QG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAxNzAgKysrKysrKysrKysrKysrKysrKysrLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgfCAgMTcgKysrCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICB8ICAxMyArKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsICAgICAgfCAgMTEgKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2luZGV4aW5nLnNxbCAgICAgICAgIHwgICA4ICsKIDUgZmlsZXMgY2hhbmdlZCwgMjE2 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCAzYmUyZTA1MWQzMi4uN2Y1ZTU4ZGE2MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CkBAIC03NDAsNiArNzQwLDcgQEAgc3RhdGljIExpc3QgKkdldFBhcmVudGVkRm9yZWlnbktleVJl ZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVp Z25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVD b21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRp YyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9y YWdlbW9kZSk7CitzdGF0aWMgdm9pZCByZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3Io UmVsYXRpb24gcmVsLCBjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgZXJyb3Jfb3V0 KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05MzMzLDYgKzkzMzQsMjYgQEAgQVRFeGVjRHJvcENvbHVt bihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAKIAlS ZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0 aW9uSWQ7CisJb2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCW9iamVj dC5vYmplY3RTdWJJZCA9IGF0dG51bTsKKworCS8qCisJICogQUxURVIgVEFCTEUgRFJPUCBDT0xV TU4gbXVzdCBhbHNvIHJlbW92ZSBpbmRleGVzIG9yIGNvbnN0cmFpbnRzIHRoYXQKKwkgKiBjb250 YWluIHdob2xlLXJvdyBWYXIgcmVmZXJlbmNlIGV4cHJlc3Npb25zLiBTaW5jZSB0aGVyZSBpcyBu byBkaXJlY3QKKwkgKiBkZXBlbmRlbmN5IHJlY29yZGVkIGJldHdlZW4gd2hvbGUtcm93IFZhcnMg YW5kIGluZGl2aWR1YWwgY29sdW1ucywgYW5kCisJICogY3JlYXRpbmcgc3VjaCBkZXBlbmRlbmNp ZXMgd291bGQgY2F1c2UgY2F0YWxvZyBibG9hdCAoc2VlCisJICogZmluZF9leHByX3JlZmVyZW5j ZXNfd2Fsa2VyKS4KKwkgKgorCSAqIEhlcmUgd2UgaGFuZGxlIHRoaXMgZXhwbGljaXRseS4gV2Ug Y2FsbCByZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IKKwkgKiB0byBlc3RhYmxpc2gg YSBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIGNvbHVtbiBhbmQgYW55IGNvbnN0cmFpbnQgb3IgaW5k ZXgKKwkgKiBpbnZvbHZpbmcgd2hvbGUtcm93IFZhcnMuICBwZXJmb3JtTXVsdGlwbGVEZWxldGlv bnMgd2lsbCB0aGVuIHRha2UgY2FyZQorCSAqIG9mIHJlbW92aW5nIHRoZW0uCisJKi8KKwlyZWNv cmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IocmVsLCAmb2JqZWN0LCBmYWxzZSk7CisKKwlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOworCiAJLyoKIAkgKiBQcm9wYWdhdGUgdG8gY2hpbGRy ZW4gYXMgYXBwcm9wcmlhdGUuICBVbmxpa2UgbW9zdCBvdGhlciBBTFRFUgogCSAqIHJvdXRpbmVz LCB3ZSBoYXZlIHRvIGRvIHRoaXMgb25lIGxldmVsIG9mIHJlY3Vyc2lvbiBhdCBhIHRpbWU7IHdl IGNhbid0CkBAIC05NDI2LDkgKzk0NDcsNiBAQCBBVEV4ZWNEcm9wQ29sdW1uKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAl9CiAKIAkvKiBBZGQgb2Jq ZWN0IHRvIGRlbGV0ZSAqLwotCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwot CW9iamVjdC5vYmplY3RJZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKLQlvYmplY3Qub2JqZWN0 U3ViSWQgPSBhdHRudW07CiAJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIGFkZHJz KTsKIAogCWlmICghcmVjdXJzaW5nKQpAQCAtMjIwNjIsMyArMjIwODAsMTQ5IEBAIEdldEF0dHJp YnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSkKIAogCXJl dHVybiBjc3RvcmFnZTsKIH0KKworLyoKKyAqIFJlY29yZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB3 aG9sZS1yb3cgb2JqZWN0cyAoaW5kZXhlcywgY29uc3RyYWludHMpCisgKiBhc3NvY2lhdGVkIHdp dGggcmVsYXRpb24gYW5kIHJlbGF0aW9uJ3MgT2JqZWN0QWRkcmVzcy4KKyAqIGVycm9yX291dCBt ZWFucyBjYW4gbm90IGluc3RhbGwgc3VjaCBkZXBlbmRlbmN5LCB3ZSBoYXZlIHRvIGVycm9yIG91 dCBleHBsaWNpdGx5LgorICovCitzdGF0aWMgdm9pZAorcmVjb3JkV2hvbGVSb3dEZXBlbmRlbmN5 T25PckVycm9yKFJlbGF0aW9uIHJlbCwgY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29s IGVycm9yX291dCkKK3sKKwlOb2RlCSAgICpleHByOworCUxpc3QJICAgKmluZGV4bGlzdCA9IE5J TDsKKwlPYmplY3RBZGRyZXNzIGNvbl9vYmo7CisJT2JqZWN0QWRkcmVzcyBpZHhfb2JqOworCWJv b2wJCWZpbmRfd2hvbGVyb3cgPSBmYWxzZTsKKworCVR1cGxlQ29uc3RyICpjb25zdHIgPSBSZWxh dGlvbkdldERlc2NyKHJlbCktPmNvbnN0cjsKKworCWlmIChjb25zdHIgJiYgY29uc3RyLT5udW1f Y2hlY2sgPiAwKQorCXsKKwkJQ29uc3RyQ2hlY2sgKmNoZWNrID0gY29uc3RyLT5jaGVjazsKKwor CQlmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0ci0+bnVtX2NoZWNrOyBpKyspCisJCXsKKwkJCUJp dG1hcHNldCAgKmV4cHJfYXR0cnMgPSBOVUxMOworCQkJY2hhcgkgICAqY29uc3RyX25hbWUgPSBj aGVja1tpXS5jY25hbWU7CisKKwkJCWV4cHIgPSBzdHJpbmdUb05vZGUoY2hlY2tbaV0uY2NiaW4p OworCisJCQkvKiBGaW5kIGFsbCBhdHRyaWJ1dGVzIHJlZmVyZW5jZWQgKi8KKwkJCXB1bGxfdmFy YXR0bm9zKGV4cHIsIDEsICZleHByX2F0dHJzKTsKKworCQkJZmluZF93aG9sZXJvdyA9IGJtc19p c19tZW1iZXIoMCAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJ CQkJICBleHByX2F0dHJzKTsKKwkJCWlmIChmaW5kX3dob2xlcm93ICYmICFlcnJvcl9vdXQpCisJ CQl7CisJCQkJUmVsYXRpb24JY29uRGVzYzsKKwkJCQlTeXNTY2FuRGVzYyBjb25zY2FuOworCQkJ CVNjYW5LZXlEYXRhIHNrZXlbM107CisJCQkJSGVhcFR1cGxlCWNvbnR1cGxlOworCisJCQkJLyog U2VhcmNoIGZvciBhIHBnX2NvbnN0cmFpbnQgZW50cnkgd2l0aCBzYW1lIG5hbWUgYW5kIHJlbGF0 aW9uICovCisJCQkJY29uRGVzYyA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJlbGF0aW9uSWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisKKwkJCQlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQkJCQlBbnVt X3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsCisJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAorCQkJCQkJCU9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSk7 CisJCQkJU2NhbktleUluaXQoJnNrZXlbMV0sCisJCQkJCQkJQW51bV9wZ19jb25zdHJhaW50X2Nv bnR5cGlkLAorCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlP YmplY3RJZEdldERhdHVtKEludmFsaWRPaWQpKTsKKwkJCQlTY2FuS2V5SW5pdCgmc2tleVsyXSwK KwkJCQkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29ubmFtZSwKKwkJCQkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfTkFNRUVRLAorCQkJCQkJCUNTdHJpbmdHZXREYXR1bShjb25zdHJfbmFtZSkp OworCisJCQkJY29uc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihjb25EZXNjLCBDb25zdHJhaW50 UmVsaWRUeXBpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkJCQkgTlVMTCwgMywgc2tleSk7 CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChj b25zY2FuKSkpCisJCQkJCWVsb2coRVJST1IsICJjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlv biBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJIGNvbnN0cl9uYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKTsKKworCQkJCWNvbl9vYmouY2xhc3NJZCA9IENvbnN0cmFpbnRS ZWxhdGlvbklkOworCQkJCWNvbl9vYmoub2JqZWN0SWQgPSAoKEZvcm1fcGdfY29uc3RyYWludCkg R0VUU1RSVUNUKGNvbnR1cGxlKSktPm9pZDsKKwkJCQljb25fb2JqLm9iamVjdFN1YklkID0gMDsK KworCQkJCS8qIHJlY29yZCBkZXBlbmRlbmN5IGZvciBjb25zdHJhaW50cyB0aGF0IHJlZmVyZW5j ZXMgd2hvbGUtcm93ICovCisJCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZjb25fb2JqLCBvYmplY3Qs IERFUEVOREVOQ1lfQVVUTyk7CisKKwkJCQlzeXN0YWJsZV9lbmRzY2FuKGNvbnNjYW4pOworCQkJ CXRhYmxlX2Nsb3NlKGNvbkRlc2MsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9CisJCX0KKwl9CisK KwlmaW5kX3dob2xlcm93ID0gZmFsc2U7CisJaW5kZXhsaXN0ID0gUmVsYXRpb25HZXRJbmRleExp c3QocmVsKTsKKwlmb3JlYWNoX29pZChpbmRleG9pZCwgaW5kZXhsaXN0KQorCXsKKwkJSGVhcFR1 cGxlCWluZGV4VHVwbGU7CisJCUZvcm1fcGdfaW5kZXggaW5kZXhTdHJ1Y3Q7CisJCU5vZGUJICAg Km5vZGU7CisKKwkJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmpl Y3RJZEdldERhdHVtKGluZGV4b2lkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRleFR1 cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIs IGluZGV4b2lkKTsKKwkJaW5kZXhTdHJ1Y3QgPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGlu ZGV4VHVwbGUpOworCisJCWlmICghaGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19p bmRleF9pbmRwcmVkLCBOVUxMKSkKKwkJeworCQkJRGF0dW0JCXByZWREYXR1bTsKKwkJCWNoYXIJ ICAgKnByZWRTdHJpbmc7CisJCQlCaXRtYXBzZXQgICpleHByX2F0dHJzID0gTlVMTDsKKworCQkJ LyogQ29udmVydCB0ZXh0IHN0cmluZyB0byBub2RlIHRyZWUgKi8KKwkJCXByZWREYXR1bSA9IFN5 c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkJ ICAgQW51bV9wZ19pbmRleF9pbmRwcmVkKTsKKwkJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKHByZWREYXR1bSk7CisJCQlub2RlID0gKE5vZGUgKikgc3RyaW5nVG9Ob2RlKHByZWRT dHJpbmcpOworCQkJcGZyZWUocHJlZFN0cmluZyk7CisKKwkJCXB1bGxfdmFyYXR0bm9zKG5vZGUs IDEsICZleHByX2F0dHJzKTsKKwkJCWZpbmRfd2hvbGVyb3cgPSBibXNfaXNfbWVtYmVyKDAgLSBG aXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJCQkJCSAgZXhwcl9hdHRy cyk7CisJCQlpZiAoZmluZF93aG9sZXJvdyAmJiAhZXJyb3Jfb3V0KQorCQkJeworCQkJCWlkeF9v YmouY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlpZHhfb2JqLm9iamVjdElkID0g aW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQ7CisJCQkJaWR4X29iai5vYmplY3RTdWJJZCA9IDA7CisJ CQkJLyogcmVjb3JkIGRlcGVuZGVuY3kgZm9yIGluZGV4ZXMgdGhhdCByZWZlcmVuY2VzIHdob2xl LXJvdyAqLworCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaWR4X29iaiwgb2JqZWN0LCBERVBFTkRF TkNZX0FVVE8pOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCQkJCWNvbnRp bnVlOworCQkJfQorCQl9CisKKwkJaWYgKCFoZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVt X3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkKKwkJeworCQkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJ CWNoYXIJICAgKmV4cHJTdHJpbmc7CisJCQlCaXRtYXBzZXQgICpleHByX2F0dHJzID0gTlVMTDsK KworCQkJLyogQ29udmVydCB0ZXh0IHN0cmluZyB0byBub2RlIHRyZWUgKi8KKwkJCWV4cHJEYXR1 bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJ CQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCQlleHByU3RyaW5nID0gVGV4dERh dHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQkJbm9kZSA9IChOb2RlICopIHN0cmluZ1RvTm9k ZShleHByU3RyaW5nKTsKKwkJCXBmcmVlKGV4cHJTdHJpbmcpOworCisJCQlwdWxsX3ZhcmF0dG5v cyhub2RlLCAxLCAmZXhwcl9hdHRycyk7CisKKwkJCWZpbmRfd2hvbGVyb3cgPSBibXNfaXNfbWVt YmVyKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJCQkJCSAg ZXhwcl9hdHRycyk7CisJCQlpZiAoZmluZF93aG9sZXJvdyAmJiAhZXJyb3Jfb3V0KQorCQkJewor CQkJCWlkeF9vYmouY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlpZHhfb2JqLm9i amVjdElkID0gaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQ7CisJCQkJaWR4X29iai5vYmplY3RTdWJJ ZCA9IDA7CisJCQkJLyogcmVjb3JkIGRlcGVuZGVuY3kgZm9yIGluZGV4ZXMgdGhhdCByZWZlcmVu Y2VzIHdob2xlLXJvdyAqLworCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaWR4X29iaiwgb2JqZWN0 LCBERVBFTkRFTkNZX0FVVE8pOworCQkJfQorCQl9CisJCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1 cGxlKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0 cmFpbnRzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0Cmlu ZGV4IDM1OTBkMzI3NGYwLi44OTMwYjRkYTdjZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb25zdHJhaW50cy5vdXQKQEAgLTI1NCw2ICsyNTQsMjMgQEAgRVJST1I6ICBzeXN0ZW0gY29s dW1uICJjdGlkIiByZWZlcmVuY2UgaW4gY2hlY2sgY29uc3RyYWludCBpcyBpbnZhbGlkCiBMSU5F IDM6ICAgICAgIENIRUNLIChOT1QgKGlzX2NhcGl0YWwgQU5EIGN0aWQ6OnRleHQgPSAnc3lzX2Nv bF9jaGVjay4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAt LQorLS0gRHJvcCBjb2x1bW4gYWxzbyBkcm9wIGNoZWNrIGNvbnN0cmFpbnRzIHRoYXQgaGF2ZSB3 aG9sZS1yb3cgcmVmZXJlbmNlCistLQorQ1JFQVRFIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCAo CisgICAgY2l0eSB0ZXh0LCBzdGF0ZSB0ZXh0LCBpc19jYXBpdGFsIGJvb2wsIGFsdGl0dWRlIGlu dCwKKyAgICBDT05TVFJBSU5UIGNjIENIRUNLIChjaXR5IGlzIG5vdCBudWxsKSwKKyAgICBDT05T VFJBSU5UIGNjMSBDSEVDSyAoRFJPUF9DT0xfQ0hFQ0tfVEJMIGlzIG5vdCBudWxsKSk7CitBTFRF UiBUQUJMRSBEUk9QX0NPTF9DSEVDS19UQkwgRFJPUCBDT0xVTU4gY2l0eTsKK1xkIERST1BfQ09M X0NIRUNLX1RCTAorICAgICAgICAgICBUYWJsZSAicHVibGljLmRyb3BfY29sX2NoZWNrX3RibCIK KyAgIENvbHVtbiAgIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBzdGF0ZSAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaXNfY2Fw aXRhbCB8IGJvb2xlYW4gfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGFsdGl0dWRlICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworRFJPUCBUQUJMRSBEUk9QX0NPTF9D SEVDS19UQkw7CistLQogLS0gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgZGVmYXVsdHMgYW5kIGNvbnN0 cmFpbnRzCiAtLQogQ1JFQVRFIFRBQkxFIElOU0VSVF9DSElMRCAoY3ggSU5UIGRlZmF1bHQgNDIs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IDRkMjlmYjg1MjkzLi5j YWMxY2NhM2ExZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGlu Zy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTY1 NCw2ICs2NTQsMTkgQEAgYWx0ZXIgdGFibGUgaWR4cGFydDIgZHJvcCBjb2x1bW4gYzsKICBiICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIAogZHJvcCB0YWJsZSBpZHhw YXJ0LCBpZHhwYXJ0MjsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGludCwgYiBpbnQsIGMgaW50 KTsKK2NyZWF0ZSBpbmRleCBvbiBpZHhwYXJ0KGMpOworY3JlYXRlIGluZGV4IG9uIGlkeHBhcnQo KGlkeHBhcnQgaXMgbm90IG51bGwpKTsKK2NyZWF0ZSBpbmRleCBvbiBpZHhwYXJ0KGEpIHdoZXJl IGlkeHBhcnQgaXMgbm90IG51bGw7CithbHRlciB0YWJsZSBpZHhwYXJ0IGRyb3AgY29sdW1uIGM7 CitcZCBpZHhwYXJ0CisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuaWR4cGFydCIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisKK2Ryb3AgdGFibGUgaWR4cGFydDsKIC0tIFZlcmlmeSB0aGF0 IGV4cHJlc3Npb24gaW5kZXhlcyBpbmhlcml0IGNvcnJlY3RseQogY3JlYXRlIHRhYmxlIGlkeHBh cnQgKGEgaW50LCBiIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhKTsKIGNyZWF0ZSB0YWJsZSBp ZHhwYXJ0MSAobGlrZSBpZHhwYXJ0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvbnN0cmFpbnRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbApp bmRleCAxZjZkYzhmZDY5Zi4uNjc2ZDg3MzYxMDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvbnN0cmFpbnRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJh aW50cy5zcWwKQEAgLTE2NSw2ICsxNjUsMTcgQEAgQ1JFQVRFIFRBQkxFIFNZU19DT0xfQ0hFQ0tf VEJMIChjaXR5IHRleHQsIHN0YXRlIHRleHQsIGlzX2NhcGl0YWwgYm9vbCwKICAgICAgICAgICAg ICAgICAgIGFsdGl0dWRlIGludCwKIAkJCQkgIENIRUNLIChOT1QgKGlzX2NhcGl0YWwgQU5EIGN0 aWQ6OnRleHQgPSAnc3lzX2NvbF9jaGVja190YmwnKSkpOwogCistLQorLS0gRHJvcCBjb2x1bW4g YWxzbyBkcm9wIGNoZWNrIGNvbnN0cmFpbnRzIHRoYXQgaGF2ZSB3aG9sZS1yb3cgcmVmZXJlbmNl CistLQorQ1JFQVRFIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCAoCisgICAgY2l0eSB0ZXh0LCBz dGF0ZSB0ZXh0LCBpc19jYXBpdGFsIGJvb2wsIGFsdGl0dWRlIGludCwKKyAgICBDT05TVFJBSU5U IGNjIENIRUNLIChjaXR5IGlzIG5vdCBudWxsKSwKKyAgICBDT05TVFJBSU5UIGNjMSBDSEVDSyAo RFJPUF9DT0xfQ0hFQ0tfVEJMIGlzIG5vdCBudWxsKSk7CitBTFRFUiBUQUJMRSBEUk9QX0NPTF9D SEVDS19UQkwgRFJPUCBDT0xVTU4gY2l0eTsKK1xkIERST1BfQ09MX0NIRUNLX1RCTAorRFJPUCBU QUJMRSBEUk9QX0NPTF9DSEVDS19UQkw7CisKIC0tCiAtLSBDaGVjayBpbmhlcml0YW5jZSBvZiBk ZWZhdWx0cyBhbmQgY29uc3RyYWludHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmRleGluZy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKaW5k ZXggYjVjYjAxYzJkNzAuLjJiYWQ5NTU1MTEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmRleGluZy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3Fs CkBAIC0yOTUsNiArMjk1LDE0IEBAIGFsdGVyIHRhYmxlIGlkeHBhcnQyIGRyb3AgY29sdW1uIGM7 CiBcZCBpZHhwYXJ0MgogZHJvcCB0YWJsZSBpZHhwYXJ0LCBpZHhwYXJ0MjsKIAorY3JlYXRlIHRh YmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwgYyBpbnQpOworY3JlYXRlIGluZGV4IG9uIGlkeHBh cnQoYyk7CitjcmVhdGUgaW5kZXggb24gaWR4cGFydCgoaWR4cGFydCBpcyBub3QgbnVsbCkpOwor Y3JlYXRlIGluZGV4IG9uIGlkeHBhcnQoYSkgd2hlcmUgaWR4cGFydCBpcyBub3QgbnVsbDsKK2Fs dGVyIHRhYmxlIGlkeHBhcnQgZHJvcCBjb2x1bW4gYzsKK1xkIGlkeHBhcnQKK2Ryb3AgdGFibGUg aWR4cGFydDsKKwogLS0gVmVyaWZ5IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGluaGVyaXQgY29y cmVjdGx5CiBjcmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkg cmFuZ2UgKGEpOwogY3JlYXRlIHRhYmxlIGlkeHBhcnQxIChsaWtlIGlkeHBhcnQpOwotLSAKMi4z NC4xCgo= --00000000000099c88d063ed651bb Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Disposition: attachment; filename="v4-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfl42o6l1 RnJvbSAwN2FjMTYyMTI3MjlmYjcxYjBmM2ZhODU1NzY4OGUwNzg4NDc3NjI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTUgU2VwIDIwMjUgMTU6NTM6NTkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDIvM10gZGlzYWxsb3cgQUxURVIgQ09MVU1OIFNFVCBEQVRBIFRZUEUgd2hlbiB3aG9sZXJvdwog cmVmZXJlbmNlZCBjb25zdHJhaW50IGV4aXN0cwoKQ1JFQVRFIFRBQkxFIHRzIChhIGludCwgYyBp bnQsIGIgaW50ICBjb25zdHJhaW50IGNjIGNoZWNrKCh0cyA9IFJPVygxLDEsMSkpKSk7CklOU0VS VCBJTlRPIHRzIHZhbHVlcyAoMSwxLDEpOwoKQUxURVIgVEFCTEUgdHMgQUxURVIgQ09MVU1OIGIg U0VUIERBVEEgVFlQRSBJTlQ4OwpFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJsZSAidHMiIGJlY2F1 c2UgY29uc3RyYWludCAiY2MiIHVzZXMgaXRzIHJvdyB0eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVl ZCB0byBkcm9wIGNvbnN0cmFpbnQgImNjIiBmaXJzdAoKY3JlYXRlIGluZGV4IG9uIHRzKCh0cyBp cyBub3QgbnVsbCkpOwphbHRlciB0YWJsZSB0cyBhbHRlciBjb2x1bW4gYSBzZXQgZGF0YSB0eXBl IGludDg7IC0tZXJyb3IKRVJST1I6ICBjYW5ub3QgYWx0ZXIgdGFibGUgInRzIiBiZWNhdXNlIGlu ZGV4ICJ0c19leHByX2lkeCIgdXNlcyBpdHMgcm93IHR5cGUKSElOVDogIFlvdSBtaWdodCBuZWVk IHRvIGRyb3AgaW5kZXggInRzX2V4cHJfaWR4IiBmaXJzdAoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUNKdWZ4R0E2S1ZReTdEYkhHTFZ3OXM5S0ttcEd5WnQ1TUU2QzdrRWZqRHBy MndaQ3dAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCB8IDExICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgIHwgIDYgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29uc3RyYWludHMuc3FsICAgICAgfCAxMCArKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu ZGV4aW5nLnNxbCAgICAgICAgIHwgIDIgKysKIDUgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggN2Y1ZTU4ZGE2MmYuLjQ5NDlkNzIw NGEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTQ1NDEsNiArMTQ1NDEsMjAgQEAg QVRQcmVwQWx0ZXJDb2x1bW5UeXBlKExpc3QgKip3cXVldWUsCiAJCWZpbmRfY29tcG9zaXRlX3R5 cGVfZGVwZW5kZW5jaWVzKHJlbC0+cmRfcmVsLT5yZWx0eXBlLCByZWwsIE5VTEwpOwogCX0KIAor CS8qCisJICogSWYgdGhlIHRhYmxlIGhhcyBhIHdob2xlLXJvdyByZWZlcmVuY2VkIENIRUNLIGNv bnN0cmFpbnQsIHRoZW4gY2hhbmdpbmcKKwkgKiBhbnkgY29sdW1uIGRhdGEgdHlwZSBpcyBub3Qg YWxsb3dlZC4KKwkqLworCWlmICh0YXJnZXR0eXBlICE9IGF0dFR1cC0+YXR0dHlwaWQgfHwgdGFy Z2V0dHlwbW9kICE9IGF0dFR1cC0+YXR0dHlwbW9kKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmpl Y3Q7CisKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5v YmplY3RJZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0g YXR0bnVtOworCQlyZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IocmVsLCAmb2JqZWN0 LCB0cnVlKTsKKwl9CisKIAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCiAJLyoKQEAgLTIyMTUy LDYgKzIyMTY2LDE0IEBAIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihSZWxhdGlv biByZWwsIGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vCiAJCQkJc3lzdGFibGVfZW5k c2Nhbihjb25zY2FuKTsKIAkJCQl0YWJsZV9jbG9zZShjb25EZXNjLCBBY2Nlc3NTaGFyZUxvY2sp OwogCQkJfQorCQkJaWYgKGZpbmRfd2hvbGVyb3cgJiYgZXJyb3Jfb3V0KQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJ ZXJybXNnKCJjYW5ub3QgYWx0ZXIgdGFibGUgXCIlc1wiIGJlY2F1c2UgY29uc3RyYWludCBcIiVz XCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWwpLAorCQkJCQkJCQljb25zdHJfbmFtZSksCisJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBkcm9wIGNvbnN0cmFpbnQgXCIlc1wiIGZpcnN0IiwKKwkJCQkJCQkJY29uc3RyX25hbWUp KTsKIAkJfQogCX0KIApAQCAtMjIxOTUsNiArMjIyMTcsMTUgQEAgcmVjb3JkV2hvbGVSb3dEZXBl bmRlbmN5T25PckVycm9yKFJlbGF0aW9uIHJlbCwgY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0 LCBib28KIAkJCQlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAJCQkJY29udGludWU7CiAJ CQl9CisKKwkJCWlmIChmaW5kX3dob2xlcm93ICYmIGVycm9yX291dCkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCWVy cm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIGluZGV4IFwiJXNcIiB1c2Vz IGl0cyByb3cgdHlwZSIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJ CQkJCQkJCWdldF9yZWxfbmFtZShpbmRleFN0cnVjdC0+aW5kZXhyZWxpZCkpLAorCQkJCQkJZXJy aGludCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBpbmRleCBcIiVzXCIgZmlyc3QiLAorCQkJCQkJ CQkgZ2V0X3JlbF9uYW1lKGluZGV4U3RydWN0LT5pbmRleHJlbGlkKSkpOwogCQl9CiAKIAkJaWYg KCFoZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxM KSkKQEAgLTIyMjIyLDYgKzIyMjUzLDE1IEBAIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JF cnJvcihSZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vCiAJCQkJ LyogcmVjb3JkIGRlcGVuZGVuY3kgZm9yIGluZGV4ZXMgdGhhdCByZWZlcmVuY2VzIHdob2xlLXJv dyAqLwogCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaWR4X29iaiwgb2JqZWN0LCBERVBFTkRFTkNZ X0FVVE8pOwogCQkJfQorCisJCQlpZiAoZmluZF93aG9sZXJvdyAmJiBlcnJvcl9vdXQpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJCQllcnJtc2coImNhbm5vdCBhbHRlciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBpbmRleCBc IiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLAorCQkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQpKSwK KwkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGRyb3AgaW5kZXggXCIlc1wiIGZpcnN0 IiwKKwkJCQkJCQkJIGdldF9yZWxfbmFtZShpbmRleFN0cnVjdC0+aW5kZXhyZWxpZCkpKTsKIAkJ fQogCQlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvbnN0cmFpbnRzLm91dAppbmRleCA4OTMwYjRkYTdjZS4uNDUyNzAxNmYzMTkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CkBAIC0yNzEsNiArMjcx LDE3IEBAIEFMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5Owog CiBEUk9QIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTDsKIC0tCistLSBDaGFuZ2UgY29sdW1uIGRh dGEgdHlwZSBzaG91bGQgZXJyb3Igb3V0IGJlY2F1c2UgdGhlIHdob2xlLXJvdyByZWZlcmVuY2Vk CistLSBjaGVjayBjb25zdHJhaW50IGlzIHN0aWxsIG5lZWQgaXQuCistLQorQ1JFQVRFIFRBQkxF IEFMVEVSX0NPTF9DSEVDS19UQkwgKAorICAgIGNpdHkgaW50LCBzdGF0ZSB0ZXh0LCBpc19jYXBp dGFsIGJvb2wsIGFsdGl0dWRlIGludCwKKyAgICBDT05TVFJBSU5UIGNjMSBDSEVDSyAoQUxURVJf Q09MX0NIRUNLX1RCTCBpcyBub3QgbnVsbCkpOworQUxURVIgVEFCTEUgQUxURVJfQ09MX0NIRUNL X1RCTCBBTFRFUiBDT0xVTU4gY2l0eSBTRVQgREFUQSBUWVBFIGludDg7CitFUlJPUjogIGNhbm5v dCBhbHRlciB0YWJsZSAiYWx0ZXJfY29sX2NoZWNrX3RibCIgYmVjYXVzZSBjb25zdHJhaW50ICJj YzEiIHVzZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBjb25z dHJhaW50ICJjYzEiIGZpcnN0CitEUk9QIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19UQkw7CistLQog LS0gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzCiAtLQogQ1JF QVRFIFRBQkxFIElOU0VSVF9DSElMRCAoY3ggSU5UIGRlZmF1bHQgNDIsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IGNhYzFjY2EzYTFmLi5lNTQ0MTQxYWQ5YyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTY1Nyw3ICs2NTcsMTMgQEAg ZHJvcCB0YWJsZSBpZHhwYXJ0LCBpZHhwYXJ0MjsKIGNyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGlu dCwgYiBpbnQsIGMgaW50KTsKIGNyZWF0ZSBpbmRleCBvbiBpZHhwYXJ0KGMpOwogY3JlYXRlIGlu ZGV4IG9uIGlkeHBhcnQoKGlkeHBhcnQgaXMgbm90IG51bGwpKTsKK2FsdGVyIHRhYmxlIGlkeHBh cnQgYWx0ZXIgY29sdW1uIGEgc2V0IGRhdGEgdHlwZSBpbnQ4OyAtLWVycm9yCitFUlJPUjogIGNh bm5vdCBhbHRlciB0YWJsZSAiaWR4cGFydCIgYmVjYXVzZSBpbmRleCAiaWR4cGFydF9leHByX2lk eCIgdXNlcyBpdHMgcm93IHR5cGUKK0hJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9wIGluZGV4 ICJpZHhwYXJ0X2V4cHJfaWR4IiBmaXJzdAogY3JlYXRlIGluZGV4IG9uIGlkeHBhcnQoYSkgd2hl cmUgaWR4cGFydCBpcyBub3QgbnVsbDsKK2FsdGVyIHRhYmxlIGlkeHBhcnQgYWx0ZXIgY29sdW1u IGEgc2V0IGRhdGEgdHlwZSBpbnQ4OyAtLWVycm9yCitFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJs ZSAiaWR4cGFydCIgYmVjYXVzZSBpbmRleCAiaWR4cGFydF9leHByX2lkeCIgdXNlcyBpdHMgcm93 IHR5cGUKK0hJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9wIGluZGV4ICJpZHhwYXJ0X2V4cHJf aWR4IiBmaXJzdAogYWx0ZXIgdGFibGUgaWR4cGFydCBkcm9wIGNvbHVtbiBjOwogXGQgaWR4cGFy dAogICAgICAgICAgICAgICBUYWJsZSAicHVibGljLmlkeHBhcnQiCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b25zdHJhaW50cy5zcWwKaW5kZXggNjc2ZDg3MzYxMDEuLmJiZTgzMjhmYmY5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29uc3RyYWludHMuc3FsCkBAIC0xNzYsNiArMTc2LDE2IEBAIEFMVEVSIFRBQkxF IERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5OwogXGQgRFJPUF9DT0xfQ0hFQ0tf VEJMCiBEUk9QIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTDsKIAorLS0KKy0tIENoYW5nZSBjb2x1 bW4gZGF0YSB0eXBlIHNob3VsZCBlcnJvciBvdXQgYmVjYXVzZSB0aGUgd2hvbGUtcm93IHJlZmVy ZW5jZWQKKy0tIGNoZWNrIGNvbnN0cmFpbnQgaXMgc3RpbGwgbmVlZCBpdC4KKy0tCitDUkVBVEUg VEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTCAoCisgICAgY2l0eSBpbnQsIHN0YXRlIHRleHQsIGlz X2NhcGl0YWwgYm9vbCwgYWx0aXR1ZGUgaW50LAorICAgIENPTlNUUkFJTlQgY2MxIENIRUNLIChB TFRFUl9DT0xfQ0hFQ0tfVEJMIGlzIG5vdCBudWxsKSk7CitBTFRFUiBUQUJMRSBBTFRFUl9DT0xf Q0hFQ0tfVEJMIEFMVEVSIENPTFVNTiBjaXR5IFNFVCBEQVRBIFRZUEUgaW50ODsKK0RST1AgVEFC TEUgQUxURVJfQ09MX0NIRUNLX1RCTDsKKwogLS0KIC0tIENoZWNrIGluaGVyaXRhbmNlIG9mIGRl ZmF1bHRzIGFuZCBjb25zdHJhaW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2luZGV4aW5nLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAppbmRl eCAyYmFkOTU1NTExMi4uMDcxMTg2MDQ0M2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2luZGV4aW5nLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwK QEAgLTI5OCw3ICsyOTgsOSBAQCBkcm9wIHRhYmxlIGlkeHBhcnQsIGlkeHBhcnQyOwogY3JlYXRl IHRhYmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwgYyBpbnQpOwogY3JlYXRlIGluZGV4IG9uIGlk eHBhcnQoYyk7CiBjcmVhdGUgaW5kZXggb24gaWR4cGFydCgoaWR4cGFydCBpcyBub3QgbnVsbCkp OworYWx0ZXIgdGFibGUgaWR4cGFydCBhbHRlciBjb2x1bW4gYSBzZXQgZGF0YSB0eXBlIGludDg7 IC0tZXJyb3IKIGNyZWF0ZSBpbmRleCBvbiBpZHhwYXJ0KGEpIHdoZXJlIGlkeHBhcnQgaXMgbm90 IG51bGw7CithbHRlciB0YWJsZSBpZHhwYXJ0IGFsdGVyIGNvbHVtbiBhIHNldCBkYXRhIHR5cGUg aW50ODsgLS1lcnJvcgogYWx0ZXIgdGFibGUgaWR4cGFydCBkcm9wIGNvbHVtbiBjOwogXGQgaWR4 cGFydAogZHJvcCB0YWJsZSBpZHhwYXJ0OwotLSAKMi4zNC4xCgo= --00000000000099c88d063ed651bb--