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 1vd6PQ-00DyTr-0z for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jan 2026 12:43:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vd6PO-007o9K-13 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jan 2026 12:43:35 +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 1vd6PN-007o9C-2d for pgsql-hackers@lists.postgresql.org; Tue, 06 Jan 2026 12:43:34 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vd6PL-004s9t-0g for pgsql-hackers@lists.postgresql.org; Tue, 06 Jan 2026 12:43:34 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-3e37ad3d95aso615534fac.3 for ; Tue, 06 Jan 2026 04:43:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767703409; x=1768308209; 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=2RemNHbRWwyXoqDhkU1WXNktR7XbwoxLigH60S29iC4=; b=lrffjADHkxbI3TI3mfx12SvM+p6QPV2Q/eNjktHGZQVfmMulmwZWv4dpfGVAPn621X 1wtwejl3lfrzrmLdDblN/6UGGNVQYAAOkuE123gNgBFOZzbF5VW4UY31miGTv1aqDpqC KSOLEbJxujkfwOfiiN4iVSKnmr14Oletor9kgH05irFyMIABgyEeBmgwLI8BC4WaXTz/ CgbmmR5QDwESGgj3QMbwXuUaxG5gO5V9m1LyYiDrMIMm+CZSTwxqUZlLc2upECOAiJ29 IgEW1YfnGYICd3TP7un7D1ODhVdjLKEXdMqRYsRHHYT9pKOy2PQuhZt82QaZvkQBR+Tn 8IyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767703409; x=1768308209; 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=2RemNHbRWwyXoqDhkU1WXNktR7XbwoxLigH60S29iC4=; b=weW9byFe51kXvchi9sOuNLG31OloeiyBVguUhx9lp6YOnRHV/ifffSWbgl0ZpDlwNo uGMYfhZBFqKfCeJXYxUNpTfE4wJ1tq230Aytpz6CB7CEcrl9TLpsr2kx+dkVEbPfoE4z p77JW4FtdQBHKgDuUx5ecoUGPyUnSvq2ZI6tnKNTzBJq4weNmlkvMcgyVWMf+D6Fps6V 9rBq3LD7GRZHeY2bAsnlvKQGDPEu1Qa4+txam3eNPmv2PGGWd34knCELvRlbTzmdnhJO 6bivvix2eRcVkz3CnqzOhtpp4G6Qbb/28RyVmkJw4t3jZLszkrfwcWCDpJIVyq+mtqUh r1bA== X-Forwarded-Encrypted: i=1; AJvYcCXBJiCGfsIM5WFv7UwvZ2polfiUMeYxwUnyE1m//LNvWx1iZu8TPZqUni2vqCBTEsOanZOv72Z33ndIuFyz@lists.postgresql.org X-Gm-Message-State: AOJu0YyEadSM03ABh9QfXecgFNXYfA49kmCSVIJ9CqNwEQFrBE2tFpbv IvwKHNks9s+8zLn7XQGIDdCxcKnMQw0jiAlcYY8PujqUVty6erLu3WBHWnauW+OKvXt+CM12jIv zCW/HIdHWBghfF3hjkwUg0L1JKSllv/8= X-Gm-Gg: AY/fxX58JvB/Z+Qul8K99BkAEzeQ3G3541DBX2//3R4ICS3h9w2JGFydHa8a2T+wC9/ hME7+RByQhMmX6bTrwXjWussvWlIVTTbEOwW72dPANue/drLRGUS3LlF0/7sCATFTdwc2+PK6+w 7kutyaUs4URGAy7c6iYt/OA59oriiWDOZT799pbVVIrK8FALYkph3NfPBoBDUGdSsuj4rlsy1FS u2bIIDvATKMVezPkbsc8OaQQqJ+jNGgneGAjFCKwqj7qYfGh0OL9Nnrz4DKUx+hCjvrR9wjNw== X-Google-Smtp-Source: AGHT+IEycKqQENdsrN0nxsB+VpQJt06f0mftVlU7zBestIKIlUOUaQPWV5vf27tGBxENbwlTDHUfOC6cLcs83fSxXz0= X-Received: by 2002:a05:6870:4192:b0:3ec:4bcc:b358 with SMTP id 586e51a60fabf-3ffa0d879dcmr1677901fac.45.1767703409057; Tue, 06 Jan 2026 04:43:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Tue, 6 Jan 2026 18:13:17 +0530 X-Gm-Features: AQt7F2oX7S2Nqbg8WxSkqet5k9Dp01A2fWFxSQAUh79zpXBe8kycOV_WCndZF5w Message-ID: Subject: Re: Skipping schema changes in publication To: shveta malik Cc: Peter Smith , Amit Kapila , vignesh C , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c3fe7c0647b785af" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c3fe7c0647b785af Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 26 Dec 2025 at 15:27, shveta malik wrote: > > On Tue, Dec 23, 2025 at 12:03=E2=80=AFPM Shlok Kyal wrote: > > > > > > I have addressed the remaining comments, did some cosmetic changes and > > addressed the comment shared by Shveta in [2]. > > [1]: https://www.postgresql.org/message-id/CAA4eK1+rnjBOvkiQC2r4LuTwuje= 653iVPPAXcmJZXPpKvsNbOQ@mail.gmail.com > > [2]: https://www.postgresql.org/message-id/CAJpy0uCf5tXvqyVS3GQzU9J5HdS= LAxX6Lxt1UKY4HJ8qnimCAw%40mail.gmail.com > > > > Thank You for the patch. Please find a few comments: > > 1) > GetTopMostAncestorInPublication(): > > + if (list_member_oid(aexceptpubids, puboid)) > + { > + list_free(aexceptpubids); > + continue; > + } > > We need to do 'list_free(apubids)' as well here. > > 2) > GetTopMostAncestorInPublication(). Currently it has: > > if (list_member_oid(aexceptpubids, puboid)) > ... > if (list_member_oid(apubids, puboid)) > ... > else > ...schema mapping check > > IMO more natural order of checks will be > > if (list_member_oid(apubids, puboid)) > .. > else if (list_member_oid(aexceptpubids, puboid)) > ... > else > ...schema mapping check > While analyzing this behavior, I noticed that changes to tables listed in the EXCEPT clause were still being published. However, those changes were not replicated, because pg_get_publication_tables() correctly excluded those tables, and consequently pg_subscription_rel was populated correctly on the subscriber side. Even though replication was prevented downstream, we should not publish changes for tables in the EXCEPT list in the first place. Publishing them is unnecessary and inconsistent with the publication definition. This issue has been addressed in the latest version of the patch And the above two changes are not required. > 3) > +/* > + * Return the list of relation OIDs excluded from a publication. > + * This is only applicable for FOR ALL TABLES publications. > + */ > +List * > +GetPublicationExcludedRelations(Oid pubid, PublicationPartOpt pub_partop= t) > > a) Since now 'Relations' term means both tables and sequences, but > here we mean only Tables, we can rename it to have 'Tables' rather > than 'Relations' > > b) Similar to GetAllPublicationRelations which is for 'ALL Tables' > pub, we can rename it to have 'All' > > So the name can be 'GetAllPublicationExcludedTables' to be more clear. > > Also we can move this function close to GetAllPublicationRelations as > it is more related to that. > > 4) > ObjectsInPublicationToOids() > + case PUBLICATIONOBJ_EXCEPT_TABLE: > + pubobj->pubtable->except =3D true; > + *rels =3D lappend(*rels, pubobj->pubtable); > + break; > > Let me know when this will be hit when we already have > 'ObjectsInAllPublicationToOids' in place? I analysed it and found that we can eliminate the use of 'ObjectsInAllPublicationToOids'. This requires a change in gram.y. Made the changes in the latest patch. > > 5) > get_rel_sync_entry(): > + level++; > + GetRelationPublications(ancestor, NULL, &aexceptpubids); > + > + if (!list_member_oid(aexceptpubids, pub->oid)) > + { > + pub_relid =3D ancestor; > + ancestor_level =3D level; > + } > + } > > Consider the following table structure: > t1 has a partition p1, which in turn has a child partition > child_part1. When publish_via_partition_root is set to true, any > changes made to child_part1 are replicated through t1. If we add t1 to > the EXCEPT list, get_rel_sync_entry() still marks p1 as an ancestor to > publish changes or child_part1. Is it correct? > This change is not required. See reply to comment 1 and 2. > 6) > RelationBuildPublicationDesc() also needs some more analysis about > getting and setting ancestor part for above case. > The case for partition tables can be tricky. Currently I am analysing the behaviour of partitioned tables with the EXCEPT TABLE option in general. Will address it in the next version upon further analysing. > 7) > Currently the way we deal with the except table in pg_dump.c differs > from how we deal with included-table. To explain the same, how about > adding below comment in getPublications() just before we fetch > except-list: > > We process EXCEPT TABLES here instead of in getPublicationTables(), > and output them directly in dumpPublication(). This differs from the > approach used in dumpPublicationTable() and > dumpPublicationNamespace(). Following that approach would require > dumping table additions later as ALTER PUBLICATION =E2=80=A6 ADD EXCEPT, = which > is currently not supported. Also addressed the remaining comments. I have also addressed the comments by Peter in [1]. I have also done some minor cosmetic changes. [1]: https://www.postgresql.org/message-id/CAHut+PuZX_7Ot-oh5iqGLBRrZBS5ewD= nHa91mJi2Y09uCRfixg@mail.gmail.com Thanks, Shlok Kyal --000000000000c3fe7c0647b785af Content-Type: application/octet-stream; name="v35-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v35-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2kq5x80 RnJvbSAzYTVhMWQ0ODVjOTBhOTY5N2YxOTI5NDBhOGZiMTE5ZDg1Njc1MTFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOSBEZWMgMjAyNSAyMjo0MToyMyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjM1 XSBTa2lwIHB1Ymxpc2hpbmcgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxFLgoK QSBuZXcgIkVYQ0VQVCBUQUJMRSIgY2xhdXNlIGZvciBDUkVBVEUgUFVCTElDQVRJT04gYWxsb3dz IG9uZSBvciBtb3JlCnRhYmxlcyB0byBiZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hlciB3aWxsIG5v dCBzZW5kIHRoZSBkYXRhIG9mIGV4Y2x1ZGVkCnRhYmxlcyB0byB0aGUgc3Vic2NyaWJlci4KClRo ZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5aW5nIGV4Y2x1ZGVkIHJlbGF0aW9ucyB3aGVuIGNy ZWF0aW5nIGEKcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHQxLHQyKTsKCkEgbmV3IGNvbHVtbiAicHJl eGNlcHQiIGlzIGFkZGVkIHRvIHRhYmxlICJwZ19wdWJsaWNhdGlvbl9yZWwiLCB0byBmbGFnCnRo ZSByZWxhdGlvbnMgdGhhdCB0aGUgdXNlciB3YW50cyB0byBleGNsdWRlIGZyb20gdGhlIHB1Ymxp Y2F0aW9ucy4KCnBnX2R1bXAgaXMgdXBkYXRlZCB0byBpZGVudGlmeSBhbmQgZHVtcCB0aGUgZXhj bHVkZWQgdGFibGVzIG9mIHRoZSBwdWJsaWNhdGlvbnMuCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2Yg Y29tbWFuZHMgY2FuIG5vdyBkaXNwbGF5IGV4Y2x1ZGVkIHRhYmxlcy4KCkJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgIDYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8 ICA1NiArKysrLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICAg IHwgIDExICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAg fCAxNDMgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j ICAgICAgICB8IDEwOSArKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg ICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICAgICAgfCAgNDIgKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYyAgIHwgIDQzICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMgICAgICAgICAgICB8ICAyMSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAg ICAgICAgICAgICAgIHwgIDcxICsrKysrKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs ICAgICAgICAgICAgICB8ICAzMCArKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA4NyArKysrKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dCAgICAgfCAgOTMgKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsICAgICAgICAgIHwgIDM3ICsrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1 aWxkICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwgICAgICAgICB8IDIzOCArKysrKysrKysrKysrKysrKysKIDIyIGZpbGVzIGNoYW5nZWQs IDg5OSBpbnNlcnRpb25zKCspLCAxMzMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbAoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMmZjNjM0NDI5ODAuLjllODQ3MTUyYjQ0IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bApAQCAtNjU4MSw2ICs2NTgxLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtp dGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICBp ZiB0aGVyZSBpcyBubyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5nIGNvbmRpdGlvbi48L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICA8 c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgcmVsYXRpb24gaXMg ZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+ RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZp ZWxkPnByYXR0cnM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQydmVjdG9yPC90eXBlPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNThjZTc1ZDhiNjMuLjE3ZGQyZjcyMmZj IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNiw3ICsxMTYsMTEg QEAKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgPGxpdGVyYWw+ Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LAogICAgb3IgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5D RVM8L2xpdGVyYWw+LiBVbmxpa2UgdGFibGVzLCBzZXF1ZW5jZXMgY2FuIGJlCiAgICBzeW5jaHJv bml6ZWQgYXQgYW55IHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKLSAgIDx4cmVmIGxp bmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LgorICAgPHhyZWYgbGlua2Vu ZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4gYSBwdWJsaWNhdGlvbiBp cworICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwgdGFi bGVzIGNhbiBiZSBleHBsaWNpdGx5CisgICBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uIHVzaW5n IHRoZQorICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3It ZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC9saW5rPgorICAg Y2xhdXNlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbAppbmRleCA3NWE1MDhiZWJmYS4uZTFmNWM2YTM5MzggMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMzIsMTIgKzMyLDE2IEBAIENSRUFU RSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCi0g ICAgQUxMIFRBQkxFUworICAgIEFMTCBUQUJMRVMgWyBFWENFUFQgWyBUQUJMRSBdICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIF0KICAgICBBTEwgU0VRVUVOQ0VTCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlz OjwvcGhyYXNlPgogCiAgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ ICkgXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0 X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xNjQsNyArMTY4LDgg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3Mg dGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRh YmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4g dGhlIGZ1dHVyZS4KKyAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVk IGluIHRoZSBmdXR1cmUuIFRhYmxlcyBsaXN0ZWQgaW4KKyAgICAgIEVYQ0VQVCBUQUJMRSBhcmUg ZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODQsNiArMTg5LDM2IEBAIENSRUFURSBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPgorICAg IDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2Yg dGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBwdWJsaWNhdGlvbi4KKyAgICAg PC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBpbmhlcml0ZWQgdGFibGVzLCBpZiA8bGl0 ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYmVmb3JlIHRoZQorICAgICAgdGFibGUg bmFtZSwgb25seSB0aGF0IHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBJ ZgorICAgICAgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmllZCwgdGhlIHRh YmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyAoaWYgYW55KSBhcmUgZXhj bHVkZWQuIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZQorICAgICAgc3Bl Y2lmaWVkIGFmdGVyIHRoZSB0YWJsZSBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBk ZXNjZW5kYW50CisgICAgICB0YWJsZXMgYXJlIGV4Y2x1ZGVkLgorICAgICA8L3BhcmE+CisgICAg IDxwYXJhPgorICAgICAgRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgd2hlbiA8bGl0ZXJhbD5wdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4KKyAgICAgIGlzIHNldCB0byA8bGl0ZXJh bD50cnVlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgaW4K KyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD4gZXhjbHVkZXMgaXQgYW5kIGFs bCBpdHMgcGFydGl0aW9ucyBmcm9tCisgICAgICByZXBsaWNhdGlvbi4gU3BlY2lmeWluZyBhIGxl YWYgcGFydGl0aW9uIGhhcyBubyBlZmZlY3QsIGFzIGl0cyBjaGFuZ2VzIGFyZQorICAgICAgc3Rp bGwgcmVwbGljYXRlZCB2aWEgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUuIFdoZW4KKyAgICAg IDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPiBpcyBzZXQgdG8K KyAgICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBhIHJvb3QgcGFydGl0 aW9uZWQgdGFibGUgaGFzIG5vCisgICAgICBlZmZlY3QsIGFzIGNoYW5nZXMgYXJlIHJlcGxpY2F0 ZWQgdmlhIHRoZSBsZWFmIHBhcnRpdGlvbnMuIFNwZWNpZnlpbmcgYQorICAgICAgbGVhZiBwYXJ0 aXRpb24gZXhjbHVkZXMgb25seSB0aGF0IHBhcnRpdGlvbiBmcm9tIHJlcGxpY2F0aW9uLiBUaGUg b3B0aW9uYWwKKyAgICAgIDxsaXRlcmFsPio8L2xpdGVyYWw+IGhhcyBubyBtZWFuaW5nIGZvciBw YXJ0aXRpb25lZCB0YWJsZXMuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtd2l0aCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4u IF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNDg3LDYgKzUyMiwyMyBA QCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlcyBGT1IgQUxMIFNFUVVFTkNFUzsKICAg IGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbjoKIDxwcm9ncmFtbGlzdGluZz4KIENS RUFURSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX3NlcXVlbmNlcyBGT1IgQUxMIFRBQkxFUywgQUxM IFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAg IENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGluIGFsbCB0 YWJsZXMgZXhjZXB0CisgICA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHVz ZXJzLCBkZXBhcnRtZW50cyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2Vz IGZvciBzeW5jaHJvbml6YXRpb24sIGFuZAorICAgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBl eGNlcHQgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+ ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJ Q0FUSU9OIGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUywgQUxM IFRBQkxFUyBFWENFUFQgKHVzZXJzLCBkZXBhcnRtZW50cyk7CiA8L3Byb2dyYW1saXN0aW5nPgog ICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNx bC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBmNTZjNzAy NjNlMC4uODQxNjEyOGE5YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTEyOTksMTAgKzEy OTksOCBAQCBTRUxFQ1QgJDEgXHBhcnNlIHN0bXQxCiAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4sIHNob3cgYWxsCiAgICAgICAgIGNv bHVtbnMsIHRoZWlyIHR5cGVzLCB0aGUgdGFibGVzcGFjZSAoaWYgbm90IHRoZSBkZWZhdWx0KSBh bmQgYW55CiAgICAgICAgIHNwZWNpYWwgYXR0cmlidXRlcyBzdWNoIGFzIDxsaXRlcmFsPk5PVCBO VUxMPC9saXRlcmFsPiBvciBkZWZhdWx0cy4KLSAgICAgICAgQXNzb2NpYXRlZCBpbmRleGVzLCBj b25zdHJhaW50cywgcnVsZXMsIGFuZCB0cmlnZ2VycyBhcmUKLSAgICAgICAgYWxzbyBzaG93bi4g IEZvciBmb3JlaWduIHRhYmxlcywgdGhlIGFzc29jaWF0ZWQgZm9yZWlnbgotICAgICAgICBzZXJ2 ZXIgaXMgc2hvd24gYXMgd2VsbC4KLSAgICAgICAgKDxxdW90ZT5NYXRjaGluZyB0aGUgcGF0dGVy bjwvcXVvdGU+IGlzIGRlZmluZWQgaW4KKyAgICAgICAgQXNzb2NpYXRlZCBpbmRleGVzLCBjb25z dHJhaW50cywgcnVsZXMsIHB1YmxpY2F0aW9ucywgYW5kIHRyaWdnZXJzIGFyZQorICAgICAgICBh bHNvIHNob3duLiAoPHF1b3RlPk1hdGNoaW5nIHRoZSBwYXR0ZXJuPC9xdW90ZT4gaXMgZGVmaW5l ZCBpbgogICAgICAgICA8eHJlZiBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyIvPiBiZWxvdy4p CiAgICAgICAgIDwvcGFyYT4KIApAQCAtMjEwMyw4ICsyMTAxLDkgQEAgU0VMRUNUICQxIFxwYXJz ZSBzdG10MQogICAgICAgICBsaXN0ZWQuCiAgICAgICAgIElmIDxsaXRlcmFsPng8L2xpdGVyYWw+ IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSByZXN1bHRzCiAgICAgICAgIGFy ZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQgbW9kZS4KLSAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0 ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQKLSAg ICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24g YXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8g dGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFibGVzLCBh bmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAg ICAgICAgYXMgd2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXgg OWE0NzkxYzU3M2UuLjA5YzY5MDA1MTIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5jCkBAIC0zNjYsOSArMzY2LDExIEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24o T2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJZm9yZWFj aChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsK LQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKTsK KwkJTGlzdAkgICAqYXB1YmlkcyA9IE5JTDsKIAkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5J TDsKIAorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFwdWJpZHMsIE5VTEwp OworCiAJCWxldmVsKys7CiAKIAkJaWYgKGxpc3RfbWVtYmVyX29pZChhcHViaWRzLCBwdWJvaWQp KQpAQCAtNDY2LDYgKzQ2OCwyNiBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAKKwkvKgorCSAqIEhhbmRsZSB0aGUgY2Fz ZSB3aGVyZSBhIHBhcnRpdGlvbiBpcyBleGNsdWRlZCBieSBFWENFUFQgVEFCTEUgd2hpbGUKKwkg KiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCisJICovCisJaWYgKHB1Yi0+YWxs dGFibGVzICYmIHB1Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgorCQl0YXJnZXRyZWwt PnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNn KCJwYXJ0aXRpb24gXCIlc1wiIG1pZ2h0IGJlIHJlcGxpY2F0ZWQgYXMgcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgaXMgXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRh cmdldHJlbCksICJ0cnVlIikpKTsKKworCS8qCisJICogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEg cGFydGl0aW9uZWQgdGFibGUgaXMgZXhjbHVkZWQgYnkgRVhDRVBUIFRBQkxFCisJICogd2hpbGUg cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZS4KKwkgKi8KKwlpZiAocHViLT5hbGx0 YWJsZXMgJiYgIXB1Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgorCQl0YXJnZXRyZWwt PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQllcmVwb3J0 KFdBUk5JTkcsCisJCQkJKGVycm1zZygicGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIG1pZ2h0IGJl IHJlcGxpY2F0ZWQgYXMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgXCIlc1wiIiwKKwkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksICJmYWxzZSIpKSk7CisKIAlj aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8qIFZhbGlkYXRl IGFuZCB0cmFuc2xhdGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4g Ki8KQEAgLTQ4Miw2ICs1MDQsOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJ dmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9CiAJCU9iamVjdElk R2V0RGF0dW0ocmVsaWQpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2Vw dCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHByaS0+ZXhjZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZp Y2F0aW9ucywgaWYgYXZhaWxhYmxlICovCiAJaWYgKHByaS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkK QEAgLTc0OSwzOCArNzczLDU4IEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBP aWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAlyZXR1cm4gbXlzZWxmOwogfQogCi0v KiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwotTGlzdCAq Ci1HZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCisvKgorICogR2V0IHRoZSBsaXN0 IG9mIHB1YmxpY2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHJlbGF0aW9u LgorICoKKyAqIFBhcmFtZXRlciAncHViaWRzJyByZXR1cm5zIHRoZSBPaWRzIG9mIHRoZSBwdWJs aWNhdGlvbnMgdGhlIHJlbGF0aW9uIGlzIHBhcnQKKyAqIG9mLiBQYXJhbWV0ZXIgJ2V4Y2VwdF9w dWJpZHMnIHJldHVybnMgdGhlIE9pZHMgb2YgcHVibGljYXRpb25zIHRoZSByZWxhdGlvbgorICog aXMgZXhjbHVkZWQgZnJvbS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0 aGUgcmVsYXRpb24gaXMgcGFydCBvZiBhbnkgcHVibGljYXRpb24uCisgKi8KK2Jvb2wKK0dldFJl bGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlzdCAqKnB1YmlkcywgTGlzdCAqKmV4Y2Vw dF9wdWJpZHMpCiB7Ci0JTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUNhdENMaXN0ICAgKnB1YnJl bGxpc3Q7Ci0JaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOwogCiAJLyogRmluZCBhbGwg cHVibGljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVsYXRpb24uICovCiAJcHVicmVsbGlz dCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkJCQkgT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCkpOwotCWZvciAoaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21l bWJlcnM7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsg aSsrKQogCXsKIAkJSGVhcFR1cGxlCXR1cCA9ICZwdWJyZWxsaXN0LT5tZW1iZXJzW2ldLT50dXBs ZTsKLQkJT2lkCQkJcHViaWQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1Qo dHVwKSktPnBycHViaWQ7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbCA9IChGb3Jt X3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CisJCU9pZAkJCXB1YmlkID0gcHVi cmVsLT5wcnB1YmlkOwogCi0JCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOwor CQlpZiAocHVicmVsLT5wcmV4Y2VwdCkKKwkJeworCQkJaWYgKGV4Y2VwdF9wdWJpZHMpCisJCQkJ KmV4Y2VwdF9wdWJpZHMgPSBsYXBwZW5kX29pZCgqZXhjZXB0X3B1YmlkcywgcHViaWQpOworCQl9 CisJCWVsc2UKKwkJeworCQkJaWYgKHB1YmlkcykKKwkJCQkqcHViaWRzID0gbGFwcGVuZF9vaWQo KnB1YmlkcywgcHViaWQpOworCQkJZm91bmQgPSB0cnVlOworCQl9CiAJfQogCiAJUmVsZWFzZVN5 c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsKIAotCXJldHVybiByZXN1bHQ7CisJcmV0dXJuIGZvdW5k OwogfQogCiAvKgotICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgZm9yIGEgcHVibGljYXRp b24uCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBnZXQgdGhlIGxpc3Qgb2YgcmVsYXRpb24gT2lk cyBmb3IgYSBwdWJsaWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9S IFRBQkxFIHB1YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogc2hv dWxkIHVzZSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogSWYgZXhjZXB0X2ZsYWcg aXMgdHJ1ZSwgcmV0dXJucyB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZXhjbHVkZWQgZnJvbSB0aGUK KyAqIHB1YmxpY2F0aW9uOyBvdGhlcndpc2UsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25z IGluY2x1ZGVkIGluIHRoZQorICogcHVibGljYXRpb24uCiAgKi8KLUxpc3QgKgotR2V0UHVibGlj YXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp CitzdGF0aWMgTGlzdCAqCitnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJICBib29sIGV4Y2VwdF9mbGFnKQog ewogCUxpc3QJICAgKnJlc3VsdDsKIAlSZWxhdGlvbglwdWJyZWxzcmVsOwpAQCAtODA1LDggKzg0 OSwxMCBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCkKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwogCiAJ CXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7Ci0JCXJl c3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0 LAotCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKworCQlpZiAoZXhjZXB0X2ZsYWcgPT0g cHVicmVsLT5wcmV4Y2VwdCkKKwkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0 aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7 CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTgxOSw2ICs4NjUsMzYgQEAgR2V0 UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgbGlzdCBvZiBy ZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBUQUJMRSBw dWJsaWNhdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBleHBsaWNpdGx5 CisgKiBpbmNsdWRlZCBpbiB0aGUgcHVibGljYXRpb24uCisgKgorICogUHVibGljYXRpb25zIGRl Y2xhcmVkIHdpdGggRk9SIEFMTCBUQUJMRVMgc2hvdWxkIHVzZQorICogR2V0QWxsUHVibGljYXRp b25SZWxhdGlvbnMoKSB0byBvYnRhaW4gdGhlIGNvbXBsZXRlIHNldCBvZiB0YWJsZXMgY292ZXJl ZCBieQorICogdGhlIHB1YmxpY2F0aW9uLgorICovCitMaXN0ICoKK0dldFB1YmxpY2F0aW9uSW5j bHVkZWRSZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp Cit7CisJQXNzZXJ0KCFHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1 cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIGZhbHNlKTsK K30KKworLyoKKyAqIFJldHVybiB0aGUgbGlzdCBvZiB0YWJsZXMgT2lkcyBleGNsdWRlZCBmcm9t IGEgcHVibGljYXRpb24uCisgKiBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgRk9SIEFMTCBU QUJMRVMgcHVibGljYXRpb25zLgorICovCitMaXN0ICoKK0dldEFsbFB1YmxpY2F0aW9uRXhjbHVk ZWRUYWJsZXMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJ QXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRf cHVibGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7Cit9CisKIC8q CiAgKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1hcmtl ZCBhcyBGT1IgQUxMIFRBQkxFUy4KICAqLwpAQCAtODY0LDE4ICs5NDAsMjkgQEAgR2V0QWxsVGFi bGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgZXhj bHVkZSBwYXJ0aXRpb25zIGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKICAqIHJvb3QgcGFydGl0 aW9uZWQgdGFibGVzLiBUaGlzIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZPUiBBTEwgU0VRVUVOQ0VT CiAgKiBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlv biwgdGhlIHJldHVybmVkIGxpc3QgZXhjbHVkZXMgdGFibGVzIG1lbnRpb25lZAorICogaW4gRVhD RVBUIFRBQkxFIGNsYXVzZS4KICAqLwogTGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFB1YmxpY2F0aW9uUmVsYXRp b25zKFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2luZCkKIHsKIAlSZWxhdGlvbgljbGFzc1Jl bDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBs ZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9 IE5JTDsKKwlib29sCQlwdWJ2aWFyb290ID0gcHViLT5wdWJ2aWFyb290OworCU9pZAkJCXB1Ymlk ID0gcHViLT5vaWQ7CiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYg cHVidmlhcm9vdCkpOwogCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXhj ZXB0bGlzdCA9IEdldEFsbFB1YmxpY2F0aW9uRXhjbHVkZWRUYWJsZXMocHViaWQsIHB1YnZpYXJv b3QgPworCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCA6CisJCQkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRp b25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJU2NhbktleUluaXQoJmtleVswXSwK QEAgLTg5MSw3ICs5NzgsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtp bmQsIGJvb2wgcHVidmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJ aWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3Jt LT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0 aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwg cmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBA IC05MTIsNyArMTAwMCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2lu ZCwgYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJ CWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9y bS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJ IWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVu ZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAtMTE2OCwxNyArMTI1NywxNyBAQCBwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiB0aG9zZS4gT3Ro ZXJ3aXNlLCBnZXQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYg KHB1Yl9lbGVtLT5hbGx0YWJsZXMpCi0JCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoUkVMS0lORF9SRUxBVElPTiwKLQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxl bS0+cHVidmlhcm9vdCk7CisJCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25S ZWxhdGlvbnMocHViX2VsZW0sCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTik7CiAJ CQllbHNlCiAJCQl7CiAJCQkJTGlzdAkgICAqcmVsaWRzLAogCQkJCQkJICAgKnNjaGVtYXJlbGlk czsKIAotCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQs Ci0JCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsK KwkJCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1Yl9lbGVtLT5v aWQsCisJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJ CSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9MRUFGKTsKIAkJCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhwdWJfZWxlbS0+b2lkLAogCQkJCQkJCQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290 ID8KIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsx NDU2LDcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQog CQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAog CQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVlbmNlcykKLQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRfU0VRVUVOQ0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNl cyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLCBSRUxLSU5EX1NFUVVF TkNFKTsKIAogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBzZXF1ZW5jZXM7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTllNjUuLjZiYjgxNmIyMTljIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTk4LDcgKzE5OCwxMiBA QCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJeworCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFi bGUpOworCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKKwkJCQlwdWJv YmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMs IHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9U QUJMRVNfSU5fU0NIRU1BOgpAQCAtNTE5LDggKzUyNCw4IEBAIEludmFsaWRhdGVQdWJSZWxTeW5j Q2FjaGUoT2lkIHB1YmlkLCBib29sIHB1YmFsbHRhYmxlcykKIAkJICogYSB0YXJnZXQuIEhvd2V2 ZXIsIFdBTCByZWNvcmRzIGZvciBUUlVOQ0FURSBzcGVjaWZ5IGJvdGggYSByb290IGFuZAogCQkg KiBpdHMgbGVhdmVzLgogCQkgKi8KLQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMo cHViaWQsCi0JCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJcmVsaWRzID0gR2V0 UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX0FMTCk7CiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmlkLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAK QEAgLTkyOSw1NSArOTM0LDYxIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlp ZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3Rt dC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAorCQkJCQkJCSAgICZzY2hlbWFpZGxp c3QpOworCisJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJ aWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJt c2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJs aWNhdGlvbiIpKTsKKworCS8qIEFkZCByZWxhdGlvbnMgKHRhYmxlcykgdG8gdGhlIHB1YmxpY2F0 aW9uLiAqLworCWlmIChyZWxhdGlvbnMgIT0gTklMKQogCXsKIAkJLyoKLQkJICogSW52YWxpZGF0 ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gU2VxdWVuY2Vz Ci0JCSAqIHB1YmxpY2F0aW9uIGRvZXNuJ3QgcmVxdWlyZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxp Y2EgaWRlbnRpdHkKLQkJICogY2hlY2tzIGRvbid0IGFwcGx5IHRvIHRoZW0uCisJCSAqIFRoZSAn cmVsYXRpb25zJyBsaXN0IGNhbiBiZSBub24tZW1wdHkgaW4gb25seSB0d28gY2FzZXM6CisJCSAq CisJCSAqIDEuIENSRUFURSBQVUJMSUNBVElPTiAuLi4gRk9SIFRBQkxFIEluIHRoaXMgY2FzZSwg J3JlbGF0aW9ucycKKwkJICogY29udGFpbnMgdGhlIGxpc3Qgb2Ygc3BlY2lmaWVkIHRhYmxlcy4K KwkJICoKKwkJICogMi4gQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFRBQkxFUyBJbiB0 aGlzIGNhc2UsICdyZWxhdGlvbnMnCisJCSAqIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHRhYmxlcyBz cGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCisJCSAqIER1cmluZyBwYXJzaW5n LCB0aGUgJ2V4Y2VwdCcgZmxhZyBpcyBzZXQgZm9yIHRoZSBhc3NvY2lhdGVkCisJCSAqIFB1Ymxp Y2F0aW9uUmVsSW5mbyBvYmplY3RzLgogCQkgKi8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVB bGwoKTsKLQl9Ci0JZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQotCXsKLQkJT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRp b25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwkJTGlzdAkgICAqcmVsczsKIAotCQkv KiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVt YWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJCQllcnJtc2coIm11 c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlv biIpKTsKLQotCQlpZiAocmVsYXRpb25zICE9IE5JTCkKLQkJewotCQkJTGlzdAkgICAqcmVsczsK KwkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJVHJhbnNmb3JtUHViV2hlcmVD bGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkgcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QpOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwot CQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAot CQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJQ2hlY2tQdWJSZWxhdGlv bkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKKwkJCQkJCQkJICAgc2NoZW1haWRsaXN0 ICE9IE5JTCwKKwkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlD aGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLAotCQkJCQkJCQkJ ICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKLQkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290KTsKLQotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBO VUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwor CX0KIAotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKLQkJewotCQkJLyoKLQkJCSAqIFNjaGVt YSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVu dAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJCUxvY2tTY2hl bWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBz Y2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwp CisJeworCQkvKgorCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlv biBpcyBjcmVhdGVkIHRvIHByZXZlbnQKKwkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24u CisJCSAqLworCQlMb2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3QpOworCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwogCX0KIAogCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJs ZXMpCisJeworCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5m byBpcyByZWJ1aWx0LiAqLworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KKwog CUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lk LCAwKTsKIAogCS8qCkBAIC0xMDUwLDggKzEwNjEsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMb2Nr RGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJ CQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCi0JCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCk7CisJCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJ CWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQogCQl7CkBAIC0xMTcwLDggKzExODEsOCBAQCBBbHRl clB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LAogCQkgKiB0cmVlcywgbm90IGp1c3QgdGhvc2UgZXhwbGljaXRseSBtZW50aW9u ZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgogCQkgKi8KIAkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkK LQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9u SW5jbHVkZWRSZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX0FMTCk7CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTEyNTYsOCArMTI2Nyw4IEBAIEFs dGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBs ZSB0dXAsCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVs c2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBH ZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05f UEFSVF9ST09UKTsKKwkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRl ZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAt MTM1OCw2ICsxMzY5LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1 YmxpY2F0aW9uUmVsSW5mbyk7CiAJCQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJ b2xkcmVsLT5jb2x1bW5zID0gTklMOworCQkJCW9sZHJlbC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJ b2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCiAJCQkJCQkJCQkJCSAgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJCQlkZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBv bGRyZWwpOwpAQCAtMTQwOCw3ICsxNDIwLDggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxpc3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpy ZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5v aWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvbklu Y2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05f UEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByZWxvaWRzKQogCQl7CkBAIC0xNzcxLDYgKzE3 ODQsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24g PSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9y ZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7 CiAJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29p ZChyZWxpZHMsIG15cmVsaWQpOwogCkBAIC0xODQzLDYgKzE4NTcsNyBAQCBPcGVuVGFibGVMaXN0 KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20g cGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3Jl bC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQkJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwp OwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgY2hpbGRyZWxpZCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjk3NmMwZTVjN2UuLmE1MzUxZmM1OWM2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwpAQCAtODY4OCw3ICs4Njg4LDcgQEAgQVRFeGVjU2V0RXhwcmVz c2lvbihBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29s TmFtZSwKIAkgKiBleHByZXNzaW9ucy4KIAkgKi8KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJ QlVURV9HRU5FUkFURURfVklSVFVBTCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxh dGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVs YXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiQUxU RVIgVEFCTEUgLyBTRVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdl bmVyYXRlZCBjb2x1bW5zIGluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGljYXRpb24i KSwKQEAgLTE4ODg0LDcgKzE4ODg0LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dH RUQsIGFzIFVOTE9HR0VEIHRhYmxlcyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJaWYgKCF0 b0xvZ2dlZCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJl bCkpICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qg Y2hhbmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBw dWJsaWNhdGlvbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MTNlZTVjMTBhMi4uZDNjM2U5ZjU5YzYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtMjAzLDYgKzIwMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNiaXRz KGludCBjYXNfYml0cywgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAogc3Rh dGljIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRl Z3ksIGludCBsb2NhdGlvbiwKIAkJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK IHN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwKKwkJCQkJCQkJCQkJTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQkJCQkJCWJv b2wgKmFsbF90YWJsZXMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJ CQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKQEAgLTQ1NSw2ICs0NTYsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNp bmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJ CQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdCBwdWJfYWxsX29ial90eXBlX2xpc3QKKwkJ CQlwdWJfZXhjZXB0X29ial9saXN0IG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0 Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAldHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpA QCAtNTkyLDYgKzU5NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4J dmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3Bl YyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRp b25PYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2Vw dE9ialNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxs T2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19u YW1lX2tleXdvcmQKQEAgLTEwNzkyLDcgKzEwNzk1LDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVS IEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoK ICAqIHB1Yl9hbGxfb2JqX3R5cGUgaXMgb25lIG9mOgogICoKLSAqCQlUQUJMRVMKKyAqCQlUQUJM RVMgW0VYQ0VQVCBbVEFCTEVdICggdGFibGUgWywgLi4uXSApXQogICoJCVNFUVVFTkNFUwogICoK ICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNd CkBAIC0xMDgxOCw3ICsxMDgyMSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJQ3Jl YXRlUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsK IAogCQkJCQluLT5wdWJuYW1lID0gJDM7Ci0JCQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBl X2xpc3QoJDUsICZuLT5mb3JfYWxsX3RhYmxlcywKKwkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29i anR5cGVfbGlzdCgkNSwgJm4tPnB1Ym9iamVjdHMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxf dGFibGVzLAogCQkJCQkJCQkJCQkJCSZuLT5mb3JfYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJ CQl5eXNjYW5uZXIpOwogCQkJCQluLT5vcHRpb25zID0gJDY7CkBAIC0xMDg1OCw2ICsxMDg2Miw3 IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQy OwogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53 aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRB QkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTEwOTMzLDExICsxMDkzOCwxOSBAQCBw dWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwg JDMpOyB9CiAJOwogCitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxl ICcoJyBwdWJfZXhjZXB0X29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSov CQkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0J CQkJQUxMIFRBQkxFUworCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJ CXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQk LT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRf dGFibGVzID0gJDM7CisJCQkJCQlpZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJ CXByZXByb2Nlc3NfcHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJ CQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAt MTA5NTQsNiArMTA5NjcsMjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFs bE9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRp b25FeGNlcHRPYmpTcGVjOgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFr ZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNB VElPTk9CSl9FWENFUFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uVGFibGUpOworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQk LT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJ fQorCTsKKworcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcs JyBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk3OTQsOCArMTk4MjQsOSBA QCBwYXJzZVBhcnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNv cmVfeXlzY2FuX3QgeXlzY2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0 X3R5cGUgaGFzIGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9p ZAotcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0 LCBib29sICphbGxfdGFibGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAq YWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90 YWJsZXMsIGJvb2wgKmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2Fu bmVyKQogewogCWlmICghYWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MTUsNiAr MTk4NDYsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmpl Y3RzX2xpc3QsIGJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2Jq LT5sb2NhdGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9 IGxpc3RfY29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVs c2UgaWYgKG9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA5ZWU4 OTQ5ZTA0MC4uZmRjMWQxMmIzMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYwpAQCAtMjA4OCw3ICsyMDg4LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBH T3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+cmVwbGlj YXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxp ZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsK KwkJTGlzdAkgICAqcHViaWRzID0gTklMOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0IGFjcXVpcmUg YSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBAIC0yMTAz LDYgKzIxMDMsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7 CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocmVsaWQsICZwdWJpZHMsIE5VTEwpOworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlv bnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGljYXRpb25zX3ZhbGlkKQog CQl7CkBAIC0yMjAyLDEwICsyMjA0LDI2IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERh dGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRoaXMgaXMgYSBG T1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJCQkgKiByb290 IGFuZCBzZXQgdGhlIGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoKKwkJCSAqIElm IHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFzIGFuIEVYQ0VQ VAorCQkJICogVEFCTEUgbGlzdDoKKwkJCSAqCisJCQkgKiAxLiBJZiBwdWJ2aWFyb290IGlzIHNl dCBhbmQgdGhlIHJlbGF0aW9uIGlzIGEgcGFydGl0aW9uLCBjaGVjaworCQkJICogd2hldGhlciB0 aGUgcGFydGl0aW9uIHJvb3QgaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRQorCQkJICog bGlzdC4gSWYgc28sIGRvIG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UuCisJCQkgKgorCQkJICogMi4g SWYgcHVidmlhcm9vdCBpcyBub3Qgc2V0LCBjaGVjayB3aGV0aGVyIHRoZSByZWxhdGlvbiBpdHNl bGYKKwkJCSAqIGlzIGluY2x1ZGVkIGluIHRoZSBFWENFUFQgVEFCTEUgbGlzdC4gSWYgc28sIGRv IG5vdCBwdWJsaXNoIHRoZQorCQkJICogY2hhbmdlLgorCQkJICoKKwkJCSAqIFRoaXMgaXMgYWNo aWV2ZWQgYnkga2VlcGluZyB0aGUgdmFyaWFibGUgInB1Ymxpc2giIHNldCB0bworCQkJICogZmFs c2UuIEFuZCBldmVudHVhbGx5LCBlbnRyeS0+cHViYWN0aW9ucyB3aWxsIHJlbWFpbiBhbGwgZmFs c2UKKwkJCSAqIGZvciB0aGlzIHB1YmxpY2F0aW9uLgogCQkJICovCiAJCQlpZiAocHViLT5hbGx0 YWJsZXMpCiAJCQl7Ci0JCQkJcHVibGlzaCA9IHRydWU7CisJCQkJTGlzdAkgICAqZXhjZXB0cHVi aWRzID0gTklMOworCiAJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCiAJ CQkJewogCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhy ZWxpZCk7CkBAIC0yMjEzLDkgKzIyMzEsMjMgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCXB1Yl9yZWxpZCA9IGxsYXN0X29p ZChhbmNlc3RvcnMpOwogCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9y cyk7CiAJCQkJfQotCQkJfQogCi0JCQlpZiAoIXB1Ymxpc2gpCisJCQkJR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocHViX3JlbGlkLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKKworCQkJCWlmICghbGlz dF9tZW1iZXJfb2lkKGV4Y2VwdHB1YmlkcywgcHViLT5vaWQpKQorCQkJCQlwdWJsaXNoID0gdHJ1 ZTsKKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBTYW5pdHkgY2hlY2sgKi8KKwkJCQkJQXNzZXJ0 KGVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9PSBmYWxzZSAmJgorCQkJCQkJICAgZW50cnkt PnB1YmFjdGlvbnMucHVidXBkYXRlID09IGZhbHNlICYmCisJCQkJCQkgICBlbnRyeS0+cHViYWN0 aW9ucy5wdWJkZWxldGUgPT0gZmFsc2UgJiYKKwkJCQkJCSAgIGVudHJ5LT5wdWJhY3Rpb25zLnB1 YnRydW5jYXRlID09IGZhbHNlKTsKKwkJCQl9CisKKwkJCQlsaXN0X2ZyZWUoZXhjZXB0cHViaWRz KTsKKwkJCX0KKwkJCWVsc2UgaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2VzdG9y X3B1Ymxpc2hlZCA9IGZhbHNlOwogCkBAIC0yMjU5LDYgKzIyOTEsOSBAQCBnZXRfcmVsX3N5bmNf ZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCSAqIERvbid0 IHB1Ymxpc2ggY2hhbmdlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLCBiZWNhdXNlCiAJCQkgKiBw dWJsaXNoaW5nIHRob3NlIG9mIGl0cyBwYXJ0aXRpb25zIHN1ZmZpY2VzLCB1bmxlc3MgcGFydGl0 aW9uCiAJCQkgKiBjaGFuZ2VzIHdvbid0IGJlIHB1Ymxpc2hlZCBkdWUgdG8gcHVidmlhcm9vdCBi ZWluZyBzZXQuCisJCQkgKgorCQkJICogSWYgdGhlIHJlbGF0aW9uIGlzIHBhcnQgb2YgRVhDRVBU IFRBQkxFIGxpc3Qgb2YgYSBwdWJsaWNhdGlvbiwKKwkJCSAqIHRoZSAncHVibGlzaCcgdmFyaWFi bGUgaXMgYWxyZWFkeSBzZXQgdG8gZmFsc2UuCiAJCQkgKi8KIAkJCWlmIChwdWJsaXNoICYmCiAJ CQkJKHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBwdWItPnB1YnZpYXJv b3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRjOWZmZjEuLmRjMDIx ZGJiNmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3ODgsNyArNTc4OCw5 IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogdm9p ZAogUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGlj YXRpb25EZXNjICpwdWJkZXNjKQogewotCUxpc3QJICAgKnB1Ym9pZHM7CisJTGlzdAkgICAqcHVi b2lkcyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOworCUxpc3QJICAgKmFs bHRhYmxlc3B1Ym9pZHM7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7 CiAJT2lkCQkJc2NoZW1haWQ7CkBAIC01ODI2LDcgKzU4MjgsNyBAQCBSZWxhdGlvbkJ1aWxkUHVi bGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2Mp CiAJcHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAogCS8qIEZldGNo IHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lkcyA9IEdldFJlbGF0 aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwg JnB1Ym9pZHMsICZleGNlcHRwdWJvaWRzKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNw YWNlKHJlbGF0aW9uKTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIApAQCAtNTgzOCwxNiArNTg0MCwy NSBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJs aWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCWZvcmVhY2gobGMsIGFuY2VzdG9ycykKIAkJewogCQkJ T2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJCUxpc3QJICAgKmFuY2VzdG9yX3B1 Ym9pZHMgPSBOSUw7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9leGNlcHRwdWJvaWRzID0gTklMOwog Ci0JCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAotCQkJCQkJCQkJ CQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCUdldFJlbGF0aW9uUHVi bGljYXRpb25zKGFuY2VzdG9yLCAmYW5jZXN0b3JfcHVib2lkcywKKwkJCQkJCQkJCSZhbmNlc3Rv cl9leGNlcHRwdWJvaWRzKTsKKworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQo cHVib2lkcywgYW5jZXN0b3JfcHVib2lkcyk7CiAJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNw YWNlKGFuY2VzdG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsCiAJCQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJCWV4 Y2VwdHB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKGV4Y2VwdHB1Ym9pZHMsCisJCQkJ CQkJCQkJCQkgICBhbmNlc3Rvcl9leGNlcHRwdWJvaWRzKTsKIAkJfQogCX0KLQlwdWJvaWRzID0g bGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo KSk7CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCk7CisJ cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCSBsaXN0 X2RpZmZlcmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJCQkJCSBleGNlcHRw dWJvaWRzKSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJCXB1YmlkID0gbGZp cnN0X29pZChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3ZGY1NmQ4YjFiMC4uZjBkMDEyYzM2MjkgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwpAQCAtNDYzNCw5ICs0NjM0LDU4IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQi KSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJnZW5jb2xzX3R5cGUgPQogCQkJKihQUWdldHZhbHVl KHJlcywgaSwgaV9wdWJnZW5jb2xzKSk7CisJCXB1YmluZm9baV0uZXhjZXB0X3RhYmxlcyA9IChT aW1wbGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVjaWRlIHdo ZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYocHVi aW5mb1tpXS5kb2JqKSwgZm91dCk7CisKKwkJLyoKKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxl cyBmb3IgcHVibGljYXRpb25zIHNwZWNpZmllZCB3aXRoIHRoZSBFWENFUFQKKwkJICogVEFCTEUg Y2xhdXNlLiBUaGlzIGlzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAxOS4KKwkJICoKKwkJICog RVhDRVBUIFRBQkxFUyBpcyBwcm9jZXNzZWQgaGVyZSBhbmQgb3V0cHV0IGRpcmVjdGx5IGJ5CisJ CSAqIGR1bXBQdWJsaWNhdGlvbigpLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgYXBwcm9hY2ggdXNl ZCBpbgorCQkgKiBkdW1wUHVibGljYXRpb25UYWJsZSgpIGFuZCBkdW1wUHVibGljYXRpb25OYW1l c3BhY2UoKSwgc2luY2UgdGhhdAorCQkgKiBhcHByb2FjaCB3b3VsZCByZXF1aXJlIEVYQ0VQVCBU QUJMRSBzdXBwb3J0IGZvciBBTFRFUiBQVUJMSUNBVElPTiwKKwkJICogd2hpY2ggaXMgbm90IGN1 cnJlbnRseSBzdXBwb3J0ZWQuCisJCSAqLworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx OTAwMDApCisJCXsKKwkJCWludAkJCW50YmxzOworCQkJUEdyZXN1bHQgICAqcmVzX3RibHM7CisK KwkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks CisJCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb25fcmVsXG4iCisJCQkJCQkJICAiV0hFUkUgcHJwdWJpZCA9ICV1IGFuZCBw cmV4Y2VwdCIsCisJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsKKworCQkJcmVz X3RibHMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19P Syk7CisKKwkJCW50YmxzID0gUFFudHVwbGVzKHJlc190YmxzKTsKKwkJCWlmIChudGJscyA9PSAw KQorCQkJCWNvbnRpbnVlOworCisJCQlmb3IgKGludCBqID0gMDsgaiA8IG50YmxzOyBqKyspCisJ CQl7CisJCQkJT2lkCQkJcHJyZWxpZDsKKwkJCQlUYWJsZUluZm8gICp0YmluZm87CisKKwkJCQlw cnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDApKTsKKworCQkJCXRiaW5m byA9IGZpbmRUYWJsZUJ5T2lkKHBycmVsaWQpOworCQkJCWlmICh0YmluZm8gPT0gTlVMTCkKKwkJ CQkJY29udGludWU7CisKKwkJCQlzaW1wbGVfcHRyX2xpc3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4 Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQl9CisKKwkJCVBRY2xlYXIocmVzX3RibHMpOworCQl9 CiAJfQogCiBjbGVhbnVwOgpAQCAtNDY3Niw3ICs0NzI1LDI1IEBAIGR1bXBQdWJsaWNhdGlvbihB cmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pCiAJaWYgKHB1Ymlu Zm8tPnB1YmFsbHRhYmxlcyAmJiBwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTIik7CiAJ ZWxzZSBpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQorCXsKKwkJaW50CQkJbl9leGNsdWRlZCA9 IDA7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMiKTsK KworCQkvKiBJbmNsdWRlIEVYQ0VQVCBUQUJMRSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF90 YWJsZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNl cHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUlu Zm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKworCQkJaWYgKCsrbl9leGNs dWRlZCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCBUQUJM RSAoIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOwor CQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFi bGUodGJpbmZvKSk7CisJCX0KKwkJaWYgKG5fZXhjbHVkZWQgPiAwKQorCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIpIik7CisJfQogCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHNlcXVl bmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMi KTsKIApAQCAtNDg1Niw2ICs0OTIzLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAogCS8qIENvbGxlY3Qg YWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KIAlpZiAoZm91dC0+cmVtb3RlVmVy c2lvbiA+PSAxNTAwMDApCisJewogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJ CQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCiAJCQkJCQkJICJw Z19jYXRhbG9nLnBnX2dldF9leHByKHBycXVhbCwgcHJyZWxpZCkgQVMgcHJyZWxxdWFsLCAiCkBA IC00ODY4LDYgKzQ5MzYsOSBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJCSAiICAgICAgV0hFUkUg YXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJ CSAiICBFTFNFIE5VTEwgRU5EKSBwcmF0dHJzICIKIAkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHIiKTsKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkw MDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgV0hFUkUgTk9UIHByLnByZXhj ZXB0Iik7CisJfQogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJ ICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5k ZXggNGM0YjE0ZTVmYzcuLmQxNDFlYjY2ZDE3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTY3Niw2ICs2NzYs NyBAQCB0eXBlZGVmIHN0cnVjdCBfUHVibGljYXRpb25JbmZvCiAJYm9vbAkJcHVidHJ1bmNhdGU7 CiAJYm9vbAkJcHVidmlhcm9vdDsKIAlQdWJsaXNoR2VuY29sc1R5cGUgcHViZ2VuY29sc190eXBl OworCVNpbXBsZVB0ckxpc3QgZXhjZXB0X3RhYmxlczsKIH0gUHVibGljYXRpb25JbmZvOwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAyODgxMmQyOGFhOS4uNGU2ZTRjYmRkN2Mg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMTcwLDYgKzMxNzAsMzYgQEAgbXkgJXRl c3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI4JyA9PiB7CisJCWNyZWF0ZV9vcmRl ciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViOCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKGR1bXBfdGVzdC50ZXN0X3RhYmxlKTsnLAorCQlyZWdleHAg PT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViOCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUpIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsg JWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFURSBQ VUJMSUNBVElPTiBwdWI5JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3Nx bCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBkdW1wX3Rlc3QudGVzdF9zZWNvbmRfdGFibGUp OycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSwgT05MWSBk dW1wX3Rlc3QudGVzdF9zZWNvbmRfdGFibGUpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRh dGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVu cywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFURSBQVUJMSUNBVElP TiBwdWIxMCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4gOTIsCisJCWNyZWF0ZV9zcWwgPT4KKwkJ ICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo ZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50KTsnLAorCQlyZWdleHAgPT4gcXIvXgor CQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IChPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX3BhcmVudCwgT05MWSBkdW1wX3Rlc3Qu dGVzdF9pbmhlcml0YW5jZV9jaGlsZCkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBz ZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBz dWIxJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRF IFNVQlNDUklQVElPTiBzdWIxCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDM1ODRjNGUxNDI4Li4xYmZlYzBiZDNlZiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTMwNzMsMTcgKzMwNzMsMzQgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJICAiICAgICAgICAgIFdIRVJFIGF0dHJl bGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkJICAi ICAgICAgICBFTFNFIE5VTEwgRU5EKSAiCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKLQkJCQkJCQkJICAiICAgICBK T0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJ CQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJ CQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxp ZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIiwKKwkJCQkJCQkJICBv aWQsIG9pZCwgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJCQkJCQkJ CSAgIlNFTEVDVCBwdWJuYW1lXG4iCi0JCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCi0JCQkJCQkJ CSAgIiAgICAgLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJ LCBOVUxMXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4i Ci0JCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0 aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCi0JCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKLQkJ CQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQpOworCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRh YmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIiwK KwkJCQkJCQkJICBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkJICAiICAgICBBTkQgTk9UIEVYSVNU UyAoXG4iCisJCQkJCQkJCQkgICIJCVNFTEVDVCAxXG4iCisJCQkJCQkJCQkgICIJCUZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKKwkJCQkJCQkJCSAgIgkJSk9JTiBwZ19j YXRhbG9nLnBnX2NsYXNzIHBjXG4iCisJCQkJCQkJCQkgICIJCU9OIHByLnBycmVsaWQgPSBwYy5v aWRcbiIKKwkJCQkJCQkJCSAgIgkJV0hFUkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBycHVi aWQgPSBwLm9pZClcbiIsCisJCQkJCQkJCQkgIG9pZCk7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCAiT1JERVIgQlkgMTsiKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTMxMzQs NiArMzE1MSwzNSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFu YW1lLAogCQkJUFFjbGVhcihyZXN1bHQpOwogCQl9CiAKKwkJLyogUHJpbnQgcHVibGljYXRpb25z IHRoYXQgdGhlIHRhYmxlIGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSAqLworCQlpZiAocHNl dC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb24gcFxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlv bl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJy ZWxpZCA9ICclcydcbiBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxOyIs IG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwkJCWlmICghcmVzdWx0 KQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxzZQorCQkJCXR1cGxlcyA9IFBRbnR1cGxl cyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVy KCZjb250LCBfKCJFeGNlcHQgUHVibGljYXRpb25zOiIpKTsKKworCQkJLyogTWlnaHQgYmUgYW4g ZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCisJCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBpKysp CisJCQl7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIiLCBQUWdldHZh bHVlKHJlc3VsdCwgaSwgMCkpOworCisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVm LmRhdGEpOworCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJLyoKIAkJICogSWYg dmVyYm9zZSwgcHJpbnQgTk9UIE5VTEwgY29uc3RyYWludHMuCiAJCSAqLwpAQCAtNjc1Myw4ICs2 Nzk5LDEyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJ CQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgogCQkJCQkJCSAg IldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJCQkJCQkgICIgIEFORCBjLm9pZCA9 IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIgotCQkJ CQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJCQkJCQkgICIgIEFORCBwci5wcnB1Ymlk ID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJ CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgQU5EIE5PVCBwci5wcmV4Y2VwdFxuIik7CisK KwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJPUkRFUiBCWSAxLDIiKTsKIAkJCWlmICghYWRk Rm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzOiIpLCBmYWxzZSwgJmNvbnQp KQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCkBAIC02NzcyLDYgKzY4MjIsMjMgQEAgZGVzY3Jp YmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJZ290byBlcnJvcl9yZXR1 cm47CiAJCQl9CiAJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAw MDApCisJCQl7CisJCQkJLyogR2V0IHRoZSBleGNsdWRlZCB0YWJsZXMgZm9yIHRoZSBzcGVjaWZp ZWQgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkg ICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywgYy5yZWxu YW1lKVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkJ CQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQg PSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCisJ CQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBw dWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNl cHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9y X3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0 LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCmluZGV4IDA2ZWRlYTk4ZjA2Li44ZGEyZWM0ODY5YyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYwpAQCAtMzY2MCw3ICszNjYwLDE3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAi U0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIpKQotCQlDT01QTEVURV9XSVRIKCJXSVRI ICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFICgiLCAiV0lUSCAoIik7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUgKCIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEgo IigiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIikpCisJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55TikgJiYgZW5k c193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFC TEUiLCAiKCIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01Q TEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOIFNDSEVN QSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCAzNjhiZWNjYTg5OS4uNTEyNmM5 OTZmZjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE0NiwxNCArMTQ2 LDE2IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9uCXJlbGF0 aW9uOwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJYm9vbAkJ ZXhjZXB0OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0 UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRp b25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4dGVybiBM aXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHViaWRzLCBMaXN0ICoqZXhj ZXB0X3B1Ymlkcyk7CiAKIC8qLS0tLS0tLS0tCi0gKiBFeHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9w YXJ0b3B0IHBhcmFtZXRlciBvZiBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucygpLAorICogRXhwZWN0 ZWQgdmFsdWVzIGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YKKyAqIEdldFB1YmxpY2F0aW9u SW5jbHVkZWRSZWxhdGlvbnMoKSwgYW5kIEdldEFsbFB1YmxpY2F0aW9uRXhjbHVkZWRUYWJsZXMo KSwKICAqIHdoaWNoIGFsbG93cyBjYWxsZXJzIHRvIHNwZWNpZnkgd2hpY2ggcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZXMKICAqIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24gdGhl eSBleHBlY3QgdG8gc2VlLgogICoKQEAgLTE2OCw5ICsxNzAsMTIgQEAgdHlwZWRlZiBlbnVtIFB1 YmxpY2F0aW9uUGFydE9wdAogCVBVQkxJQ0FUSU9OX1BBUlRfQUxMLAogfSBQdWJsaWNhdGlvblBh cnRPcHQ7CiAKLWV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0UHVibGlj YXRpb25JbmNsdWRlZFJlbGF0aW9ucyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uRXhj bHVkZWRUYWJsZXMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7 Ci1leHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBi b29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2luZCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGlj YXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7CiBleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRp b25zKE9pZCBzY2hlbWFpZCk7CiBleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxh dGlvbnMoT2lkIHNjaGVtYWlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVs LmgKaW5kZXggM2E4NzkwZTg0ODIuLmUzY2NiYTVlYzc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb25fcmVsLmgKQEAgLTMxLDYgKzMxLDcgQEAgQ0FUQUxPRyhwZ19wdWJsaWNh dGlvbl9yZWwsNjEwNixQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8q IG9pZCAqLwogCU9pZAkJCXBycHViaWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9p ZCBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xh c3MpOwkvKiBPaWQgb2YgdGhlIHJlbGF0aW9uICovCisJYm9vbAkJcHJleGNlcHQgQktJX0RFRkFV TFQoZik7CS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCiAKICNpZmRlZglDQVRBTE9HX1ZBUkxF TgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCXBnX25vZGVfdHJl ZSBwcnF1YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4 IGFhYzRiZmM3MGQ5Li43NjFjNzRlYjhiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDMw MCw2ICs0MzAwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogCVJhbmdlVmFy ICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCiAJTm9kZQkgICAq d2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8q IExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJZXhjZXB0 OwkJCS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCiB9IFB1YmxpY2F0aW9uVGFibGU7CiAKIC8q CkBAIC00MzA4LDYgKzQzMDksNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCiB0 eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewogCVBVQkxJQ0FUSU9OT0JKX1RB QkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRSwJLyogQSB0 YWJsZSB0byBiZSBleGNsdWRlZCAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUEs CS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NV Ul9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVudCBvZgogCQkJCQkJCQkJCQkg KiBzZWFyY2hfcGF0aCAqLwpAQCAtNDMzNiw2ICs0MzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVi bGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlQdWJsaWNhdGlvbkFsbE9i alR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwor CUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIExpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVk ICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5r bm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNwZWM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggN2ZiNDlhYWYyOWIuLmIyMTE1ZWRiM2MzIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjEzLDMzICsyMTMs MTA0IEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAKLURST1AgVEFC TEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywg dGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hl bWE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKIFNFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1Ig VEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJM RSBPTkxZIHRlc3RwdWJfdGJsMzsKKy0tIEV4Y2x1ZGUgdGFibGVzIHVzaW5nIEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAodGFibGVsaXN0KQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVz dHB1Yl90YmwxLCB0ZXN0cHViX3RibDIpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMiIKKworLS0gRXhjbHVkZSB0YWJsZXMg dXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAg ICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymwx IgorCistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGlj YXRpb24gbGlzdCB0aGUgdGFibGUgaXMKKy0tIGV4Y2x1ZGVkIGZyb20KK1xkIHRlc3RwdWJfdGJs MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl90Ymwx IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAg ICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0 ZXN0cHViX3RibDFfaWRfc2VxJzo6cmVnY2xhc3MpCisgZGF0YSAgIHwgdGV4dCAgICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJ TUFSWSBLRVksIGJ0cmVlIChpZCkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0 YWJsZXMiCitFeGNlcHQgUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZSIKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgorCiBS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0 cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJs ZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHVi X3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi MyBGT1IgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIzCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5l cmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFibGVz OgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIK KyAgICAicHVibGljLnRlc3RwdWJfdGJsX2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymxf cGFyZW50IgogCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVz dHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CiAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8 IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMu dGVzdHB1Yl90YmwzIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRB QkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1 YjMsIHRlc3RwdWI0OworLS0gRXhjbHVkZSBwYXJlbnQgdGFibGUsIG9taXR0aW5nIGJvdGggb2Yg J09OTFknIGFuZCAnKicKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg QWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitF eGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1Ymxp Yy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0tIEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJs ZSBhbmQgYWxsIGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0 cHViNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjYKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAg ICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisg ICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGV4 Y2x1ZGUgdGFibGUgYnV0IG5vdCBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQp OworXGRScCsgdGVzdHB1YjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI3CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJf dGJsX3BhcmVudCIKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVz dHB1Yl90YmxfcGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OwogLS0tIFRlc3Rz IGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNz X3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggODViMDBiZDY3YzguLjUyMjRkYTkz ZDc3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSw0 MSBAQCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hF UkUgcHVibmFtZSA9ICd0ZXN0cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXMKIAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwor LS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWJs ZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJs Mik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorLS0gRXhjbHVkZSB0 YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0YWJsZWxpc3QpCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlMQorLS0gQ2hlY2sgdGhhdCB0aGUgdGFibGUgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1 YmxpY2F0aW9uIGxpc3QgdGhlIHRhYmxlIGlzCistLSBleGNsdWRlZCBmcm9tCitcZCB0ZXN0cHVi X3RibDEKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl90 YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0 YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWE7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHVi X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKIAotQ1JFQVRF IFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwotQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsM2Eg KGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90 YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hpbGQgKGIgdGV4 dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3Rw dWJfdGJsMzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0 cHViX3RibDM7Ci1SRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsX3Bh cmVudDsKIFxkUnArIHRlc3RwdWI0CistLSBFeGNsdWRlIHBhcmVudCB0YWJsZSwgb21pdHRpbmcg Ym90aCBvZiAnT05MWScgYW5kICcqJworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3Rw dWI1CistLSBFWENFUFQgd2l0aCAnKic6IGV4Y2x1ZGUgdGFibGUgYW5kIGFsbCBkZXNjZW5kYW50 cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAodGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRo IE9OTFk6IGV4Y2x1ZGUgdGFibGUgYnV0IG5vdCBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3Ri bF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRl c3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKK1JFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVz dHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVz dHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKIAogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMg d2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IGE0YzdkYmFmZjU5Li4wNzI4MmFhM2MxOCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDYsNiArNDYsNyBAQCB0ZXN0cyArPSB7CiAgICAg ICAndC8wMzRfdGVtcG9yYWwucGwnLAogICAgICAgJ3QvMDM1X2NvbmZsaWN0cy5wbCcsCiAgICAg ICAndC8wMzZfc2VxdWVuY2VzLnBsJywKKyAgICAgICd0LzAzN19yZXBfY2hhbmdlc19leGNlcHRf dGFibGUucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxl LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJs ZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTU5MDRkZGQwMDUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5n ZXNfZXhjZXB0X3RhYmxlLnBsCkBAIC0wLDAgKzEsMjM4IEBACisKKyMgQ29weXJpZ2h0IChjKSAy MDIxLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgTG9naWNh bCByZXBsaWNhdGlvbiB0ZXN0cyBmb3IgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9ucwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6 ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIElu aXRpYWxpemUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5p bml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisj IEVYQ0VQVCBUQUJMRSB0ZXN0IGNhc2VzIGZvciBub3JtYWwgdGFibGVzCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENyZWF0ZSBzY2hlbWFzIGFuZCB0 YWJsZXMgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiMSBB UyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGE7CispKTsKKworIyBDcmVhdGUgc2No ZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxF IHNjaDEudGFiMSAoYSBpbnQpOworKSk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgor bXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5h bWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBU QUJMRSAoc2NoMS50YWIxKSIKKyk7CisjIENyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xv dAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2Ny ZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Rlc3Rfc2xvdCcsICdwZ291dHB1dCcpIik7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiCispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFi bGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlv bl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBDaGVjayB0 aGUgdGFibGUgZGF0YSBkb2VzIG5vdCBzeW5jIGZvciBleGNsdWRlZCB0YWJsZQorbXkgJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBxcSgw fHwpLAorCSdjaGVjayB0aGVyZSBpcyBubyBpbml0aWFsIGRhdGEgY29waWVkIGZvciB0aGUgZXhj bHVkZWQgdGFibGUnKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMTEsMjApKSIp OworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gZXhjbHVkZWQgdGFibGUgaXMgbm90 IHB1Ymxpc2hlZC4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5h cnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScs ICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfc3ViX3NjaGVtYScpIgorKTsKK2lzKCRyZXN1bHQs IHFxKHQpLCAnY2hlY2sgbm8gY2hhbmdlcyBmb3IgZXhjbHVkZWQgdGFibGUgaW4gcmVwbGljYXRp b24gc2xvdCcpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJf c2NoZW1hJyk7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgZXhjbHVkZWQg dGFibGUgaXMgbm90IHJlcGxpY2F0ZWQuCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJP TSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByZXBsaWNhdGVkIGlu c2VydHMgb24gc3Vic2NyaWJlcicpOworCisjIGNsZWFudXAKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9O IHRhcF9zdWJfc2NoZW1hIik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMgZm9yIHBhcnRpdGlvbmVkIHRh YmxlcworIyBDaGVjayBiZWhhdmlvciBvZiBFWENFUFQgVEFCTEUgd2l0aCBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCBvbiBhCisjIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBpdHMgcGFydGl0aW9u cy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgU2V0 dXAgcGFydGl0aW9uZWQgdGFibGUgYW5kIHBhcnRpdGlvbnMgb24gdGhlIHB1Ymxpc2hlciB0aGF0 IG1hcCB0byBub3JtYWwKKyMgdGFibGVzIG9uIHRoZSBzdWJzY3JpYmVyCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShh IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxIFBB UlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworCUNSRUFURSBU QUJMRSBzY2gxLnBhcnQyIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoNikg VE8gKDEwKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJQ1JFQVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gx LnBhcnQxKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MihhIGludCk7CispKTsKKwor IyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSBmYWxzZQorIyBFeGNsdWRpbmcgYSBwYXJ0aXRpb24gd2hpbGUgcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSBmYWxzZSBwcmV2ZW50cworIyByZXBsaWNhdGlvbiBvZiByb3dzIGluc2Vy dGVkIGludG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGZvciB0aGF0IHBhcnRpY3VsYXIKKyMgcGFy dGl0aW9uLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ Q1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKHNjaDEucGFydDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2Up OworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDYpOworKSk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBf c3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5 bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3 KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7 CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24g cGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0 LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBleGNsdWRlZCBwYXJ0aXRpb24nKTsKKworJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBz Y2gxLnBhcnQyIik7CitpcyggJHJlc3VsdCwgcXEoNgorNyksICdjaGVjayByb3dzIG9uIG90aGVy IHBhcnRpdGlvbicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgc2NoMS50MSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 YXBfc3ViX3BhcnQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CisKKyMg RVhDRVBUIFRBQkxFIChzY2gxLnQxKSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0g ZmFsc2UKKyMgRXhjbHVkaW5nIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBzdGlsbCBhbGxvd3Mgcm93 cyBpbnNlcnRlZCBpbnRvIHRoZQorIyBwYXJ0aXRpb25lZCB0YWJsZSB0byBiZSByZXBsaWNhdGVk IHZpYSBpdHMgcGFydGl0aW9ucy4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IGZhbHNlKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMSksICg2KTsKKykpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElD QVRJT04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNj cmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxV RVMgKDIpLCAoNyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9z dWJfcGFydCcpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVj ayByb3dzIG9uIHBhcnRpdGlvbmVkIHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOwor aXMoICRyZXN1bHQsIHFxKDEKKzIpLCAnY2hlY2sgcm93cyBvbiBmaXJzdCBwYXJ0aXRpb24nKTsK KworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzY2gxLnBhcnQyIik7CitpcyggJHJlc3VsdCwgcXEoNgorNyksICdjaGVjayBy b3dzIG9uIHNlY29uZCBwYXJ0aXRpb24nKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0OyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90Jywg cGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7CisKKyMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZQorIyBXaGVuIHRoZSBwYXJ0aXRp b25lZCB0YWJsZSBpcyBleGNsdWRlZCBhbmQgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMg dHJ1ZSwKKyMgbm8gcm93cyBmcm9tIHRoZSB0YWJsZSBvciBpdHMgcGFydGl0aW9ucyBhcmUgcmVw bGljYXRlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFIChzY2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJSU5TRVJU IElOVE8gc2NoMS50MSBWQUxVRVMgKDEpLCAoNik7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIK Kyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworIyBWZXJp ZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcHVi bGlzaGVkIHdoZW4gaXQgaXMKKyMgZXhjbHVkZWQgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IHRydWUuCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmlu YXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEn LCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCispOworaXMoJHJlc3VsdCwg cXEodCksICdjaGVjayBubyBjaGFuZ2VzIGZvciBleGNsdWRlZCB0YWJsZSBpbiByZXBsaWNhdGlv biBzbG90Jyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNr IHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7Citp cygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBmaXJzdCBwYXJ0aXRpb24nKTsKKworJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICog RlJPTSBzY2gxLnBhcnQyIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBzZWNv bmQgcGFydGl0aW9uJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJUUlVOQ0FURSBzY2gxLnQxIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3RhcF9zdWJfcGFydCcpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKKwor IyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSB0cnVlCisjIFdoZW4gYSBwYXJ0aXRpb24gaXMgZXhjbHVkZWQgYnV0IHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290IGlzIHRydWUsCisjIHJvd3MgcHVibGlzaGVkIHRocm91Z2ggdGhlIHBh cnRpdGlvbmVkIHRhYmxlIGNhbiBzdGlsbCBiZSByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDEpIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAo MSksICg2KQorKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0 Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSBPUkRFUiBCWSBh Iik7CitpcyggJHJlc3VsdCwgcXEoMQorMgorNgorNyksICdjaGVjayByb3dzIG9uIHBhcnRpdGlv bmVkIHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwgcXEoKSwg J2NoZWNrIHJvd3Mgb24gZXhjbHVkZWQgcGFydGl0aW9uJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0 MiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gb3RoZXIgcGFydGl0aW9uJyk7 CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3Rv cCgnZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --000000000000c3fe7c0647b785af--