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 1uc0Xj-007tMn-6l for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Jul 2025 11:43:23 +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 1uc0Xg-009iie-90 for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Jul 2025 11:43:20 +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.94.2) (envelope-from ) id 1uc0Xf-009iiW-Sk for pgsql-hackers@lists.postgresql.org; Wed, 16 Jul 2025 11:43:20 +0000 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uc0Xe-0083Lh-0u for pgsql-hackers@lists.postgresql.org; Wed, 16 Jul 2025 11:43:20 +0000 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-86fea8329cdso3981795241.1 for ; Wed, 16 Jul 2025 04:43:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752666196; x=1753270996; 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=vB2xCAAbJntuTLbxvwun3eHifwTgQoXexD7Ux84cYQ8=; b=Mxhc0wpYYNLpxIhGPc4lWL7ubsMPlrtAnCugz+P0sNOwr7Zd2LSRvImfuVJVzz8XCe M1h0qymI4uUM++Msuf9rsQk2dR/Uww0t93hrtifnHBUkY2D1oJkQRCOz6u6xY188nLSG dOdN+7+zHaKBW88XRVV46eQqMO6yEcAkVLv5TRux72Ea5Gqb9BgnM9Yb13FR6eli7wpE yD9iJIgnQ9UyS0hkEO0EO/PV+Dwj5U+BxXSPsbUfJeO+9mlwRImRU2ygGWrjL9u+owQf iF4qe4IHlLdMTqPwpfjgv99c/gjI9IL2+FDyK+Usw29DRg4xNKONkeGdYhjsdpePRamS GbVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752666196; x=1753270996; 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=vB2xCAAbJntuTLbxvwun3eHifwTgQoXexD7Ux84cYQ8=; b=sbhEngjfQy8djQlIy27j+nxoBGFUqiAVZj8O1z4A6vvgmskwNXGbe74BfpyxkgXgk4 gbmkNIpGHnVrJ+SKJs78eZod2ZgNTf5BUPeZQhfU4Uvqfbsp7jUM0PlgQcHh4RT3xg6N 8KfOcXsNLVlARsJxttSt/MF218abT8KtXIdk9JfUD9w95rLMob9BsCjGwx1+IYMunRpq 87t+E9ljjb8jhd6/PzuvuNJ7ktb6g5kViKs0H4G8W0ZJxTMDeDSHRqGLgjKMuH7D2dvS f0l0EYL+5XYFGIrReyK+s4RGH6uy679gEWwuF9LCj/+OlOEXheOxxPnCVmnuyyvUld8a RSqg== X-Gm-Message-State: AOJu0YzLlZDh3yFSFCnbI2/5cWOi5jFqnh89fL/V4dMOzd3+lhSzg5vi omD5n7Wi9S0g75nuWux7ngyB/AjjhBiens6pdQUDTSbS1oDZqIPF4DDX74eFGj4esrIOysp7BDw rG6/A9pRVXIJh8asb0Fea+Lng+XMVt/bjHauw+ZHwSg== X-Gm-Gg: ASbGncum8RSGl9A+gkjgdgeeIgTN7Vmi0cWD+gFhMqatgyD/bGXhSCWB2Vw7VOPKHbu 0YN4Mj+m8xjwDaxDMC2lXdVaaEtGipToAJMyWsbaU5/I6QTB3U4Loq+gYZ92Dxbt27Sb/tPIMgQ f36NlLdcLFBvsprM3BIDKpl9m5hNui/K+fnZEW7+ppbSBLTglXYoxwP4G6dSnf0cgw8rdunqOHV ReejifqcFPzVpNe0uWAtzTFoJzVQ6yamxmqOP4= X-Google-Smtp-Source: AGHT+IGzJXxPYPeEZ+ov9KuHJS/s29LaDmTjil5FvSHGYLRueGJa3CqVkCgCnWSlM0/xa/FO+XScE8CO4ODYZf+VpoA= X-Received: by 2002:a05:6102:3711:b0:4e9:8f71:bd4f with SMTP id ada2fe7eead31-4f89008defemr1430689137.3.1752666196218; Wed, 16 Jul 2025 04:43:16 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> In-Reply-To: <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> From: jian he Date: Wed, 16 Jul 2025 19:42:38 +0800 X-Gm-Features: Ac12FXzmXEGAHQ2DzoxQyTYFohb2kC9DDImsnO1WxEQ2ItB72d0rwMRzBdexyM8 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000000a10e5063a0a668d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000a10e5063a0a668d Content-Type: text/plain; charset="UTF-8" bug: begin; drop table if exists pks cascade; create table pks(i int primary key, b int) partition by range (i); create table pks_34 partition of pks for values from (3) to (6); create table pks_d partition of pks default; insert into pks values (0), (1), (3), (4), (5); commit; alter table pks_d add constraint cc check(i <> 5); ALTER TABLE pks SPLIT PARTITION pks_34 INTO (PARTITION pks_3 FOR VALUES FROM (3) TO (4), PARTITION pks_4 FOR VALUES FROM (4) TO (5)); now pks_d have values(5) for column i, which would violate the cc check constraint. ------------------------ /* * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands */ typedef struct PartitionCmd { NodeTag type; RangeVar *name; /* name of partition to attach/detach/merge/split */ PartitionBoundSpec *bound; /* FOR VALUES, if attaching */ List *partlist; /* list of partitions, for MERGE/SPLIT * PARTITION command */ bool concurrent; } PartitionCmd; "ALTER TABLE/INDEX ATTACH/DETACH PARTITION" comments need updated. SplitPartitionMoveRows ereport(ERROR, errcode(ERRCODE_CHECK_VIOLATION), errmsg("can not find partition for split partition row"), errtable(splitRel)); will this ever be reachable? in SplitPartitionMoveRows + if (sps->bound->is_default) + { + /* We should not create constraint for detached DEFAULT partition. */ + defaultPartCtx = pc; + } I am not sure the comment "detached DEFAULT partition" is correct. the "constraint" is not ideal, better word would be "partition constraint" or "partition qual". In ATExecSplitPartition, we can first create the new partitions and then detach the original partition. It makes more sense, IMHO. For example: ALTER TABLE pks SPLIT PARTITION pks_34 INTO (PARTITION pks_3 FOR VALUES FROM (3) TO (4), PARTITION pks_4 FOR VALUES FROM (4) TO (6)); In this case, we could first create the relations pks_3 and pks_4, then detach the partition pks_34 should the newly created partitions be based on the split partition or on the partitioned table? In the current v50 implementation, they are based on the partitioned table, but these newly created partitions based on the split partition also make sense. + econtext->ecxt_scantuple = srcslot; + + /* Search partition for current slot srcslot. */ + foreach(listptr, partContexts) + { + pc = (SplitPartitionContext *) lfirst(listptr); + + if (pc->partqualstate /* skip DEFAULT partition */ && + ExecCheck(pc->partqualstate, econtext)) + { + found = true; + break; + } + ResetExprContext(econtext); this ResetExprContext is not needed, if you are evaluate different ExprState again the same slot. See ExecRelCheck also. see execute_extension_script control->trusted ? errhint("Must have CREATE privilege on current database to create this extension.") : errhint("Must be superuser to create this extension."))); in v50-0002, we can refactor it as like the following checkPartition(Relation rel, Oid partRelOid, bool is_merge) { Relation partRel; partRel = table_open(partRelOid, NoLock); if (partRel->rd_rel->relkind != RELKIND_RELATION) ereport(ERROR, errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("\"%s\" is not a table", RelationGetRelationName(partRel)), is_merge ? errhint("ALTER TABLE ... MERGE PARTITIONS can only merge partitions don't have sub-partitions") : errhint("ALTER TABLE ... SPLIT PARTITIONS can only split partitions don't have sub-partitions")); I did some regress test refactoring to reduce test size. -SELECT * FROM sales_range; +SELECT tableoid, * FROM sales_range ORDER BY salesperson_id; other miscellaneous refactoring is also attached. --0000000000000a10e5063a0a668d Content-Type: application/octet-stream; name=fix-v50-0002-nocfbot Content-Disposition: attachment; filename=fix-v50-0002-nocfbot Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_md5w5xms0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOWNlMzZiMDY2NDMuLjBjNTk0NjU1YThjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjMwMjQsOCArMjMwMjQsMTAgQEAgZGVsZXRl U3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMsIExpc3QgKip3 cXVldWUsIGludCB0aV9vcHQKICAqIChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0 aW9ucy4KICAqCiAgKiBOZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbjoKLSAqIHBhcnRsaXN0OiBs aXN0IG9mIHBvaW50ZXJzIHRvIFNpbmdsZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4KLSAqIG5l d1BhcnRSZWxzOiBsaXN0IG9mIFJlbGF0aW9ucy4KKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50 ZXJzIHRvIFNpbmdsZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0 aGUgcGFydGl0aW9uIHNwZWNpZmljYXRpb24gZGV0YWlscyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25z LgorICogbmV3UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRpb25zLCBuZXcgcGFydGl0aW9ucyBjcmVh dGVkIGluCisgKiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KICAqIGRlZmF1bHRQYXJ0T2lkOiBvaWQg b2YgREVGQVVMVCBwYXJ0aXRpb24sIGZvciB0YWJsZSByZWwuCiAgKi8KIHN0YXRpYyB2b2lkCkBA IC0yMzE0OSwxMyArMjMxNTEsMTIgQEAgU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyhMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLAogCQl7CiAJCQlwYyA9IChTcGxp dFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOwogCi0JCQlpZiAocGMtPnBhcnRx dWFsc3RhdGUgLyogc2tpcCBERUZBVUxUIHBhcnRpdGlvbiAqLyAmJgotCQkJCUV4ZWNDaGVjayhw Yy0+cGFydHF1YWxzdGF0ZSwgZWNvbnRleHQpKQorCQkJLyogc2tpcCBERUZBVUxUIHBhcnRpdGlv biAqLworCQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlICYmIEV4ZWNDaGVjayhwYy0+cGFydHF1YWxz dGF0ZSwgZWNvbnRleHQpKQogCQkJewogCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJ CX0KLQkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOwogCQl9CiAJCWlmICghZm91bmQpCiAJ CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGJkMDQ1YzE1NGRlLi44NzA3MTI1 NzdiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zNTE3LDkgKzM1MTcsMTEg QEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLAogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFydFJlbE9pZCBpcyBh IGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCiAgKiBQYXJ0aXRpb24g d2l0aCBPSUQgcGFydFJlbE9pZCBtdXN0IGJlIGxvY2tlZCBiZWZvcmUgZnVuY3Rpb24gY2FsbC4K KyAqIGlzX21lcmdlOiB0cnVlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzICJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyI7CisgKiBmYWxzZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlv biBpcyAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMiLgogICovCiBzdGF0aWMgdm9p ZAotY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK2NoZWNrUGFy dGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQsIGJvb2wgaXNfbWVyZ2UpCiB7CiAJ UmVsYXRpb24JcGFydFJlbDsKIApAQCAtMzUyOSwyMSArMzUzMSwyNyBAQCBjaGVja1BhcnRpdGlv bihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMg bm90IGEgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSksCi0JCQkJZXJy aGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFy dGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJCQkJ PyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJn ZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJyaGludCgi QUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKCFwYXJ0UmVsLT5yZF9yZWwt PnJlbGlzcGFydGl0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQllcnJo aW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0 aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJaXNfbWVyZ2UKKwkJCQk/ IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdl IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpCisJCQkJOiBlcnJoaW50KCJB TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CiAKIAlpZiAoZ2V0X3BhcnRpdGlvbl9wYXJl bnQocGFydFJlbE9pZCwgZmFsc2UpICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKIAkJCQllcnJt c2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gXCIlc1wi IiwKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucyIpKTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1w YXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIp KTsKIAogCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CiB9CkBAIC0zNTgxLDcgKzM1ODks NyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAJCQkJCQkJCQkJCVJhbmdlVmFyQ2FsbGJhY2tPd25z UmVsYXRpb24sCiAJCQkJCQkJCQkJCU5VTEwpOwogCi0JY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBz cGxpdFBhcnRPaWQpOworCWNoZWNrUGFydGl0aW9uKHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBmYWxz ZSk7CiAKIAkvKiBUaGVuIHdlIHNob3VsZCBjaGVjayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3Jt ZWQgYm91bmRzLiAqLwogCWNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQ YXJ0T2lkLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgY3h0LT5wc3RhdGUpOwpAQCAtMzY2Niw3ICszNjc0 LDcgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4 dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+ cHN0YXRlLCBuYW1lLT5sb2NhdGlvbikpOwogCQl9CiAKLQkJY2hlY2tQYXJ0aXRpb24ocGFyZW50 LCBwYXJ0T2lkKTsKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkLCB0cnVlKTsKIAog CQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCBlMWMxNDE2YjFlYy4uYTJiNWYyM2NlYTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtNDk5OCw2ICs0OTk4LDgg QEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBzZWNvbmRf bmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgogICogc2Vjb25kX2JvdW5kOglib3VuZCBv ZiBzZWNvbmQgcGFydGl0aW9uCiAgKiBkZWZhdWx0UGFydDoJCXRydWUgaWYgb25lIG9mIHNwbGl0 IHBhcnRpdGlvbnMgaXMgREVGQVVMVAorICogbWVyZ2Vfb3Jfc3BsaXQ6ICB0cnVlIGluZGljYXRl IHRoZSBvcHJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMiCisgKiBm YWxzZSBpbmRpY2F0ZSB0aGUgb3ByYXRpb24gaXMgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT05TIi4KICAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBk ZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgogICovCiBzdGF0aWMgdm9pZApAQCAtNTAwNyw2ICs1 MDA5LDcgQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVu dCwKIAkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCiAJCQkJCQkJCSAgUGFydGl0aW9u Qm91bmRTcGVjICpzZWNvbmRfYm91bmQsCiAJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKKwkJ CQkJCQkJICBib29sIG1lcmdlX3NwbGl0LAogCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkK IHsKIAlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsK QEAgLTUwMzYsNyArNTAzOSw5IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShS ZWxhdGlvbiBwYXJlbnQsCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAogCQkJCWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAogCQkJCQkg ICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCi0JCQkJZXJyaGlu dCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlv biBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIiksCisJCQkJbWVyZ2Vfc3BsaXQKKwkJCQk/IGVycmhp bnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRp b24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBh ZGphY2VudC4iKSwKIAkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRp b24pKTsKIAl9CiB9CkBAIC01MTQwLDcgKzUxNDUsOSBAQCBjYWxjdWxhdGVfcGFydGl0aW9uX2Jv dW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9u Qm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgcHJldl9pbmRleCksCiAJCQkJCQkJCQkJCQkJ ICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpbmRleCksCiAJCQkJCQkJCQkJCQkJ ICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgaW5kZXgpLAotCQkJCQkJ CQkJCQkJCSAgZmFsc2UsIHBzdGF0ZSk7CisJCQkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJ CQkJCQkgIHRydWUsCisJCQkJCQkJCQkJCQkJICBwc3RhdGUpOwogCQkJCX0KIAogCQkJCS8qCkBA IC01ODEzLDcgKzU4MjAsMTAgQEAgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24g cGFyZW50LAogCQkvKiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFw LiAqLwogCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1By ZXYpCiAJCQljaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2 LT5uYW1lLCBzcHNQcmV2LT5ib3VuZCwKLQkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91 bmQsIGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOworCQkJCQkJCQkJCQkgIHNwcy0+bmFtZSwg c3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJICBleGlzdHNEZWZhdWx0UGFydCwJCQkJCQkJCQkJCSAg CisJCQkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkJCSAgcHN0YXRlKTsKIAogCQlzcHNQcmV2 ID0gc3BzOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5v dXQKaW5kZXggM2E4YTVjNDFmMzEuLmIxODQ0MjYzNTI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC05Niw3ICs5Niw3IEBAIEFMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TwogRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgog TElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCi1ISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVx dWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCitISU5UOiAgQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMg dG8gYmUgYWRqYWNlbnQuCiAtLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywg dGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgogQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CiAtLSBFUlJP UjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFs IHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgpAQCAtMTU3LDY0ICsxNTcsMjUgQEAg QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCiAgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOwotU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKLSBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAotLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCi0gICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgotICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKLSAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCi0gICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgotICAgICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKLSAgICAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCi0gICAgICAgICAg ICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgotICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKLSAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAw My0xOS0yMDIyCi0gICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAy MDAwIHwgMDQtMzAtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAgICAgMTEgfCBUcnVtcCAg ICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotICAgICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKK1NFTEVDVCB0YWJs ZW9pZCwgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworIHRhYmxl b2lkIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgMTk2MTQgfCAgICAgICAgICAgICAg MSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgMTk2 MjMgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgICAgMTk2MjkgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgMTk2MjkgfCAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgMTk2Mjkg fCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgICAgMTk2MjMgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgMTk2MjYgfCAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgMTk2MjMgfCAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgICAgMTk2MjYgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgMTk2MTQgfCAgICAgICAgICAgICAxMCB8IEhhbGRl ciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgMTk2MjkgfCAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIy CisgICAgMTk2MjYgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xOS0yMDIyCisgICAgMTk2MTQgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgMTk2MjAgfCAgICAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiAo MTQgcm93cykKIAotU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOwotIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCi0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K LSAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0z MS0yMDIyCi0gICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgotICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAg ICAgIDM3NyB8IDAxLTA5LTIwMjIKLSgzIHJvd3MpCi0KLVNFTEVDVCAqIEZST00gc2FsZXNfZmVi MjAyMjsKLSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgotICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKLSAgICAgICAgICAgICAgOCB8IEVy aWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCi0oMyByb3dzKQotCi1T RUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKLSAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy Ci0gICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgotKDMgcm93cykKLQotU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwotIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg Ci0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KLSAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCi0gICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgotICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKLSAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCi0oNCByb3dzKQotCi1TRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyczsKLSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgotKDEgcm93KQotCiBE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CiAtLQogLS0gQWRkIHNwbGl0IHBhcnRpdGlv biwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCkBAIC0yNTgsNjQgKzIxOSwy NSBAQCBJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKICAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAogICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCiAgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKLVNFTEVDVCAqIEZS T00gc2FsZXNfcmFuZ2U7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAxIHwgTWF5ICAg ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKLSAgICAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCi0gICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgotICAg ICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIw MjIKLSAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCi0gICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAg MTg1IHwgMDItMjMtMjAyMgotICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAg ICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKLSAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCi0gICAgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgotICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKLSAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCi0gICAg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgotICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKLSAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1 MTAgfCAwNS0wNC0yMDIyCitTRUxFQ1QgdGFibGVvaWQsICogRlJPTSBzYWxlc19yYW5nZSBPUkRF UiBCWSBzYWxlc3BlcnNvbl9pZDsKKyB0YWJsZW9pZCB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgIDE5NjM1IHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgIDE5NjQ0IHwgICAgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgIDE5NjUwIHwgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor ICAgIDE5NjUwIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorICAgIDE5NjUwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgIDE5NjQ0IHwgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAg IDE5NjQ3IHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgIDE5NjQ0IHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg ICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgIDE5NjQ3IHwgICAgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgIDE5 NjM1IHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDEtMjgtMjAyMgorICAgIDE5NjUwIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgIDE5NjQ3IHwgICAgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgIDE5NjM1 IHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorICAgIDE5NjQxIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwg ICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgogKDE0IHJvd3MpCiAKLVNFTEVDVCAqIEZST00gc2Fs ZXNfamFuMjAyMjsKLSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgIDEgfCBNYXkgICAgICAg ICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgotICAgICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKLSAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCi0oMyByb3dz KQotCi1TRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAg ICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIK LSAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0x MS0yMDIyCi0gICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgotKDMgcm93cykKLQotU0VMRUNUICogRlJPTSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMi5zYWxlc19tYXIyMDIyOwotIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCi0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCi0gICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgotICAg ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKLSgzIHJvd3MpCi0KLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKLSBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAotLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCi0gICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAg ICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotKDQgcm93cykKLQotU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKLSgxIHJvdykKLQogRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwogLS0KIC0tIFRlc3QgZm9yOgpAQCAtNTA4LDcgKzQz MCw3IEBAIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTwogRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKIExJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMzApIFRPICgyMDIyLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KLUhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBy ZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KK0hJTlQ6ICBBTFRF UiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5k cyB0byBiZSBhZGphY2VudC4KIC0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19m ZWIyMDIyICh1cHBlciBib3VuZCkKIC0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZXJyb3IiCiBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KQEAgLTUxOSw3ICs0NDEsNyBAQCBBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCiBMSU5FIDQ6ICAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLUhJTlQ6 ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KIC0t IHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQp CiAtLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMg bm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgog QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CkBAIC01MzAsNyArNDUyLDcgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCiBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19kZWMyMDIxIgogTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjEuLi4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50 LgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBw YXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgogLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0 cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkgdGhlIHNhbWUgYm91bmRzKQogLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIKIEFMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwpAQCAtNTQxLDcg KzQ2Myw3IEBAIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTwogRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMSIKIExJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KLUhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KK0hJTlQ6ICBB TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJv dW5kcyB0byBiZSBhZGphY2VudC4KIC0tIEVSUk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlz dCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCiBB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8K ICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMDIyMDEwMSksCkBAIC04NzMsMzQgKzc5NSwyNSBAQCBJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMKICAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAogICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCiAgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKLVNFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Ci0gc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQotICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAxLTMxLTIwMjIKLSAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCi0gICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgotICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKLSAgICAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCi0gICAgICAgICAgICAgIDgg fCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgotICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKLSAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCi0gICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgotICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAg MjAwMCB8IDA0LTMwLTIwMjIKLSAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCi0gICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgotICAgICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKLSAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCitTRUxFQ1QgdGFi bGVvaWQsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyB0YWJs ZW9pZCB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgIDE5OTg1IHwgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgIDE5 OTg4IHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwg MDItMTAtMjAyMgorICAgIDE5OTk3IHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgIDE5OTk3IHwgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgIDE5OTk3 IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorICAgIDE5OTg4IHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgIDE5OTkxIHwgICAgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgIDE5OTg4IHwg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgIDE5OTkxIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgIDE5OTg1IHwgICAgICAgICAgICAgMTAgfCBIYWxk ZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgIDE5OTk3IHwgICAg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorICAgIDE5OTkxIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDMtMTktMjAyMgorICAgIDE5OTg1IHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgIDIwMDAwIHwgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgog KDE0IHJvd3MpCiAKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKLSBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAotLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ci0gICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotKDQgcm93cykKLQogQUxURVIgVEFCTEUgc2Fs ZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCiAgIChQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA0LTEwJyksCiAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCkBAIC0xMjUyLDcgKzEx NjUsNyBAQCBBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCiAgICAoUEFS VElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCiAgICAgUEFSVElUSU9O IHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOwogRVJST1I6ICByZWxhdGlvbiAi dDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKLUhJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElU SU9OUyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMK IERST1AgVEFCTEUgdDI7CiBEUk9QIFRBQkxFIHQxOwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCmluZGV4IDY0NjZhNGY5NzhlLi5hNzE4YjQ0ZjY4NiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0xMzUsMTMgKzEzNSw3IEBA IEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTwogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAogICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKIAot U0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKLVNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK LVNFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKLVNFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAy MjsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKLVNFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXJzOwotCitTRUxFQ1QgdGFibGVvaWQsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxl c3BlcnNvbl9pZDsKIERST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKIAogLS0KQEAgLTE3 NSwxMiArMTY5LDcgQEAgSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCiAgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKICAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOwogCi1TRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOwotU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOwotU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOwotU0VMRUNUICog RlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOwotU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyOwotU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgdGFi bGVvaWQsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKIAogRFJP UCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwogCkBAIC01NzUsOCArNTY0LDcgQEAgSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCiAgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKSwKICAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwogCi1TRUxF Q1QgKiBGUk9NIHNhbGVzX3JhbmdlOwotU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VM RUNUIHRhYmxlb2lkLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgc2FsZXNwZXJzb25faWQ7 CiAKIEFMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9h bGwgSU5UTwogICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAo= --0000000000000a10e5063a0a668d--