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 1vlTgb-00Cnna-1c for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 15:11:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlTga-009wgt-1n for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 15:11:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vlTgZ-009wgg-1q for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 15:11:56 +0000 Received: from mail-yx1-xb12b.google.com ([2607:f8b0:4864:20::b12b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vlTgT-002wCC-1t for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 15:11:55 +0000 Received: by mail-yx1-xb12b.google.com with SMTP id 956f58d0204a3-6495d592b58so1011928d50.2 for ; Thu, 29 Jan 2026 07:11:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769699509; cv=none; d=google.com; s=arc-20240605; b=UVH/s3w3IZu9BZU+HKySetcObWowJAexCG/3HTvPuIXB2ZYFlYkXxn/87KCZauD90A /jlhfPvmdAQwQXY0+NMDtoxi7Mmbn5JGHgsqsxpT9IB6Mp44uVG+yeki/tUEOAAasNLx Dp/jnLMcFcTC967IDREN1ZpSdLe+LprcaE9r6ZSeMz/kOW/jFxRt0LSpCcPtEFfiahJr Gn2vTGzVfcOl2J1oAm4WJ1EVDjVm+54z3Dm7Jvl02xl6aFlw6AndoRDlYr47d06bTt2s +QtnWQhj7m8/FJEE8n89+6ULAtgZZyE8VXFcF9e+yLCBmGUykw93q2hi4761oB2TsMvO jYoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=yrYP+m31VqtWCi92meeM2ccGkV3m3D2ChV/oGm0E6Qs=; fh=RxK8vE5aZ9m2sOPUlG598uQAtZE8TM/Ive/R4Ax2Tcc=; b=H9EQmlKf3HI5PtvQ34x+wlG0BtGasJ5SwELC8FS728njI1uY+xjuD2oqG6ePa3CsZt 4MVwO5gm+W8Y/b/0kWmnOoMuhLlnU27oc/7JkHk5YL4BXvdVusDWjT9USPsinUsLlNxc AX3gVu0BeDn8ssdY9NPDj0tWn+mHOUbPXIlGeBFJ6Pic+1UTz7aEYwilL6uC9tciHXTL 0TJEkPcPQC0am5az1Py/EZUKbL+Y6sMlyO9iCcfDw6nTaKzilkL7nfuqEVXK6dczTsQF Qs2cnFAslDTFNYwp+a3rsaa1/5idltLm47OTGfJaYKDS2OdJZOw/AEaAsSgi2LgJ1otH VRSw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769699509; x=1770304309; 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=yrYP+m31VqtWCi92meeM2ccGkV3m3D2ChV/oGm0E6Qs=; b=kS3VXSkSrvBDl0KBjBpJNUtzfqu5PoS2qHEa9v5o9iiFj6PTuPXsRkjb9461AmVEaJ 7IGp3RONpsvinNcw87t35CK3G0Xc2Nh8OYSMnNhlQ60UZ4l1q3l3E+mv1xQ4w3FelLNG fi6NYr9bXqnf14Gjdj9bhzX7j//lr+vPk0ZyE83Ze6IBiauY7/HyecFJ0WWCNM3RVEU3 mxZ5DJZ52Pj9LW3No4J+3NlWfax3iVXFrn9PYdK/8OP85nrNI41SbJpV3MWLXOI8vOo/ EnLCacKddiElt3Ueo+/5IoSS9PcAlpkiNXkKNtuaQhYoxMwzApLqn1H/MVsjCnsrgOYQ 21qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769699509; x=1770304309; 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=yrYP+m31VqtWCi92meeM2ccGkV3m3D2ChV/oGm0E6Qs=; b=ki6vbnbKPkjP1gPOnoC4XYY1XGPfg3gOtbBNHTMVKO5wOSDHpf3VNIGFNurqnjs39F pIli6aoeVSQ0ZpS1alxXh2UHMysrTVB/HMjuYHopKyMXMng01mBkMCWekNZ8Ci0XH92w +gp6XN6OCP5lmKTotIQnay3wo0GVAvZewvkNztfvtpsffMOw2WH0BnqWcMcZp1UnOpTh tQbLQJxvzNLn3OAshOX+vDyY2VjsrFsAJ4gQyuteEWo17qZoWZbbNPX847KJz9kPn7Q6 7GY/PwjWvA0r+eZK65r/YcJeVoiQbuADeZc61/DjBUDy2w9/3dbfVnyriggfv2Sh+rwn Xvng== X-Forwarded-Encrypted: i=1; AJvYcCUnC+XVQWyytVigtV0NuKZlhifP0vki/XFozXS+L7bZMf1hw+LE7ssCjxvcuzn7+EhTnfrS7xlA/5dZV2is@lists.postgresql.org X-Gm-Message-State: AOJu0YzqTt6gCrW0+lsl/i2F/so1HXvpQPBrLe3hThRgnSmwcTQOCLJx I9z9RfeHbJ7aYjbxIR4igz2knqDbFN7E1M/6g46PzWBgqKa7XEfc0VlAUU/6Ge2PPckPj9oHx5N FNf7A6+p9DT/aW4vh7QlqQD3aemI7vbY= X-Gm-Gg: AZuq6aJ+nNBed5vtF2vTY9YHgxJ/L7eC6/W6qr0Hm+SIE0ESTSwAbzDIWaborYUsjch 3VAEQwbmcyX46r4mmrTTn7zXWE9oTzBo3BBWOvik6SWDk4jZgxD3b3q/cmJybAjEKMh+Ul3a5Lc YQB4TsdxzF+2XJtIkTWLQ/DaLl3cqzZjQIJavKVsM5F/oMrzX2BGcPGcDfrFBU7BSlJH25VIk7Q zePWpQpG8WMnYZx1ZqXAR4MgHRrHvbjpZD+7JC7y+76u/W4KMYYuIgRb+KJ5i6mD2TEE4J2D2ja UXkdaJpDO+HFLZy/em9mU2faGysHSSb0HKUokjOg X-Received: by 2002:a05:690e:134b:b0:641:f5bc:6975 with SMTP id 956f58d0204a3-6498fc76b6amr6857509d50.81.1769699508645; Thu, 29 Jan 2026 07:11:48 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Thu, 29 Jan 2026 20:41:26 +0530 X-Gm-Features: AZwV_Qhr35nRT_W3USAgrZjVwP6BXhXwbwaCUMV_cwHwY2vvFAJbaOgnvWy8h8s Message-ID: Subject: Re: Skipping schema changes in publication To: shveta malik Cc: Dilip Kumar , Amit Kapila , Shlok Kyal , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009403bb0649884659" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009403bb0649884659 Content-Type: text/plain; charset="UTF-8" On Wed, 28 Jan 2026 at 10:46, shveta malik wrote: > > Thank You for the patch. > > 1) > There are certain parts of Approach 3 still present in Approach 1, as > an example: > > 1a) > + For partitioned tables, only the root partitioned table may be specified > + in EXCEPT TABLE. > > 1b) > + /* > + * Only the topmost ancestor of a partitioned table can be specified > + * in EXCEPT TABLES clause of a FOR ALL TABLES publication. So fetch > + * the publications excluding the topmost ancestor only. > + */ > + GetRelationPublications(llast_oid(ancestors), NULL, &exceptpuboids); > + > > 1c) > + /* Check if the partiton is part of EXCEPT list of any publication */ > + GetRelationPublications(RelationGetRelid(attachrel), NULL, &except_pubids); > + if (except_pubids != NIL) > + ereport(ERROR, > + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), > + errmsg("cannot attach relation \"%s\" as partition because it is > part of EXCEPT list in publication", > + RelationGetRelationName(attachrel)))); > + > > Overall, please take a diff of v35 and v37 to find such parts and > please correct these and others (if any). > > 2) > Also I don't think if below is correct statement for Approach 1: > > + * 2. For a partition, if the topmost ancestor is part of > + * the EXCEPT TABLE list, we don't publish it. > > Even if any ancestor is part of EXECPT list (not only top most) we > should not publish that partition, isn't it? > > 3) > I tried a scenario and found that incremental replication is not > working correctly. Attached the failing test as Approach1_v37_fail.txt > > Once these basic things are corrected, I can review further. These comments are addressed in the v38 version patch attached. Currently the approach-3 changes is present separately in v38-0002-Restrict-EXCEPT-TABLE-to-root-partitioned-tables-apporach-3.patch which can be applied on top of v38-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch. Similarly the approach-1 changes is present separately in v38-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-approach-1.patch which can be applied on top of v38-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch. Currently few of the query are logged as LOG messages, I will reduce the log level for these queries once few rounds of review are completed on the queries. Regards, Vignesh --0000000000009403bb0649884659 Content-Type: text/x-patch; charset="US-ASCII"; name="v38-0002-Restrict-EXCEPT-TABLE-to-root-partitioned-tables-apporach-3.patch" Content-Disposition: attachment; filename="v38-0002-Restrict-EXCEPT-TABLE-to-root-partitioned-tables-apporach-3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkzldnbj2 RnJvbSBkODFlZDkyYzE2OWE4Njc1M2Y0MjZhMTA0OWY2ODE5ODgyM2MzNGM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjggSmFuIDIwMjYgMTA6NTg6NTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzOF0gUmVz dHJpY3QgRVhDRVBUIFRBQkxFIHRvIHJvb3QgcGFydGl0aW9uZWQgdGFibGVzCgpPbmx5IHJvb3Qg cGFydGl0aW9uZWQgdGFibGVzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBj bGF1c2UuClNwZWNpZnlpbmcgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBw YXJ0aXRpb25zIGJlbG9uZ2luZyB0bwp0aGF0IHBhcnRpdGlvbiBoaWVyYXJjaHkgZnJvbSBwdWJs aWNhdGlvbiwgaXJyZXNwZWN0aXZlIG9mIHRoZSBvcHRpb24KcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QuCgpUaGlzIGlzIGJhc2VkIG9uIGFwcHJvYWNoIDMgZGlzY3Vzc2VkIGF0OgpodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBSnB5MHVEODFIUnJNWXI3Uy02QVY0VzJQ dGJHS00tbmYyRDg5enNvTUhKOWpac3NVZ0BtYWlsLmdtYWlsLmNvbQoKVGhpcyBwYXRjaCBpcyBh IHRvcHVwIHBhdGNoIG9uIHRvcCBvZiAwMDAxIHBhdGNoLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgIDI2ICstLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAzOSArKy0tCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTMgKy0KIC4uLi90LzAzN19yZXBfY2hhbmdl c19leGNlcHRfdGFibGUucGwgICAgICAgICB8IDE3NyArKysrKysrKysrLS0tLS0tLS0KIDYgZmls ZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCAxZTA5MWJiM2M2ZC4uNjE5NzRm NDFmZDkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjA1 LDE2ICsyMDUsMTEgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgIHRhYmxlcyBhcmUgZXhjbHVkZWQuCiAg ICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3 aGVuIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPgotICAgICAg aXMgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCBzcGVjaWZ5aW5nIGEgcm9vdCBwYXJ0 aXRpb25lZCB0YWJsZSBpbgotICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBl eGNsdWRlcyBpdCBhbmQgYWxsIGl0cyBwYXJ0aXRpb25zIGZyb20KLSAgICAgIHJlcGxpY2F0aW9u LiBTcGVjaWZ5aW5nIGEgbGVhZiBwYXJ0aXRpb24gaGFzIG5vIGVmZmVjdCwgYXMgaXRzIGNoYW5n ZXMgYXJlCi0gICAgICBzdGlsbCByZXBsaWNhdGVkIHZpYSB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZS4gV2hlbgotICAgICAgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xp dGVyYWw+IGlzIHNldCB0bwotICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCBzcGVjaWZ5 aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgbm8KLSAgICAgIGVmZmVjdCwgYXMgY2hh bmdlcyBhcmUgcmVwbGljYXRlZCB2aWEgdGhlIGxlYWYgcGFydGl0aW9ucy4gU3BlY2lmeWluZyBh Ci0gICAgICBsZWFmIHBhcnRpdGlvbiBleGNsdWRlcyBvbmx5IHRoYXQgcGFydGl0aW9uIGZyb20g cmVwbGljYXRpb24uIFRoZSBvcHRpb25hbAotICAgICAgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gaGFz IG5vIG1lYW5pbmcgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgIEZvciBwYXJ0aXRpb25l ZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgbWF5IGJlIHNwZWNpZmll ZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPi4gRG9pbmcgc28gZXhj bHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2YgaXRzIHBhcnRpdGlvbnMgZnJv bSByZXBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YKKyAgICAgIDxsaXRlcmFs PnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPi4gVGhlIG9wdGlvbmFsCisgICAg ICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBoYXMgbm8gZWZmZWN0IGZvciBwYXJ0aXRpb25lZCB0YWJs ZXMuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMDljNjkwMDUxMjIuLjBmZGRkZDk2 NzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC00NjksMjQgKzQ2OSwx MiBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbElu Zm8gKnByaSwKIAl9CiAKIAkvKgotCSAqIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHBhcnRpdGlv biBpcyBleGNsdWRlZCBieSBFWENFUFQgVEFCTEUgd2hpbGUKLQkgKiBwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9IHRydWUuCisJICogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgcGFydGl0aW9u IGlzIGV4Y2x1ZGVkIGJ5IEVYQ0VQVCBUQUJMRQogCSAqLwotCWlmIChwdWItPmFsbHRhYmxlcyAm JiBwdWItPnB1YnZpYXJvb3QgJiYgcHJpLT5leGNlcHQgJiYKLQkJdGFyZ2V0cmVsLT5yZF9yZWwt PnJlbGlzcGFydGl0aW9uKQotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycm1zZygicGFydGl0 aW9uIFwiJXNcIiBtaWdodCBiZSByZXBsaWNhdGVkIGFzIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290IGlzIFwiJXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwp LCAidHJ1ZSIpKSk7Ci0KLQkvKgotCSAqIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHBhcnRpdGlv bmVkIHRhYmxlIGlzIGV4Y2x1ZGVkIGJ5IEVYQ0VQVCBUQUJMRQotCSAqIHdoaWxlIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UuCi0JICovCi0JaWYgKHB1Yi0+YWxsdGFibGVzICYm ICFwdWItPnB1YnZpYXJvb3QgJiYgcHJpLT5leGNlcHQgJiYKLQkJdGFyZ2V0cmVsLT5yZF9yZWwt PnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKLQkJZXJlcG9ydChXQVJOSU5H LAotCQkJCShlcnJtc2coInBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiBtaWdodCBiZSByZXBsaWNh dGVkIGFzIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIFwiJXNcIiIsCi0JCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCAiZmFsc2UiKSkpOworCWlmIChwdWItPmFs bHRhYmxlcyAmJiBwcmktPmV4Y2VwdCAmJiB0YXJnZXRyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRp b24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygicGFydGl0aW9uIFwiJXNcIiBjYW5u b3QgYmUgZXhjbHVkZWQgdXNpbmcgRVhDRVBUIFRBQkxFIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHRhcmdldHJlbCkpKSk7CiAKIAljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24odGFyZ2V0cmVsKTsKIApAQCAtOTYwLDggKzk0OCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2luZCkKIAogCWlmIChyZWxraW5kID09 IFJFTEtJTkRfUkVMQVRJT04pCiAJCWV4Y2VwdGxpc3QgPSBHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1 ZGVkVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05f UEFSVF9BTEwgOgotCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQkJCQkJ CQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX0xFQUYpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBhNTM1 MWZjNTljNi4uMzk1YjhjMGMyYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMDMy NSw2ICsyMDMyNSw3IEBAIEFURXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCWNvbnN0IGNoYXIgKnRyaWdnZXJfbmFtZTsK IAlPaWQJCQlkZWZhdWx0UGFydE9pZDsKIAlMaXN0CSAgICpwYXJ0Qm91bmRDb25zdHJhaW50Owor CUxpc3QJICAgKmV4Y2VwdF9wdWJpZHMgPSBOSUw7CiAJUGFyc2VTdGF0ZSAqcHN0YXRlID0gbWFr ZV9wYXJzZXN0YXRlKE5VTEwpOwogCiAJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBjb250ZXh0LT5x dWVyeVN0cmluZzsKQEAgLTIwNDQ5LDYgKzIwNDUwLDE0IEBAIEFURXhlY0F0dGFjaFBhcnRpdGlv bihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCQkJCShl cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBh dHRhY2ggdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lvbiBhcyBwYXJ0aXRpb24i KSkpOwogCisJLyogQ2hlY2sgaWYgdGhlIHBhcnRpdG9uIGlzIHBhcnQgb2YgRVhDRVBUIGxpc3Qg b2YgYW55IHB1YmxpY2F0aW9uICovCisJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25H ZXRSZWxpZChhdHRhY2hyZWwpLCBOVUxMLCAmZXhjZXB0X3B1Ymlkcyk7CisJaWYgKGV4Y2VwdF9w dWJpZHMgIT0gTklMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBhdHRh Y2ggcmVsYXRpb24gXCIlc1wiIGFzIHBhcnRpdGlvbiBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgRVhD RVBUIGxpc3QgaW4gcHVibGljYXRpb24iLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo YXR0YWNocmVsKSkpKTsKKwogCS8qCiAJICogQ2hlY2sgaWYgYXR0YWNocmVsIGhhcyBhbnkgaWRl bnRpdHkgY29sdW1ucyBvciBhbnkgY29sdW1ucyB0aGF0IGFyZW4ndAogCSAqIGluIHRoZSBwYXJl bnQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCAw NTgwMjQ4MmMxMC4uNDhkY2YwZmVkYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwpAQCAtMjIwNiwxNiArMjIwNiwxMSBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCSAqIHJvb3QgYW5k IHNldCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCiAJCQkgKgogCQkJICogSWYgdGhp cyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIGFuZCBpdCBoYXMgYW4gRVhDRVBUCi0J CQkgKiBUQUJMRSBsaXN0OgotCQkJICoKLQkJCSAqIDEuIElmIHB1YnZpYXJvb3QgaXMgc2V0IGFu ZCB0aGUgcmVsYXRpb24gaXMgYSBwYXJ0aXRpb24sIGNoZWNrCi0JCQkgKiB3aGV0aGVyIHRoZSBw YXJ0aXRpb24gcm9vdCBpcyBpbmNsdWRlZCBpbiB0aGUgRVhDRVBUIFRBQkxFCi0JCQkgKiBsaXN0 LiBJZiBzbywgZG8gbm90IHB1Ymxpc2ggdGhlIGNoYW5nZS4KLQkJCSAqCi0JCQkgKiAyLiBJZiBw dWJ2aWFyb290IGlzIG5vdCBzZXQsIGNoZWNrIHdoZXRoZXIgdGhlIHJlbGF0aW9uIGl0c2VsZgot CQkJICogaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBsaXN0LiBJZiBzbywgZG8gbm90 IHB1Ymxpc2ggdGhlCi0JCQkgKiBjaGFuZ2UuCi0JCQkgKgorCQkJICogVEFCTEUgbGlzdAorCQkJ ICogMS4gRm9yIGEgbm9ybWFsIHRhYmxlIG9yIGEgcGFydGl0aW9uZWQgdGFibGUsIGlmIGl0IGlz IHBhcnQgb2YKKwkJCSAqIAkgIHRoZSBFWENFUFQgVEFCTEUgbGlzdCwgd2UgZG9uJ3QgcHVibGlz aCBpdC4KKwkJCSAqIDIuIEZvciBhIHBhcnRpdGlvbiwgaWYgdGhlIHRvcG1vc3QgYW5jZXN0b3Ig aXMgcGFydCBvZgorCQkJICogCSAgdGhlIEVYQ0VQVCBUQUJMRSBsaXN0LCB3ZSBkb24ndCBwdWJs aXNoIGl0LgogCQkJICogVGhpcyBpcyBhY2hpZXZlZCBieSBrZWVwaW5nIHRoZSB2YXJpYWJsZSAi cHVibGlzaCIgc2V0IHRvCiAJCQkgKiBmYWxzZS4gQW5kIGV2ZW50dWFsbHksIGVudHJ5LT5wdWJh Y3Rpb25zIHdpbGwgcmVtYWluIGFsbCBmYWxzZQogCQkJICogZm9yIHRoaXMgcHVibGljYXRpb24u CkBAIC0yMjIzLDI3ICsyMjE4LDIzIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEg KmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQogCQkJewog CQkJCUxpc3QJICAgKmV4Y2VwdHB1YmlkcyA9IE5JTDsKKwkJCQlMaXN0CSAgICphbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJT2lkCQkJcm9vdF9yZWxpZCA9 IHJlbGlkOwogCi0JCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCisJCQkJ aWYgKGFtX3BhcnRpdGlvbikKIAkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9w YXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJcm9vdF9yZWxpZCA9IGxsYXN0X29pZChh bmNlc3RvcnMpOworCQkJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyb290X3JlbGlkLCBOVUxM LCAmZXhjZXB0cHViaWRzKTsKIAotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3Jz KTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQlp ZiAocHViLT5wdWJ2aWFyb290KQorCQkJCQl7CisJCQkJCQlwdWJfcmVsaWQgPSByb290X3JlbGlk OworCQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQl9 CiAJCQkJfQogCi0JCQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocHViX3JlbGlkLCBOVUxMLCAm ZXhjZXB0cHViaWRzKTsKLQogCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1Ymlkcywg cHViLT5vaWQpKQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQllbHNlCi0JCQkJewotCQkJCQkv KiBTYW5pdHkgY2hlY2sgKi8KLQkJCQkJQXNzZXJ0KGVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2Vy dCA9PSBmYWxzZSAmJgotCQkJCQkJICAgZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID09IGZh bHNlICYmCi0JCQkJCQkgICBlbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPT0gZmFsc2UgJiYK LQkJCQkJCSAgIGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID09IGZhbHNlKTsKLQkJCQl9 CiAKIAkJCQlsaXN0X2ZyZWUoZXhjZXB0cHViaWRzKTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCmluZGV4IGRjMDIxZGJiNmNkLi5lYzdmODJmYmNkYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCkBAIC01ODM3LDIxICs1ODM3LDI0IEBAIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykK IAkJLyogQWRkIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMgYXJlIGluIHRvby4gKi8K IAkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOwogCisJCS8qCisJ CSAqIE9ubHkgdGhlIHRvcG1vc3QgYW5jZXN0b3Igb2YgYSBwYXJ0aXRpb25lZCB0YWJsZSBjYW4g YmUgc3BlY2lmaWVkCisJCSAqIGluIEVYQ0VQVCBUQUJMRVMgY2xhdXNlIG9mIGEgRk9SIEFMTCBU QUJMRVMgcHVibGljYXRpb24uIFNvIGZldGNoCisJCSAqIHRoZSBwdWJsaWNhdGlvbnMgZXhjbHVk aW5nIHRoZSB0b3Btb3N0IGFuY2VzdG9yIG9ubHkuCisJCSAqLworCQlHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhsbGFzdF9vaWQoYW5jZXN0b3JzKSwgTlVMTCwgJmV4Y2VwdHB1Ym9pZHMpOworCiAJ CWZvcmVhY2gobGMsIGFuY2VzdG9ycykKIAkJewogCQkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rf b2lkKGxjKTsKIAkJCUxpc3QJICAgKmFuY2VzdG9yX3B1Ym9pZHMgPSBOSUw7Ci0JCQlMaXN0CSAg ICphbmNlc3Rvcl9leGNlcHRwdWJvaWRzID0gTklMOwogCi0JCQlHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhhbmNlc3RvciwgJmFuY2VzdG9yX3B1Ym9pZHMsCi0JCQkJCQkJCQkmYW5jZXN0b3JfZXhj ZXB0cHVib2lkcyk7CisJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFuY2Vz dG9yX3B1Ym9pZHMsIE5VTEwpOwogCiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29p ZChwdWJvaWRzLCBhbmNlc3Rvcl9wdWJvaWRzKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1l c3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVi b2lkcywKIAkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwotCQkJ ZXhjZXB0cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhjZXB0cHVib2lkcywKLQkJ CQkJCQkJCQkJCSAgIGFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOwogCQl9CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxl LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJs ZS5wbAppbmRleCA5NTkwNGRkZDAwNS4uNGMzYzgxNDYyYTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApAQCAt ODgsOCArODgsMTEgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE Uk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRShhKTsKLQlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MSBQQVJUSVRJT04g T0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKLQlDUkVBVEUgVEFCTEUgc2No MS5wYXJ0MiBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDYpIFRPICgxMCk7 CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMTAwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MihhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEgUEFSVElUSU9O IE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIFRPICgxNTApOworCUNSRUFURSBU QUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9N ICgxNTEpIFRPICgyMDApOworCUFMVEVSIFRBQkxFIHNjaDEudDEgQVRUQUNIIFBBUlRJVElPTiBz Y2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsKICkpOwogCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCkBAIC05NywxNDAgKzEwMCwxNTIgQEAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAogCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KTsKIAlDUkVBVEUg VEFCTEUgc2NoMS5wYXJ0MShhIGludCk7CiAJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDIoYSBpbnQp OworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gx LnBhcnQyXzIoYSBpbnQpOwogKSk7CiAKLSMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQxKSB3aXRo IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UKLSMgRXhjbHVkaW5nIGEgcGFydGl0 aW9uIHdoaWxlIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UgcHJldmVudHMKLSMg cmVwbGljYXRpb24gb2Ygcm93cyBpbnNlcnRlZCBpbnRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBm b3IgdGhhdCBwYXJ0aWN1bGFyCi0jIHBhcnRpdGlvbi4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorIyBQYXJ0aXRpdGlvbnMgY2Fubm90IGJlIGV4Y2x1ZGVkIHVzaW5nIEVYQ0VQVCBUQUJM RQorbXkgKCRzdGRvdXQsICRzdGRlcnIpOworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0g JG5vZGVfcHVibGlzaGVyLT5wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAotCUNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQx KSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKLQlJTlNFUlQgSU5U TyBzY2gxLnQxIFZBTFVFUyAoMSksICg2KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MikgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CiApKTsKLSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIK LSk7Ci0kbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOwotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKLQotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSBzY2gxLnQxIik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25l ZCB0YWJsZScpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL3BhcnRpdGlvbiAicGFydDIiIGNhbm5v dCBiZSBleGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUvLAorCSdwYXJ0aXRpb24gInBhcnQyIiBj YW5ub3QgYmUgZXhjbHVkZWQgdXNpbmcgRVhDRVBUIFRBQkxFJyk7CiAKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5w YXJ0MSIpOwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gZXhjbHVkZWQgcGFydGl0 aW9uJyk7CisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9wdWJsaXNoZXItPnBz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDIpIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9wYXJ0 aXRpb24gInBhcnQyIiBjYW5ub3QgYmUgZXhjbHVkZWQgdXNpbmcgRVhDRVBUIFRBQkxFLywKKwkn cGFydGl0aW9uICJwYXJ0MiIgY2Fubm90IGJlIGV4Y2x1ZGVkIHVzaW5nIEVYQ0VQVCBUQUJMRScp OwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKLWlzKCAkcmVzdWx0LCBxcSg2Ci03KSwgJ2NoZWNr IHJvd3Mgb24gb3RoZXIgcGFydGl0aW9uJyk7CisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikg PSAkbm9kZV9wdWJsaXNoZXItPnBzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFy dDJfMSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CispKTsKK2xp a2UoCisJJHN0ZGVyciwKKwlxci9wYXJ0aXRpb24gInBhcnQyXzEiIGNhbm5vdCBiZSBleGNsdWRl ZCB1c2luZyBFWENFUFQgVEFCTEUvLAorCSdwYXJ0aXRpb24gInBhcnQyXzEiIGNhbm5vdCBiZSBl eGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUnKTsKIAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1 Yl9wYXJ0OyIpOworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfcHVibGlzaGVy LT5wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3Bh cnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQyXzEpIFdJVEggKHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlx ci9wYXJ0aXRpb24gInBhcnQyXzEiIGNhbm5vdCBiZSBleGNsdWRlZCB1c2luZyBFWENFUFQgVEFC TEUvLAorCSdwYXJ0aXRpb24gInBhcnQyXzEiIGNhbm5vdCBiZSBleGNsdWRlZCB1c2luZyBFWENF UFQgVEFCTEUnKTsKIAotIyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIHdpdGggcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSBmYWxzZQotIyBFeGNsdWRpbmcgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IHN0aWxsIGFsbG93cyByb3dzIGluc2VydGVkIGludG8gdGhlCi0jIHBhcnRpdGlvbmVkIHRhYmxl IHRvIGJlIHJlcGxpY2F0ZWQgdmlhIGl0cyBwYXJ0aXRpb25zLgorIyBFeGNsdWRpbmcgdGhlIHJv b3QgcGFydGl0aW9uZWQgdGFibGUgZXhjbHVkZXMgYWxsIGl0cyBwYXJ0aXRpb25zIGFzIHdlbGwg d2hlbgorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlLgogJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwotCUlOU0VSVCBJTlRPIHNjaDEudDEg VkFMVUVTICgxKSwgKDYpOworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDEwMSks ICgxNTEpOwogKSk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCiApOwogJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0 Jyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5U TyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKKwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBn X3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNu KCkpOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICgxMDIpLCAoMTUyKSIpOworCisjIFZlcmlmeSB0 aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNo ZWQgd2hlbiBpdCBpcworIyBleGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZS4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlf Y2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdw dWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIKKyk7CiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOwogCisjIENoZWNrIHRoYXQgbm8gcm93 cyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKLWlzKCRy ZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHBhcnRpdGlvbmVkIHRhYmxlJyk7CitpcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CiAKICRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5w YXJ0MSIpOwotaXMoICRyZXN1bHQsIHFxKDEKLTIpLCAnY2hlY2sgcm93cyBvbiBmaXJzdCBwYXJ0 aXRpb24nKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFy dDEnKTsKIAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyIik7Ci1pcyggJHJlc3VsdCwgcXEoNgotNyksICdj aGVjayByb3dzIG9uIHNlY29uZCBwYXJ0aXRpb24nKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVj ayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEi KTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNr IHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8yJyk7CiAKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBzY2gxLnQxIik7Ci0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9w dWJfcGFydDsiKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xv dCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCi0pOwogCi0jIEVYQ0VQVCBUQUJMRSAoc2NoMS50 MSkgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUKLSMgV2hlbiB0aGUgcGFy dGl0aW9uZWQgdGFibGUgaXMgZXhjbHVkZWQgYW5kIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 IGlzIHRydWUsCi0jIG5vIHJvd3MgZnJvbSB0aGUgdGFibGUgb3IgaXRzIHBhcnRpdGlvbnMgYXJl IHJlcGxpY2F0ZWQuCisjIEV4Y2x1ZGluZyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBleGNs dWRlcyBhbGwgaXRzIHBhcnRpdGlvbnMgYXMgd2VsbCB3aGVuCisjIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290ID0gdHJ1ZS4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsIHFxKAotCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7 Ci0JSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEpLCAoNik7CisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CiApKTsKICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9z dWJfcGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9w dWJfcGFydCIKICk7CiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3lu Yygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcp OyIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsK KwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVz dF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMyksICgx MDMpLCAoMTUzKTsiKTsKIAogIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4gaXQgaXMKICMgZXhjbHVkZWQgd2l0 aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCiAkcmVzdWx0ID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9N IHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5V TEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9w YXJ0JykiCiApOwotaXMoJHJlc3VsdCwgcXEodCksICdjaGVjayBubyBjaGFuZ2VzIGZvciBleGNs dWRlZCB0YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90Jyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOwogCisjIENoZWNrIHRoYXQgbm8gcm93cyBhcmUg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKLWlzKCRyZXN1bHQs IHFxKCksICdjaGVjayByb3dzIG9uIHBhcnRpdGlvbmVkIHRhYmxlJyk7CitpcygkcmVzdWx0LCBx cSgpLCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CiAKICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIp OwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gZmlyc3QgcGFydGl0aW9uJyk7Citp cygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CiAKICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAq IEZST00gc2NoMS5wYXJ0MiIpOwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gc2Vj b25kIHBhcnRpdGlvbicpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUg c2NoMS5wYXJ0MicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00g c2NoMS5wYXJ0Ml8yIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBz Y2gxLnBhcnQyXzInKTsKIAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlRSVU5DQVRFIHNjaDEudDEiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn dGFwX3N1Yl9wYXJ0Jyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OyIpOwogCi0j IEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IHRydWUKLSMgV2hlbiBhIHBhcnRpdGlvbiBpcyBleGNsdWRlZCBidXQgcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgaXMgdHJ1ZSwKLSMgcm93cyBwdWJsaXNoZWQgdGhyb3VnaCB0aGUgcGFy dGl0aW9uZWQgdGFibGUgY2FuIHN0aWxsIGJlIHJlcGxpY2F0ZWQuCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKyMgQ2Fubm90IGF0dGFjaCBwYXJ0aXRpb24gdGhhdCBpcyBwYXJ0IG9mIEVY Q0VQVCBsaXN0IGluIHB1YmxpY2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBUQUJMRSBzY2gxLnQxIERFVEFDSCBQQVJUSVRJT04gc2NoMS5wYXJ0 MiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEu cGFydDIpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSkiCispOworKCRy ZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfcHVibGlzaGVyLT5wc3FsKAogCSdwb3N0 Z3JlcycsIHFxKAotCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCk7Ci0JSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEpLCAoNikKKwlBTFRFUiBUQUJM RSBzY2gxLnQxIEFUVEFDSCBQQVJUSVRJT04gc2NoMS5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEw MSkgVE8gKDIwMCk7CiApKTsKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKK2xpa2UoCisJJHN0ZGVyciwK Kwlxci9jYW5ub3QgYXR0YWNoIHJlbGF0aW9uICJwYXJ0MiIgYXMgcGFydGl0aW9uIGJlY2F1c2Ug aXQgaXMgcGFydCBvZiBFWENFUFQgbGlzdCBpbiBwdWJsaWNhdGlvbi8sCisJJ2Nhbm5vdCBhdHRh Y2ggcmVsYXRpb24gInBhcnQyIiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyBwYXJ0IG9mIEVY Q0VQVCBsaXN0IGluIHB1YmxpY2F0aW9uJwogKTsKLSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOwotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gc2NoMS50 MSBWQUxVRVMgKDIpLCAoNyk7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3RhcF9zdWJfcGFydCcpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEgT1JERVIgQlkgYSIpOwotaXMo ICRyZXN1bHQsIHFxKDEKLTIKLTYKLTcpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJs ZScpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKLWlzKCRyZXN1bHQsIHFxKCksICdjaGVjayBy b3dzIG9uIGV4Y2x1ZGVkIHBhcnRpdGlvbicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKLWlz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIG90aGVyIHBhcnRpdGlvbicpOwogCiAkbm9k ZV9zdWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3Qn KTsKLS0gCjIuNDMuMAoK --0000000000009403bb0649884659 Content-Type: text/x-patch; charset="US-ASCII"; name="v38-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-approach-1.patch" Content-Disposition: attachment; filename="v38-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-approach-1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkzldnb81 RnJvbSA5ZDAwOWI1YTg4NGIzZjlkYWQ3ZTliN2JhNDc5N2M2NWFkOGI5ZDk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMjkgSmFuIDIwMjYgMTg6NTY6MTMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzOF0gaGFu ZGxlIEVYQ0VQVCBUQUJMRSBjb3JyZWN0bHkgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZXMKCldoZW4g YSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHdpdGggRVhDRVBUIFRBQkxFLCBhZGp1c3QgbG9naWNh bCByZXBsaWNhdGlvbgpzbyB0aGF0IGRhdGEgc3luY2hyb25pemF0aW9uIGFuZCBjaGFuZ2UgcmVw bGljYXRpb24gY29ycmVjdGx5IHJlc3BlY3QKZXhjbHVzaW9ucyBmb3IgcGFydGl0aW9uZWQgdGFi bGVzLgoKT24gdGhlIHN1YnNjcmliZXIgc2lkZSwgZXh0ZW5kIGZldGNoX3JlbW90ZV90YWJsZV9p bmZvKCkgdG8gY29tcHV0ZSB0aGUKZWZmZWN0aXZlIHNldCBvZiByZWxhdGlvbnMgdXNlZCBmb3Ig dGhlIGluaXRpYWwgQ09QWS4gV2hlbiBleGNsdXNpb25zIGFyZQpwcmVzZW50LCB0aGUgcm9vdCBw YXJ0aXRpb25lZCB0YWJsZSBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgZGlyZWN0bHk7IGluc3RlYWQs CmRlcml2ZSB0aGUgbGlzdCBvZiBub24tZXhjbHVkZWQgbGVhZiBwYXJ0aXRpb25zIGFuZCBjb21i aW5lIHRoZW0gd2l0aApVTklPTiBBTEwuIFdoZW4gbm8gZXhjbHVzaW9ucyBleGlzdCwgcmV0YWlu IHRoZSBleGlzdGluZyBiZWhhdmlvciBhbmQgY29weQpmcm9tIHRoZSByb290IHJlbGF0aW9uIGFz IGJlZm9yZS4KClRoaXMgaXMgYmFzZWQgb24gYXBwcm9hY2ggMSBkaXNjdXNzZWQgYXQ6Cmh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FKcHkwdUQ4MUhSck1ZcjdTLTZBVjRX MlB0YkdLTS1uZjJEODl6c29NSEo5alpzc1VnQG1haWwuZ21haWwuY29tCgpUaGlzIHBhdGNoIGlz IGEgdG9wdXAgcGF0Y2ggb24gdG9wIG9mIDAwMDEgcGF0Y2guCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAxODUgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgIDkgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgNiArCiAuLi4vdC8w MzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCAxNTYgKysrKysrKystLS0t LS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEg KwogOCBmaWxlcyBjaGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMWUwOTFiYjNjNmQu LjczMGI5YzRiY2VkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNh dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwK QEAgLTIwNSwxNiArMjA1LDE1IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICB0YWJsZXMgYXJlIGV4Y2x1 ZGVkLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgRm9yIHBhcnRpdGlvbmVkIHRh Ymxlcywgd2hlbiA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4K LSAgICAgIGlzIHNldCB0byA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBhIHJv b3QgcGFydGl0aW9uZWQgdGFibGUgaW4KLSAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0 ZXJhbD4gZXhjbHVkZXMgaXQgYW5kIGFsbCBpdHMgcGFydGl0aW9ucyBmcm9tCi0gICAgICByZXBs aWNhdGlvbi4gU3BlY2lmeWluZyBhIGxlYWYgcGFydGl0aW9uIGhhcyBubyBlZmZlY3QsIGFzIGl0 cyBjaGFuZ2VzIGFyZQotICAgICAgc3RpbGwgcmVwbGljYXRlZCB2aWEgdGhlIHJvb3QgcGFydGl0 aW9uZWQgdGFibGUuIFdoZW4KKyAgICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdoZW4gYSB0 YWJsZSBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxFLCB0aGVuCisgICAgICBjaGFuZ2VzIHRv IHRoYXQgdGFibGUgYW5kIGFsbCBvZiBpdHMgcGFydGl0aW9ucyAodGhhdCBpcywgdGhlIGVudGly ZQorICAgICAgcGFydGl0aW9uIHN1YnRyZWUgcm9vdGVkIGF0IHRoYXQgdGFibGUpIGFyZSBub3Qg cmVwbGljYXRlZC4gVGhpcyBiZWhhdmlvcgorICAgICAgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyCiAgICAgICA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0 ZXJhbD4gaXMgc2V0IHRvCi0gICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4sIHNwZWNpZnlp bmcgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBubwotICAgICAgZWZmZWN0LCBhcyBjaGFu Z2VzIGFyZSByZXBsaWNhdGVkIHZpYSB0aGUgbGVhZiBwYXJ0aXRpb25zLiBTcGVjaWZ5aW5nIGEK LSAgICAgIGxlYWYgcGFydGl0aW9uIGV4Y2x1ZGVzIG9ubHkgdGhhdCBwYXJ0aXRpb24gZnJvbSBy ZXBsaWNhdGlvbi4gVGhlIG9wdGlvbmFsCi0gICAgICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBoYXMg bm8gbWVhbmluZyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgorICAgICAgPGxpdGVyYWw+dHJ1ZTwv bGl0ZXJhbD4gb3IgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LiBUaGUKKyAgICAgIDxsaXRlcmFs PnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPiBzZXR0aW5nIG9ubHkgZGV0ZXJt aW5lcworICAgICAgd2hpY2ggcmVsYXRpb24gaXMgdXNlZCBhcyB0aGUgcHVibGlzaGluZyByZWxh dGlvbiBmb3IgcmVwbGljYXRlZCBjaGFuZ2VzLAorICAgICAgYW5kIGRvZXMgbm90IGFmZmVjdCBl eGNsdXNpb24gc2VtYW50aWNzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDA5YzY5 MDA1MTIyLi5lNzJlNDliZDk3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpA QCAtOTYwLDggKzk2MCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0aW9u ICpwdWIsIGNoYXIgcmVsa2luZCkKIAogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04p CiAJCWV4Y2VwdGxpc3QgPSBHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVkVGFibGVzKHB1YmlkLCBw dWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwgOgotCQkJCQkJ CQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCiAJ Y2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2Nr KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDBiM2M4NDk5 YjQ5Li44MDRhZTJmMzQ5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YwpAQCAtMjk0MCw2ICsyOTQwLDggQEAgZmV0Y2hfcmVsYXRpb25fbGlzdChXYWxSZWNlaXZlckNv bm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25zKQogCQkJCQkJIHB1Yl9uYW1lcy5kYXRhKTsK IAl9CiAKKwllbG9nKExPRywgImZldGNoX3JlbGF0aW9uX2xpc3Q6IGV4ZWN1dGluZyBxdWVyeSB0 byBmZXRjaCBlZmZlY3RpdmVyZWxhdGlvbnM6IFxuJXMiLAorCQkgY21kLmRhdGEpOwogCXBmcmVl KHB1Yl9uYW1lcy5kYXRhKTsKIAogCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEs IGNvbHVtbl9jb3VudCwgdGFibGVSb3cpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKaW5kZXggMTlhM2MyMWE4NjMuLjJlODQ2NmIzYWI3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTcxNiwyMSArNzE2LDI4 IEBAIGNvcHlfcmVhZF9kYXRhKHZvaWQgKm91dGJ1ZiwgaW50IG1pbnJlYWQsIGludCBtYXhyZWFk KQogICogbWVzc2FnZSBwcm92aWRlcyBkdXJpbmcgcmVwbGljYXRpb24uCiAgKgogICogVGhpcyBm dW5jdGlvbiBhbHNvIHJldHVybnMgKGEpIHRoZSByZWxhdGlvbiBxdWFsaWZpY2F0aW9ucyB0byBi ZSB1c2VkIGluCi0gKiB0aGUgQ09QWSBjb21tYW5kLCBhbmQgKGIpIHdoZXRoZXIgdGhlIHJlbW90 ZSByZWxhdGlvbiBoYXMgcHVibGlzaGVkIGFueQotICogZ2VuZXJhdGVkIGNvbHVtbi4KKyAqIHRo ZSBDT1BZIGNvbW1hbmQsIChiKSB3aGV0aGVyIHRoZSByZW1vdGUgcmVsYXRpb24gaGFzIHB1Ymxp c2hlZCBhbnkKKyAqIGdlbmVyYXRlZCBjb2x1bW4sIGFuZCAoYykgY29tcHV0ZXMgdGhlIGVmZmVj dGl2ZSBzZXQgb2YgcmVsYXRpb25zIHRvIGJlIHVzZWQKKyAqIGFzIENPUFkgc291cmNlcyB3aGVu IGV4Y2x1c2lvbnMgYXJlIHByZXNlbnQuIFdoZW4gbm8gZXhjbHVzaW9ucyBleGlzdCwgdGhlCisg KiBsaXN0IHJlbWFpbnMgZW1wdHkgYW5kIHRoZSByb290IHJlbGF0aW9uIGlzIHVzZWQgYXMtaXMu IFdoZW4gZXhjbHVzaW9ucworICogZXhpc3QsIHRoZSBsaXN0IGNvbnRhaW5zIGxlYWYgcmVsYXRp b25zIHRoYXQgYXJlIG5vdCBleGNsdWRlZCBhbmQgbXVzdCBiZQorICogY29tYmluZWQgdXNpbmcg VU5JT04gQUxMLgogICovCiBzdGF0aWMgdm9pZAogZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hh ciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAotCQkJ CQkJTGlzdCAqKnF1YWwsIGJvb2wgKmdlbmNvbF9wdWJsaXNoZWQpCisJCQkJCQlMaXN0ICoqcXVh bCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCwKKwkJCQkJCUxpc3QgKiplZmZlY3RpdmVfcmVsYXRp b25zKQogewogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJ VHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENIQVJP SUQsIENIQVJPSUR9OworCU9pZAkJCXRhYmxlUm93W10gPSB7T0lET0lELCBDSEFST0lELCBDSEFS T0lELCBCT09MT0lEfTsKIAlPaWQJCQlhdHRyUm93W10gPSB7SU5UMk9JRCwgVEVYVE9JRCwgT0lE T0lELCBCT09MT0lELCBCT09MT0lEfTsKIAlPaWQJCQlxdWFsUm93W10gPSB7VEVYVE9JRH07CisJ T2lkCQkJZmlsdGVydGFibGVSb3dbXSA9IHtURVhUT0lELCBURVhUT0lEfTsKIAlib29sCQlpc251 bGw7CiAJaW50CQkJbmF0dDsKKwlib29sCQlpc19wYXJ0aXRpb247CiAJU3RyaW5nSW5mbwlwdWJf bmFtZXMgPSBOVUxMOwogCUJpdG1hcHNldCAgKmluY2x1ZGVkX2NvbHMgPSBOVUxMOwogCWludAkJ CXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOwpAQCAtNzQwLDcgKzc0Nyw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIg Km5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwKIAogCS8q IEZpcnN0IGZldGNoIE9pZCBhbmQgcmVwbGljYSBpZGVudGl0eS4gKi8KIAlpbml0U3RyaW5nSW5m bygmY21kKTsKLQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJTRUxFQ1QgYy5vaWQsIGMucmVscmVw bGlkZW50LCBjLnJlbGtpbmQiCisJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiU0VMRUNUIGMub2lk LCBjLnJlbHJlcGxpZGVudCwgYy5yZWxraW5kLCBjLnJlbGlzcGFydGl0aW9uIgogCQkJCQkgIiAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMiCiAJCQkJCSAiICBJTk5FUiBKT0lOIHBnX2NhdGFs b2cucGdfbmFtZXNwYWNlIG4iCiAJCQkJCSAiICAgICAgICBPTiAoYy5yZWxuYW1lc3BhY2UgPSBu Lm9pZCkiCkBAIC03NzAsNiArNzc3LDggQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAq bnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCUFzc2Vy dCghaXNudWxsKTsKIAlscmVsLT5yZWxraW5kID0gRGF0dW1HZXRDaGFyKHNsb3RfZ2V0YXR0cihz bG90LCAzLCAmaXNudWxsKSk7CiAJQXNzZXJ0KCFpc251bGwpOworCWlzX3BhcnRpdGlvbiA9IERh dHVtR2V0Qm9vbChzbG90X2dldGF0dHIoc2xvdCwgNCwgJmlzbnVsbCkpOworCUFzc2VydCghaXNu dWxsKTsKIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAJd2FscmN2X2Ns ZWFyX3Jlc3VsdChyZXMpOwpAQCAtOTU0LDYgKzk2MywxMTAgQEAgZmV0Y2hfcmVtb3RlX3RhYmxl X2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICps cmVsLAogCiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOwogCisJaWYgKHNlcnZlcl92ZXJzaW9u ID49IDE5MDAwMCAmJiAhaXNfcGFydGl0aW9uICYmCisJCWxyZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCXJlc2V0U3RyaW5nSW5mbygmY21kKTsKKworCQkv KgorCQkgKiBUaGlzIHF1ZXJ5IHJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgaW5oZXJpdGFuY2Ug KHBhcnRpdGlvbikgdHJlZQorCQkgKiBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiB0YWJsZSBPSUQg YW5kIGRldGVybWluZXMgd2hpY2ggbGVhZgorCQkgKiByZWxhdGlvbnMgc2hvdWxkIGJlIGluY2x1 ZGVkIGZvciByZXBsaWNhdGlvbi4gRXhjbHVzaW9uIHByb3BhZ2F0ZXMKKwkJICogZnJvbSBwYXJl bnQgdG8gY2hpbGQsIGFuZCBhIHJlbGF0aW9uIGlzIGFsc28gdHJlYXRlZCBhcyBleGNsdWRlZCBp ZgorCQkgKiBpdCBpcyBleHBsaWNpdGx5IG1hcmtlZCB3aXRoIHByZXhjZXB0ID0gdHJ1ZSBpbiBw Z19wdWJsaWNhdGlvbl9yZWwKKwkJICogZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb25zLiBU aGUgZmluYWwgcmVzdWx0IHJldHVybnMgb25seQorCQkgKiBub24gZXhjbHVkZWQgbGVhZiByZWxh dGlvbnMuCisJCSAqLworCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCisJCQkiV0lUSCBSRUNVUlNJ VkUgYnJhbmNoX3NlYXJjaCBBUyAoXG4iCisJCQkiIFNFTEVDVCAldTo6b2lkIEFTIG9pZCwgZmFs c2UgQVMgaXNfZXhjbHVkZWRcbiIKKwkJCSIgVU5JT04gQUxMXG4iCisJCQkiIFNFTEVDVCBpLmlu aHJlbGlkIEFTIG9pZCxcbiIKKwkJCSIgICAgICAgIHBhcmVudC5pc19leGNsdWRlZFxuIgorCQkJ IiAgICAgICAgT1IgRVhJU1RTIChcbiIKKwkJCSIgICAgICAgICAgICBTRUxFQ1QgMVxuIgorCQkJ IiAgICAgICAgICAgIEZST00gcGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkiICAgICAgICAg ICAgSk9JTiBwZ19wdWJsaWNhdGlvbiBwIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJIiAg ICAgICAgICAgIFdIRVJFIHByLnBycmVsaWQgPSBpLmluaHJlbGlkXG4iCisJCQkiICAgICAgICAg ICAgICBBTkQgcHIucHJleGNlcHQgPSB0cnVlXG4iCisJCQkiICAgICAgICAgICAgICBBTkQgcC5w dWJuYW1lIElOICggJXMgKVxuIgorCQkJIiAgICAgICAgKSBBUyBpc19leGNsdWRlZFxuIgorCQkJ IiBGUk9NIHBnX2luaGVyaXRzIGlcbiIKKwkJCSIgSk9JTiBicmFuY2hfc2VhcmNoIHBhcmVudFxu IgorCQkJIiAgIE9OIGkuaW5ocGFyZW50ID0gcGFyZW50Lm9pZFxuIgorCQkJIilcbiIKKwkJCSIg U0VMRUNUIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLCBjLnJlbG5hbWUgQVMgcmVsbmFtZVxuIgor CQkJIiBGUk9NIChcbiIKKwkJCSIgICAgIFNFTEVDVCBicy4qLCBib29sX29yKGJzLmlzX2V4Y2x1 ZGVkKSBPVkVSICgpIEFTIGhhc19leGNsdXNpb25cbiIKKwkJCSIgICAgIEZST00gYnJhbmNoX3Nl YXJjaCBic1xuIgorCQkJIiApIGJzXG4iCisJCQkiIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9 IGJzLm9pZFxuIgorCQkJIiBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1l c3BhY2VcbiIKKwkJCSIgV0hFUkUgYnMuaXNfZXhjbHVkZWQgPSBmYWxzZVxuIgorCQkJIiAgIEFO RCAoXG4iCisJCQkiICAgICAgICAgKGJzLmhhc19leGNsdXNpb24gPSBmYWxzZSBBTkQgYnMub2lk ID0gJXU6Om9pZClcbiIKKwkJCSIgICAgICBPUiAoYnMuaGFzX2V4Y2x1c2lvbiA9IHRydWUgQU5E IE5PVCBFWElTVFMgKFxuIgorCQkJIiAgICAgICAgICAgICBTRUxFQ1QgMVxuIgorCQkJIiAgICAg ICAgICAgICBGUk9NIHBnX2luaGVyaXRzXG4iCisJCQkiICAgICAgICAgICAgIFdIRVJFIGluaHBh cmVudCA9IGJzLm9pZFxuIgorCQkJIiAgICAgICAgICkpXG4iCisJCQkiICAgKTsiLAorCQkJbHJl bC0+cmVtb3RlaWQsCisJCQlwdWJfbmFtZXMtPmRhdGEsCisJCQlscmVsLT5yZW1vdGVpZAorCQkp OworCisJCWVsb2coTE9HLCAiRXhlY3V0aW5nIHF1ZXJ5IHRvIGdldCB0aGUgdGFibGVzOlxuJXMi LCBjbWQuZGF0YSk7CisJCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4s IGNtZC5kYXRhLAorCQkJCQkJICBsZW5ndGhvZihmaWx0ZXJ0YWJsZVJvdyksIGZpbHRlcnRhYmxl Um93KTsKKworCQlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAorCQkJ CQllcnJtc2coImNvdWxkIG5vdCBnZXQgbm9uIGV4Y2x1ZGVkIHRhYmxlIGxpc3QgZm9yIHRhYmxl IFwiJXMuJXNcIiBmcm9tIHB1Ymxpc2hlcjogJXMiLAorCQkJCQkJCW5zcG5hbWUsIHJlbG5hbWUs IHJlcy0+ZXJyKSk7CisKKwkJLyoKKwkJICogU3RvcmUgdGhlIHRhYmxlcyBhcyBhIGxpc3Qgb2Yg c2NoZW1hbmFtZSBhbmQgdGFibGVuYW1lLgorCQkgKi8KKwkJbmF0dCA9IDA7CisJCXNsb3QgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNNaW5pbWFsVHVw bGUpOworCQl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0 cnVlLCBmYWxzZSwgc2xvdCkpCisJCXsKKwkJCVF1YWxpZmllZFJlbGF0aW9uTmFtZSAqcmVsaW5m byA9IHBhbGxvY19vYmplY3QoUXVhbGlmaWVkUmVsYXRpb25OYW1lKTsKKworCQkJcmVsaW5mby0+ c2NoZW1hbmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZp c251bGwpKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKwkJCXJlbGluZm8tPnJlbG5hbWUgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCQlBc3Nl cnQoIWlzbnVsbCk7CisKKwkJCSplZmZlY3RpdmVfcmVsYXRpb25zID0gbGFwcGVuZCgqZWZmZWN0 aXZlX3JlbGF0aW9ucywgcmVsaW5mbyk7CisKKwkJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCQl9 CisKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCQkvKgorCQkgKiBJ ZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIGluIHRoZSBleGNsdXNpb24gbGlzdCBhbmQgaXQg ZXF1YWxzCisJCSAqIHRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWQsIHRoYXQgbWVhbnMgbm8gYWN0 dWFsIGV4Y2x1c2lvbiBvY2N1cnJlZC4KKwkJICovCisJCWlmIChsaXN0X2xlbmd0aCgqZWZmZWN0 aXZlX3JlbGF0aW9ucykgPT0gMSkKKwkJeworCQkJUXVhbGlmaWVkUmVsYXRpb25OYW1lICpyZWxp bmZvOworCisJCQlyZWxpbmZvID0gbGluaXRpYWwoKmVmZmVjdGl2ZV9yZWxhdGlvbnMpOworCQkJ aWYgKHN0cmNtcChuc3BuYW1lLCByZWxpbmZvLT5zY2hlbWFuYW1lKSA9PSAwICYmCisJCQkJc3Ry Y21wKHJlbG5hbWUsIHJlbGluZm8tPnJlbG5hbWUpID09IDApCisJCQl7CisJCQkJcGZyZWUocmVs aW5mby0+c2NoZW1hbmFtZSk7CisJCQkJcGZyZWUocmVsaW5mby0+cmVsbmFtZSk7CisJCQkJbGlz dF9mcmVlX2RlZXAoKmVmZmVjdGl2ZV9yZWxhdGlvbnMpOworCQkJCSplZmZlY3RpdmVfcmVsYXRp b25zID0gTklMOworCQkJfQorCQl9CisJfQorCiAJLyoKIAkgKiBHZXQgcmVsYXRpb24ncyByb3cg ZmlsdGVyIGV4cHJlc3Npb25zLiBESVNUSU5DVCBhdm9pZHMgdGhlIHNhbWUKIAkgKiBleHByZXNz aW9uIG9mIGEgdGFibGUgaW4gbXVsdGlwbGUgcHVibGljYXRpb25zIGZyb20gYmVpbmcgaW5jbHVk ZWQKQEAgLTEwNDMsNiArMTE1Niw3IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCUxvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CiAJTG9naWNhbFJlcFJlbGF0aW9uIGxyZWw7 CiAJTGlzdAkgICAqcXVhbCA9IE5JTDsKKwlMaXN0CSAgICplZmZlY3RpdmVfcmVsYXRpb25zID0g TklMOwogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJQ29w eUZyb21TdGF0ZSBjc3RhdGU7CkBAIC0xMDU0LDcgKzExNjgsNyBAQCBjb3B5X3RhYmxlKFJlbGF0 aW9uIHJlbCkKIAkvKiBHZXQgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwogCWZldGNo X3JlbW90ZV90YWJsZV9pbmZvKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFj ZShyZWwpKSwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCwgJnF1 YWwsCi0JCQkJCQkJJmdlbmNvbF9wdWJsaXNoZWQpOworCQkJCQkJCSZnZW5jb2xfcHVibGlzaGVk LCAmZWZmZWN0aXZlX3JlbGF0aW9ucyk7CiAKIAkvKiBQdXQgdGhlIHJlbGF0aW9uIGludG8gcmVs bWFwLiAqLwogCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJlbCk7CkBAIC0xMDY2LDEyICsx MTgwLDY0IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCS8qIFN0YXJ0IGNvcHkgb24gdGhl IHB1Ymxpc2hlci4gKi8KIAlpbml0U3RyaW5nSW5mbygmY21kKTsKIAorCisJaWYgKGVmZmVjdGl2 ZV9yZWxhdGlvbnMgJiYgbGlzdF9sZW5ndGgoZWZmZWN0aXZlX3JlbGF0aW9ucykpCisJeworCQli b29sIGZpcnN0ID0gdHJ1ZTsKKworCQkvKgorCQkgKiBCdWlsZCBhIHNpbmdsZSBDT1BZIGNvbW1h bmQgdG8gc3luY2hyb25pemUgYWxsIHJlc29sdmVkIHJlbGF0aW9ucworCQkgKiBpbnRvIHRoZSBy b290IHRhYmxlLgorCQkgKgorCQkgKiBUaGUgYXJyYXkgJ2VmZmVjdGl2ZV9yZWxhdGlvbnMnIGNv bnRhaW5zIHRoZSBsZWFmIHRhYmxlcyBvZgorCQkgKiBwYXJ0aXRpb24gaGllcmFyY2hpZXMsIHdp dGggZXhjbHVkZWQgc3VidHJlZXMgcmVtb3ZlZCBhY2NvcmRpbmcgdG8KKwkJICogdGhlIEVYQ0VQ VCBjbGF1c2VzLiBUaGlzIGFwcGxpZXMgb25seSB3aGVuCisJCSAqICdwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCcgaXMgZW5hYmxlZCwgc2luY2UgdGhlIGluaXRpYWwgc3luYyBtdXN0CisJCSAq IHJvdXRlIGFsbCBjaGFuZ2VzIHRvIHRoZSByb290IHRhYmxlLgorCQkgKgorCQkgKiBXZSBjb25z dHJ1Y3QgYSBVTklPTiBBTEwgcXVlcnkgdGhhdCBjb21iaW5lcyBkYXRhIGZyb20gbXVsdGlwbGUg bGVhZgorCQkgKiByZWxhdGlvbnMgaW50byBvbmUgc3ViLUNPUFkgc3RhdGVtZW50LCBlbnN1cmlu ZyBhbGwgcm93cyBhcmUgY29waWVkCisJCSAqIGNvbnNpc3RlbnRseSBpbnRvIHRoZSByb290IHRh YmxlLgorCQkgKi8KKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiQ09QWSAoXG4iKTsK KwkJZm9yZWFjaF9wdHIoUXVhbGlmaWVkUmVsYXRpb25OYW1lLCByZWxpbmZvLCBlZmZlY3RpdmVf cmVsYXRpb25zKQorCQl7CisJCQlpZiAoIWZpcnN0KQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmNtZCwgIlVOSU9OIEFMTFxuIik7CisKKwkJCWZpcnN0ID0gZmFsc2U7CisKKwkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIlNFTEVDVCAiKTsKKworCQkJLyogSWYgdGhlIHRhYmxl IGhhcyBjb2x1bW5zLCB0aGVuIHNwZWNpZnkgdGhlIGNvbHVtbnMgKi8KKwkJCWlmIChscmVsLm5h dHRzKQorCQkJeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbHJlbC5uYXR0czsgaSsrKQorCQkJ CXsKKwkJCQkJaWYgKGkgPiAwKQorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi LCAiKTsKKworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsIHF1b3RlX2lkZW50aWZp ZXIobHJlbC5hdHRuYW1lc1tpXSkpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZjbWQsICIgKiAiKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmY21k LCAiIEZST00gICVzXG4iLAorCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihyZWxp bmZvLT5zY2hlbWFuYW1lLAorCQkJCQkJCQkJCQkJCQlyZWxpbmZvLT5yZWxuYW1lKSk7CisJCX0K KworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIpXG4iKTsKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLCAiVE8gU1RET1VUIik7CisJfQogCS8qIFJlZ3VsYXIgb3IgcGFydGl0 aW9uZWQgdGFibGUgd2l0aCBubyByb3cgZmlsdGVyIG9yIGdlbmVyYXRlZCBjb2x1bW5zICovCi0J aWYgKChscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fCBscmVsLnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKLQkJJiYgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9w dWJsaXNoZWQpCisJZWxzZSBpZiAoKGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8 CisJCQkgIGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJgorCQkJ IHF1YWwgPT0gTklMICYmICFnZW5jb2xfcHVibGlzaGVkKQogCXsKIAkJYXBwZW5kU3RyaW5nSW5m bygmY21kLCAiQ09QWSAlcyIsCi0JCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJl bC5uc3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKKwkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlm aWVyKGxyZWwubnNwbmFtZSwgbHJlbC5yZWxuYW1lKSk7CiAKIAkJLyogSWYgdGhlIHRhYmxlIGhh cyBjb2x1bW5zLCB0aGVuIHNwZWNpZnkgdGhlIGNvbHVtbnMgKi8KIAkJaWYgKGxyZWwubmF0dHMp CkBAIC0xMTU3LDYgKzEzMjMsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAl9CiAKIAly ZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwgMCwgTlVM TCk7CisJZWxvZyhMT0csICJUYWJsZXN5bmMgd29ya2VyOiBFeGVjdXRpbmcgcXVlcnkgdG8gZ2V0 IHRoZSBpbml0aWFsIHN5bmMgZGF0YTpcbiVzIiwgY21kLmRhdGEpOwogCXBmcmVlKGNtZC5kYXRh KTsKIAlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX0NPUFlfT1VUKQogCQllcmVwb3J0KEVS Uk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXgg MDU4MDI0ODJjMTAuLjQwN2Q5MzA0MTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIyMDksOCArMjIwOSw4IEBAIGdldF9yZWxfc3luY19lbnRy eShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICogVEFCTEUgbGlz dDoKIAkJCSAqCiAJCQkgKiAxLiBJZiBwdWJ2aWFyb290IGlzIHNldCBhbmQgdGhlIHJlbGF0aW9u IGlzIGEgcGFydGl0aW9uLCBjaGVjawotCQkJICogd2hldGhlciB0aGUgcGFydGl0aW9uIHJvb3Qg aXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRQotCQkJICogbGlzdC4gSWYgc28sIGRvIG5v dCBwdWJsaXNoIHRoZSBjaGFuZ2UuCisJCQkgKiB3aGV0aGVyIHRoZSBjdXJyZW50IHJlbGF0aW9u IG9yIGFueSBvZiB0aGUgYW5jZXN0b3JzIGlzIGluY2x1ZGVkCisJCQkgKiBpbiB0aGUgRVhDRVBU IFRBQkxFIGxpc3QuIElmIHNvLCBkbyBub3QgcHVibGlzaCB0aGUgY2hhbmdlLgogCQkJICoKIAkJ CSAqIDIuIElmIHB1YnZpYXJvb3QgaXMgbm90IHNldCwgY2hlY2sgd2hldGhlciB0aGUgcmVsYXRp b24gaXRzZWxmCiAJCQkgKiBpcyBpbmNsdWRlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGxpc3QuIElm IHNvLCBkbyBub3QgcHVibGlzaCB0aGUKQEAgLTIyMjgsNiArMjIyOCwxMSBAQCBnZXRfcmVsX3N5 bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQl7CiAJ CQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsK IAorCQkJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgTlVMTCwgJmV4Y2VwdHB1Ymlk cyk7CisKKwkJCQkJZm9yZWFjaF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJCQkJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKKwogCQkJ CQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKIAkJCQkJYW5jZXN0b3JfbGV2ZWwg PSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwogCQkJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKaW5kZXggYzEyODVmZGQxYmMuLmNhYjk3NTMxMjc2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjM0LDYgKzIzNCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbwogCVBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKnNoYXJlZDsKIH0gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CiAKK3R5cGVk ZWYgc3RydWN0IFF1YWxpZmllZFJlbGF0aW9uTmFtZQoreworCWNoYXIJICAgKnNjaGVtYW5hbWU7 CisJY2hhcgkgICAqcmVsbmFtZTsKK30gUXVhbGlmaWVkUmVsYXRpb25OYW1lOworCiAvKiBNYWlu IG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2Vy IGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250 ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5n ZXNfZXhjZXB0X3RhYmxlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFu Z2VzX2V4Y2VwdF90YWJsZS5wbAppbmRleCA5NTkwNGRkZDAwNS4uODBiNmE3MGZjYTggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbApAQCAtODgsOCArODgsMTEgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSIpOwogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRFIFRBQkxFIHNj aDEudDEoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKLQlDUkVBVEUgVEFCTEUgc2NoMS5w YXJ0MSBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKLQlD UkVBVEUgVEFCTEUgc2NoMS5wYXJ0MiBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZS T00gKDYpIFRPICgxMCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNj aDEudDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5w YXJ0MihhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBh cnQyXzEgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIFRPICgx NTApOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEucGFydDIg Rk9SIFZBTFVFUyBGUk9NICgxNTEpIFRPICgyMDApOworCUFMVEVSIFRBQkxFIHNjaDEudDEgQVRU QUNIIFBBUlRJVElPTiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsK ICkpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCkBAIC05NywxNDIgKzEwMCwxNDkg QEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEg aW50KTsKIAlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MShhIGludCk7CiAJQ1JFQVRFIFRBQkxFIHNj aDEucGFydDIoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEoYSBpbnQpOworCUNS RUFURSBUQUJMRSBzY2gxLnBhcnQyXzIoYSBpbnQpOwogKSk7CiAKLSMgRVhDRVBUIFRBQkxFIChz Y2gxLnBhcnQxKSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UKLSMgRXhj bHVkaW5nIGEgcGFydGl0aW9uIHdoaWxlIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFs c2UgcHJldmVudHMKLSMgcmVwbGljYXRpb24gb2Ygcm93cyBpbnNlcnRlZCBpbnRvIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZSBmb3IgdGhhdCBwYXJ0aWN1bGFyCi0jIHBhcnRpdGlvbi4KKyMgRXhjbHVk aW5nIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBpdHMgcGFydGl0aW9u cyBhcyB3ZWxsIHdoZW4KKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZS4KICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAotCUNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBh cnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKLQlJTlNFUlQg SU5UTyBzY2gxLnQxIFZBTFVFUyAoMSksICg2KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxV RVMgKDEpLCAoMTAxKSwgKDE1MSk7CiApKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKICk7CiAkbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICd0YXBfc3ViX3BhcnQnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOworCSJTRUxFQ1Qgc2xv dF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19j dXJyZW50X3dhbF9sc24oKSk7IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDEwMiksICgxNTIpIik7 CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUg aXMgbm90IHB1Ymxpc2hlZCB3aGVuIGl0IGlzCisjIGV4Y2x1ZGVkIHdpdGggcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSB0cnVlLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVy c2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9wdWJfcGFydCcpIgorKTsKICRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CiAKKyMgQ2hl Y2sgdGhhdCBubyByb3dzIGFyZSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKICRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2No MS50MSIpOwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQgdGFi bGUnKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUnKTsKIAog JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQxIik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBl eGNsdWRlZCBwYXJ0aXRpb24nKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRh YmxlIHNjaDEucGFydDEnKTsKIAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyIik7Ci1pcyggJHJlc3VsdCwg cXEoNgotNyksICdjaGVjayByb3dzIG9uIG90aGVyIHBhcnRpdGlvbicpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MicpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNj aDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2No MS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8yIik7CitpcygkcmVzdWx0LCBx cSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzInKTsKIAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsKLSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CiAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFy dCIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElD QVRJT04gdGFwX3B1Yl9wYXJ0OyIpOwogCi0jIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgd2l0aCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlCi0jIEV4Y2x1ZGluZyB0aGUgcGFydGl0 aW9uZWQgdGFibGUgc3RpbGwgYWxsb3dzIHJvd3MgaW5zZXJ0ZWQgaW50byB0aGUKLSMgcGFydGl0 aW9uZWQgdGFibGUgdG8gYmUgcmVwbGljYXRlZCB2aWEgaXRzIHBhcnRpdGlvbnMuCisjIEV4Y2x1 ZGluZyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBleGNsdWRlcyBhbGwgaXRzIHBhcnRpdGlv bnMgYXMgd2VsbCB3aGVuCisjIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAotCUNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnQx KSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKLQlJTlNFUlQgSU5U TyBzY2gxLnQxIFZBTFVFUyAoMSksICg2KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKICkpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgogKTsK ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJ3RhcF9zdWJfcGFydCcpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIpLCAoNyk7Iik7CisJIlNFTEVD VCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcs IHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDMpLCAoMTAzKSwgKDE1 Myk7Iik7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgcGFydGl0aW9uZWQg dGFibGUgaXMgbm90IHB1Ymxpc2hlZCB3aGVuIGl0IGlzCisjIGV4Y2x1ZGVkIHdpdGggcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJv dG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9wdWJfcGFydCcpIgor KTsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CiAK KyMgQ2hlY2sgdGhhdCBubyByb3dzIGFyZSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZS T00gc2NoMS50MSIpOwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9u ZWQgdGFibGUnKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUn KTsKIAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7Ci1pcyggJHJlc3VsdCwgcXEoMQotMiksICdjaGVj ayByb3dzIG9uIGZpcnN0IHBhcnRpdGlvbicpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJv d3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOwogCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKLWlzKCAk cmVzdWx0LCBxcSg2Ci03KSwgJ2NoZWNrIHJvd3Mgb24gc2Vjb25kIHBhcnRpdGlvbicpOworaXMo JHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MicpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg KiBGUk9NIHNjaDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24g dGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8yIik7Citpcygk cmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzInKTsKIAotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsK LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRh cF9zdWJfcGFydCIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OyIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKICk7CiAKLSMg RVhDRVBUIFRBQkxFIChzY2gxLnQxKSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0g dHJ1ZQotIyBXaGVuIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBleGNsdWRlZCBhbmQgcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgdHJ1ZSwKLSMgbm8gcm93cyBmcm9tIHRoZSB0YWJsZSBv ciBpdHMgcGFydGl0aW9ucyBhcmUgcmVwbGljYXRlZC4KKyMgRXhjbHVkaW5nIG9uZSBvZiB0aGUg Y2hpbGQgcGFydGl0aW9uIHRhYmxlIHdpdGgKKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qg PSB0cnVlIHNob3VsZCByZXBsaWNhdGUgdGhlIG90aGVyIHBhcnRpdGlvbnMuCiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKLQlDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAo cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwotCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVT ICgxKSwgKDYpOworCVRSVU5DQVRFIHNjaDEudDE7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxV RVMgKDMpLCAoMTAzKSwgKDE1Myk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDIpIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlUUlVOQ0FURSBzY2gxLnQxOworCUNSRUFURSBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElD QVRJT04gdGFwX3B1Yl9wYXJ0OwogKSk7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCi0pOwogJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAn dGFwX3N1Yl9wYXJ0Jyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKLSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisJIlNFTEVDVCBzbG90X25hbWUg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcsIHBnX2N1cnJlbnRf d2FsX2xzbigpKTsiCispOwogCiAjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBh cnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcwogIyBleGNsdWRlZCB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KICRyZXN1bHQgPSAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKikgPSAwIEZS T00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwg TlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHVi X3BhcnQnKSIKICk7Ci1pcygkcmVzdWx0LCBxcSh0KSwgJ2NoZWNrIG5vIGNoYW5nZXMgZm9yIGV4 Y2x1ZGVkIHRhYmxlIGluIHJlcGxpY2F0aW9uIHNsb3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CiAKKyMgQ2hlY2sgdGhhdCB0YWJsZSBkYXRh IDEwMyBhbmQgMTUzIHdoaWNoIGlzIHByZXNlbnQgaW4gc2NoMS5zY2gxLnBhcnQyIHNob3VsZAor IyBub3QgYmUgcmVwbGljYXRlZC4KICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOwotaXMoJHJlc3VsdCwgcXEo KSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKK2lzKCRyZXN1bHQsIHFxKDMp LCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CiAKICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOwot aXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gZmlyc3QgcGFydGl0aW9uJyk7Citpcygk cmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CiAKICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZS T00gc2NoMS5wYXJ0MiIpOwotaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gc2Vjb25k IHBhcnRpdGlvbicpOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgc2NoMS50MSIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 YXBfc3ViX3BhcnQnKTsKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7Ci0KLSMg RVhDRVBUIFRBQkxFIChzY2gxLnBhcnQxKSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZQotIyBXaGVuIGEgcGFydGl0aW9uIGlzIGV4Y2x1ZGVkIGJ1dCBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCBpcyB0cnVlLAotIyByb3dzIHB1Ymxpc2hlZCB0aHJvdWdoIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZSBjYW4gc3RpbGwgYmUgcmVwbGljYXRlZC4KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi X3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQxKSBXSVRIIChwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7Ci0JSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEp LCAoNikKLSkpOwotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29u bnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgotKTsKLSRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcp OwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8g c2NoMS50MSBWQUxVRVMgKDIpLCAoNyk7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJ3RhcF9zdWJfcGFydCcpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24g dGFibGUgc2NoMS5wYXJ0MicpOwogCiAkcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEgT1JERVIgQlkgYSIpOwot aXMoICRyZXN1bHQsIHFxKDEKLTIKLTYKLTcpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0 YWJsZScpOworICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBv biB0YWJsZSBzY2gxLnBhcnQyXzEnKTsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7Ci1pcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBleGNsdWRlZCBwYXJ0aXRpb24nKTsKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZS T00gc2NoMS5wYXJ0Ml8yIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJs ZSBzY2gxLnBhcnQyXzInKTsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyIik7Ci1pcygkcmVzdWx0LCBx cSgpLCAnY2hlY2sgcm93cyBvbiBvdGhlciBwYXJ0aXRpb24nKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQ7Iik7CiAKLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMzQzNzRkZjBkNjcuLmJmZTI5NjRjYmExIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMjQxOCw2ICsyNDE4LDcgQEAgUVROb2RlCiBRVUVSWVRZUEUK IFF1YWxDb3N0CiBRdWFsSXRlbQorUXVhbGlmaWVkUmVsYXRpb25OYW1lCiBRdWVyeQogUXVlcnlD b21wbGV0aW9uCiBRdWVyeURlc2MKLS0gCjIuNDMuMAoK --0000000000009403bb0649884659 Content-Type: text/x-patch; charset="US-ASCII"; name="v38-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v38-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkzldnae0 RnJvbSA2NGIzMGM5NmEwY2M4NjU3OTM0MzMzMTE2ZWY5Nzg2N2U4MWNkYzlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjggSmFuIDIwMjYgMTA6NDc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzOF0gU2tp cCBwdWJsaXNoaW5nIHRoZSB0YWJsZXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBUQUJMRS4KCkEgbmV3 ICJFWENFUFQgVEFCTEUiIGNsYXVzZSBmb3IgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbG93cyBvbmUg b3IgbW9yZQp0YWJsZXMgdG8gYmUgZXhjbHVkZWQuIFRoZSBwdWJsaXNoZXIgd2lsbCBub3Qgc2Vu ZCB0aGUgZGF0YSBvZiBleGNsdWRlZAp0YWJsZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpUaGUgbmV3 IHN5bnRheCBhbGxvd3Mgc3BlY2lmeWluZyBleGNsdWRlZCByZWxhdGlvbnMgd2hlbiBjcmVhdGlu ZyBhCnB1YmxpY2F0aW9uLiBGb3IgZXhhbXBsZToKQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0MSx0Mik7CgpBIG5ldyBjb2x1bW4gInByZXhjZXB0 IiBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVibGljYXRpb25fcmVsIiwgdG8gZmxhZwp0aGUgcmVs YXRpb25zIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gZXhjbHVkZSBmcm9tIHRoZSBwdWJsaWNhdGlv bnMuCgpwZ19kdW1wIGlzIHVwZGF0ZWQgdG8gaWRlbnRpZnkgYW5kIGR1bXAgdGhlIGV4Y2x1ZGVk IHRhYmxlcyBvZiB0aGUgcHVibGljYXRpb25zLgoKVGhlIHBzcWwgXGQgZmFtaWx5IG9mIGNvbW1h bmRzIGNhbiBub3cgZGlzcGxheSBleGNsdWRlZCB0YWJsZXMuCgpCdW1wIGNhdGFsb2cgdmVyc2lv bi4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAg MTAgKwogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA2 ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICAgICAgfCAgNTYg KysrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgMTQz ICsrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAg ICAgfCAxMDkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgIDQyICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMgICB8ICA0MyArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAg ICAgICAgICAgfCAgMjEgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAg ICAgICAgICB8ICA3MSArKysrKysKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAg ICAgICAgICAgfCAgMzAgKysrCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgODcgKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAg ICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmggICAgICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25f cmVsLmggICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQgICAgIHwgIDkzICsrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCAgICAgICAgICB8ICAzNyArKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAg ICAgICAgICAgICB8ICAgMSArCiAuLi4vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBs ICAgICAgICAgfCAyMzggKysrKysrKysrKysrKysrKysrCiAyMiBmaWxlcyBjaGFuZ2VkLCA4OTcg aW5zZXJ0aW9ucygrKSwgMTI5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCmluZGV4IDMzMjE5MzU2NWUyLi5kNDBlNWNjMTA5MCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTY1ODEsNiArNjU4MSwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgaWYgdGhl cmUgaXMgbm8gcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+ CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVj dGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHJlbGF0aW9uIGlzIGV4Y2x1 ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQ VCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5w cmF0dHJzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MnZlY3RvcjwvdHlwZT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5mMDEyODFmZDRmOSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAg ICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBB TEwgVEFCTEVTPC9saXRlcmFsPiwKICAgIG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9s aXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVk IGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9Imxv Z2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAg IGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIHRhYmxlcyBj YW4gYmUgZXhwbGljaXRseQorICAgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUK KyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2Vw dC10YWJsZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4KKyAgIGNsYXVz ZS4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0 aW9uLnNnbWwKaW5kZXggNmVmYmI5MTVjZWMuLjFlMDkxYmIzYzZkIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICszMiwxNiBAQCBDUkVBVEUgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fYWxsX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIEFM TCBUQUJMRVMKKyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdCiAgICAgQUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3Bo cmFzZT4KIAogICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0K KworPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJs ZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0K IDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBw dWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMg aW4KLSAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBm dXR1cmUuCisgICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0 aGUgZnV0dXJlLiBUYWJsZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1 ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTg0LDYgKzE4OSwzNiBAQCBDUkVBVEUgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0i c3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVy bT48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxl cyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFy YT4KKyAgICAgPHBhcmE+CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+ T05MWTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUs IG9ubHkgdGhhdCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAg ICAgIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBh bmQgYWxsIGl0cyBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVk LiBPcHRpb25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmll ZCBhZnRlciB0aGUgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2Vu ZGFudAorICAgICAgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdoZW4gPGxpdGVyYWw+cHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+CisgICAgICBpcyBzZXQgdG8gPGxpdGVyYWw+dHJ1 ZTwvbGl0ZXJhbD4sIHNwZWNpZnlpbmcgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGluCisgICAg ICA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGV4Y2x1ZGVzIGl0IGFuZCBhbGwgaXRz IHBhcnRpdGlvbnMgZnJvbQorICAgICAgcmVwbGljYXRpb24uIFNwZWNpZnlpbmcgYSBsZWFmIHBh cnRpdGlvbiBoYXMgbm8gZWZmZWN0LCBhcyBpdHMgY2hhbmdlcyBhcmUKKyAgICAgIHN0aWxsIHJl cGxpY2F0ZWQgdmlhIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlLiBXaGVuCisgICAgICA8bGl0 ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4gaXMgc2V0IHRvCisgICAg ICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4sIHNwZWNpZnlpbmcgYSByb290IHBhcnRpdGlvbmVk IHRhYmxlIGhhcyBubworICAgICAgZWZmZWN0LCBhcyBjaGFuZ2VzIGFyZSByZXBsaWNhdGVkIHZp YSB0aGUgbGVhZiBwYXJ0aXRpb25zLiBTcGVjaWZ5aW5nIGEKKyAgICAgIGxlYWYgcGFydGl0aW9u IGV4Y2x1ZGVzIG9ubHkgdGhhdCBwYXJ0aXRpb24gZnJvbSByZXBsaWNhdGlvbi4gVGhlIG9wdGlv bmFsCisgICAgICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBoYXMgbm8gbWVhbmluZyBmb3IgcGFydGl0 aW9uZWQgdGFibGVzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFy YW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8 L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTQ4OSw2ICs1MjQsMjMgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVM7CiAgICBhbGwg c2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb246CiA8cHJvZ3JhbWxpc3Rpbmc+CiBDUkVBVEUg UFVCTElDQVRJT04gYWxsX3RhYmxlc19zZXF1ZW5jZXMgRk9SIEFMTCBUQUJMRVMsIEFMTCBTRVFV RU5DRVM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDcmVh dGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVz IGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFt ZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVC TElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh1c2Vycywg ZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNlcXVlbmNlcyBmb3Ig c3luY2hyb25pemF0aW9uLCBhbmQKKyAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0YWJsZXMgZXhjZXB0 IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFy dG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElP TiBhbGxfc2VxdWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMsIEFMTCBUQUJM RVMgRVhDRVBUICh1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9w YXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVm LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKaW5kZXggZTQ2NGUzYjEzZGUu LmY0YzAxODNiOTNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0yMTAzLDggKzIxMDMsOSBA QCBTRUxFQ1QgJDEgXHBhcnNlIHN0bXQxCiAgICAgICAgIGxpc3RlZC4KICAgICAgICAgSWYgPGxp dGVyYWw+eDwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHJl c3VsdHMKICAgICAgICAgYXJlIGRpc3BsYXllZCBpbiBleHBhbmRlZCBtb2RlLgotICAgICAgICBJ ZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0 aGUgdGFibGVzIGFuZAotICAgICAgICBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1Ymxp Y2F0aW9uIGFyZSBzaG93biBhcyB3ZWxsLgorICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFs PiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzLAorICAgICAgICBl eGNsdWRlZCB0YWJsZXMsIGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0 aW9uIGFyZSBzaG93bgorICAgICAgICBhcyB3ZWxsLgogICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYwppbmRleCA5YTQ3OTFjNTczZS4uMDljNjkwMDUxMjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTM2Niw5ICszNjYsMTEgQEAgR2V0VG9wTW9zdEFuY2Vz dG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0 b3JfbGV2ZWwKIAlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJewogCQlPaWQJCQlhbmNlc3RvciA9 IGxmaXJzdF9vaWQobGMpOwotCQlMaXN0CSAgICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNh dGlvbnMoYW5jZXN0b3IpOworCQlMaXN0CSAgICphcHViaWRzID0gTklMOwogCQlMaXN0CSAgICph c2NoZW1hUHViaWRzID0gTklMOwogCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9y LCAmYXB1YmlkcywgTlVMTCk7CisKIAkJbGV2ZWwrKzsKIAogCQlpZiAobGlzdF9tZW1iZXJfb2lk KGFwdWJpZHMsIHB1Ym9pZCkpCkBAIC00NjYsNiArNDY4LDI2IEBAIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAorCS8qCisJ ICogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgcGFydGl0aW9uIGlzIGV4Y2x1ZGVkIGJ5IEVYQ0VQ VCBUQUJMRSB3aGlsZQorCSAqIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKwkg Ki8KKwlpZiAocHViLT5hbGx0YWJsZXMgJiYgcHViLT5wdWJ2aWFyb290ICYmIHByaS0+ZXhjZXB0 ICYmCisJCXRhcmdldHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChXQVJO SU5HLAorCQkJCShlcnJtc2coInBhcnRpdGlvbiBcIiVzXCIgbWlnaHQgYmUgcmVwbGljYXRlZCBh cyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgInRydWUiKSkpOworCisJLyoKKwkgKiBIYW5kbGUg dGhlIGNhc2Ugd2hlcmUgYSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBleGNsdWRlZCBieSBFWENFUFQg VEFCTEUKKwkgKiB3aGlsZSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlLgorCSAq LworCWlmIChwdWItPmFsbHRhYmxlcyAmJiAhcHViLT5wdWJ2aWFyb290ICYmIHByaS0+ZXhjZXB0 ICYmCisJCXRhcmdldHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJwYXJ0aXRpb25lZCB0YWJs ZSBcIiVzXCIgbWlnaHQgYmUgcmVwbGljYXRlZCBhcyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCBpcyBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwg ImZhbHNlIikpKTsKKwogCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwp OwogCiAJLyogVmFsaWRhdGUgYW5kIHRyYW5zbGF0ZSBjb2x1bW4gbmFtZXMgaW50byBhIEJpdG1h cHNldCBvZiBhdHRudW1zLiAqLwpAQCAtNDgyLDYgKzUwNCw4IEBAIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQlPYmplY3RJZEdl dERhdHVtKHB1YmlkKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZCAt IDFdID0KIAkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcmVsX3ByZXhjZXB0IC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHJpLT5leGNlcHQpOwog CiAJLyogQWRkIHF1YWxpZmljYXRpb25zLCBpZiBhdmFpbGFibGUgKi8KIAlpZiAocHJpLT53aGVy ZUNsYXVzZSAhPSBOVUxMKQpAQCAtNzQ5LDM4ICs3NzMsNTggQEAgcHVibGljYXRpb25fYWRkX3Nj aGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCXJldHVy biBteXNlbGY7CiB9CiAKLS8qIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJl bGF0aW9uICovCi1MaXN0ICoKLUdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKKy8q CisgKiBHZXQgdGhlIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBhc3NvY2lhdGVkIHdpdGggYSBz cGVjaWZpZWQgcmVsYXRpb24uCisgKgorICogUGFyYW1ldGVyICdwdWJpZHMnIHJldHVybnMgdGhl IE9pZHMgb2YgdGhlIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24gaXMgcGFydAorICogb2YuIFBh cmFtZXRlciAnZXhjZXB0X3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiBwdWJsaWNhdGlvbnMg dGhlIHJlbGF0aW9uCisgKiBpcyBleGNsdWRlZCBmcm9tLgorICoKKyAqIFRoaXMgZnVuY3Rpb24g cmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIGFueSBwdWJsaWNhdGlvbi4K KyAqLworYm9vbAorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHVi aWRzLCBMaXN0ICoqZXhjZXB0X3B1YmlkcykKIHsKLQlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJ Q2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKLQlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gZmFsc2U7 CiAKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlv bi4gKi8KIAlwdWJyZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShQVUJMSUNBVElPTlJFTE1B UCwKIAkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7Ci0JZm9yIChpID0gMDsgaSA8 IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgcHVicmVs bGlzdC0+bl9tZW1iZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3Qt Pm1lbWJlcnNbaV0tPnR1cGxlOwotCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlv bl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwgcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJ T2lkCQkJcHViaWQgPSBwdWJyZWwtPnBycHViaWQ7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQo cmVzdWx0LCBwdWJpZCk7CisJCWlmIChwdWJyZWwtPnByZXhjZXB0KQorCQl7CisJCQlpZiAoZXhj ZXB0X3B1YmlkcykKKwkJCQkqZXhjZXB0X3B1YmlkcyA9IGxhcHBlbmRfb2lkKCpleGNlcHRfcHVi aWRzLCBwdWJpZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAocHViaWRzKQorCQkJCSpwdWJp ZHMgPSBsYXBwZW5kX29pZCgqcHViaWRzLCBwdWJpZCk7CisJCQlmb3VuZCA9IHRydWU7CisJCX0K IAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxpc3QpOwogCi0JcmV0dXJuIHJlc3Vs dDsKKwlyZXR1cm4gZm91bmQ7CiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lk cyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlz dCBvZiByZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxk IG9ubHkgYmUgdXNlZCBGT1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMv U0VRVUVOQ0VTCi0gKiBzaG91bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisg KiBJZiBleGNlcHRfZmxhZyBpcyB0cnVlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBl eGNsdWRlZCBmcm9tIHRoZQorICogcHVibGljYXRpb247IG90aGVyd2lzZSwgcmV0dXJucyB0aGUg bGlzdCBvZiByZWxhdGlvbnMgaW5jbHVkZWQgaW4gdGhlCisgKiBwdWJsaWNhdGlvbi4KICAqLwot TGlzdCAqCi1HZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCkKK3N0YXRpYyBMaXN0ICoKK2dldF9wdWJsaWNhdGlvbl9yZWxhdGlv bnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkgIGJv b2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVzdWx0OwogCVJlbGF0aW9uCXB1YnJlbHNy ZWw7CkBAIC04MDUsOCArODQ5LDEwIEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQlGb3JtX3BnX3B1YmxpY2F0aW9u X3JlbCBwdWJyZWw7CiAKIAkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRT VFJVQ1QodHVwKTsKLQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJl c3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOworCisJCWlm IChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkJCQkJ cHVicmVsLT5wcnJlbGlkKTsKIAl9CiAKIAlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtODE5 LDYgKzg2NSwzNiBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUmV0 dXJuIHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9pZHMgZm9yIGEgcHVibGljYXRpb24uCisgKgorICog Rm9yIGEgRk9SIFRBQkxFIHB1YmxpY2F0aW9uLCB0aGlzIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVs YXRpb25zIGV4cGxpY2l0bHkKKyAqIGluY2x1ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisg KiBQdWJsaWNhdGlvbnMgZGVjbGFyZWQgd2l0aCBGT1IgQUxMIFRBQkxFUyBzaG91bGQgdXNlCisg KiBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucygpIHRvIG9idGFpbiB0aGUgY29tcGxldGUgc2V0 IG9mIHRhYmxlcyBjb3ZlcmVkIGJ5CisgKiB0aGUgcHVibGljYXRpb24uCisgKi8KK0xpc3QgKgor R2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoIUdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxs dGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJf cGFydG9wdCwgZmFsc2UpOworfQorCisvKgorICogUmV0dXJuIHRoZSBsaXN0IG9mIHRhYmxlcyBP aWRzIGV4Y2x1ZGVkIGZyb20gYSBwdWJsaWNhdGlvbi4KKyAqIFRoaXMgaXMgb25seSBhcHBsaWNh YmxlIGZvciBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCisgKi8KK0xpc3QgKgorR2V0QWxs UHVibGljYXRpb25FeGNsdWRlZFRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMp OworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0 LCB0cnVlKTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBw dWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBBTEwgVEFCTEVTLgogICovCkBAIC04NjQsMTggKzk0 MCwyOSBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKICAqIHBhcnRpdGlvbmVkIHRh Ymxlcywgd2UgbXVzdCBleGNsdWRlIHBhcnRpdGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIHRo ZQogICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8g Rk9SIEFMTCBTRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVu dGlvbmVkCisgKiBpbiBFWENFUFQgVEFCTEUgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQorR2V0QWxs UHVibGljYXRpb25SZWxhdGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKQogewog CVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNj IHNjYW47CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0 CSAgICpleGNlcHRsaXN0ID0gTklMOworCWJvb2wJCXB1YnZpYXJvb3QgPSBwdWItPnB1YnZpYXJv b3Q7CisJT2lkCQkJcHViaWQgPSBwdWItPm9pZDsKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKKwlpZiAocmVsa2luZCA9PSBSRUxLSU5E X1JFTEFUSU9OKQorCQlleGNlcHRsaXN0ID0gR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxl cyhwdWJpZCwgcHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxM IDoKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwogCWNsYXNzUmVsID0g dGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAlTY2Fu S2V5SW5pdCgma2V5WzBdLApAQCAtODkxLDcgKzk3OCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQlyZWxpZCA9IHJl bEZvcm0tPm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0p ICYmCi0JCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpKQorCQkJIShy ZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxpc3RfbWVtYmVy X29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQs IHJlbGlkKTsKIAl9CiAKQEAgLTkxMiw3ICsxMDAwLDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxh dGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJl bEZvcm0tPm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSAmJgotCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNw YXJ0aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJ CQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTY4LDE3 ICsxMjU3LDE3IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykK IAkJCSAqIHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxm LgogCQkJICovCiAJCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJfZWxlbV90YWJs ZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9OLAotCQkJCQkJ CQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290KTsKKwkJCQlwdWJfZWxlbV90YWJsZXMgPSBH ZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbSwKKwkJCQkJCQkJCQkJCQkJCSBSRUxL SU5EX1JFTEFUSU9OKTsKIAkJCWVsc2UKIAkJCXsKIAkJCQlMaXN0CSAgICpyZWxpZHMsCiAJCQkJ CQkgICAqc2NoZW1hcmVsaWRzOwogCi0JCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlv bnMocHViX2VsZW0tPm9pZCwKLQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/Ci0J CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX0xFQUYpOworCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxh dGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290 ID8KKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJ CSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVt YVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQkJcHVi X2VsZW0tPnB1YnZpYXJvb3QgPwogCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9P VCA6CkBAIC0xMzY3LDcgKzE0NTYsNyBAQCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCXB1YmxpY2F0aW9uID0gR2V0UHVibGljYXRpb25CeU5hbWUocHVi bmFtZSwgZmFsc2UpOwogCiAJCWlmIChwdWJsaWNhdGlvbi0+YWxsc2VxdWVuY2VzKQotCQkJc2Vx dWVuY2VzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUkVMS0lORF9TRVFVRU5DRSwgZmFs c2UpOworCQkJc2VxdWVuY2VzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRp b24sIFJFTEtJTkRfU0VRVUVOQ0UpOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHNlcXVlbmNl czsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBmYzNhNGMxOWU2 NS4uNmJiODE2YjIxOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBA IC0xOTgsNyArMTk4LDEyIEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9i anNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCXN3aXRjaCAocHVib2JqLT5wdWJv Ymp0eXBlKQogCQl7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKKwkJCQlw dWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVs cywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JK X1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCSpyZWxz ID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNl IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6CkBAIC01MTksOCArNTI0LDggQEAgSW52 YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQgcHViaWQsIGJvb2wgcHViYWxsdGFibGVzKQogCQkg KiBhIHRhcmdldC4gSG93ZXZlciwgV0FMIHJlY29yZHMgZm9yIFRSVU5DQVRFIHNwZWNpZnkgYm90 aCBhIHJvb3QgYW5kCiAJCSAqIGl0cyBsZWF2ZXMuCiAJCSAqLwotCQlyZWxpZHMgPSBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwp OworCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmlkLAorCQkJ CQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJc2NoZW1hcmVsaWRzID0gR2V0QWxs U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FU SU9OX1BBUlRfQUxMKTsKIApAQCAtOTI5LDU1ICs5MzQsNjEgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qIEFzc29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1 YmxpY2F0aW9uLiAqLwotCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwlPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJ CQkJICAgJnNjaGVtYWlkbGlzdCk7CisKKwkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJl cyBzdXBlcnVzZXIgKi8KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOworCisJLyogQWRkIHJlbGF0aW9ucyAodGFibGVz KSB0byB0aGUgcHVibGljYXRpb24uICovCisJaWYgKHJlbGF0aW9ucyAhPSBOSUwpCiAJewogCQkv KgotCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyBy ZWJ1aWx0LiBTZXF1ZW5jZXMKLQkJICogcHVibGljYXRpb24gZG9lc24ndCByZXF1aXJlIGludmFs aWRhdGlvbiwgYXMgcmVwbGljYSBpZGVudGl0eQotCQkgKiBjaGVja3MgZG9uJ3QgYXBwbHkgdG8g dGhlbS4KKwkJICogVGhlICdyZWxhdGlvbnMnIGxpc3QgY2FuIGJlIG5vbi1lbXB0eSBpbiBvbmx5 IHR3byBjYXNlczoKKwkJICoKKwkJICogMS4gQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgVEFC TEUgSW4gdGhpcyBjYXNlLCAncmVsYXRpb25zJworCQkgKiBjb250YWlucyB0aGUgbGlzdCBvZiBz cGVjaWZpZWQgdGFibGVzLgorCQkgKgorCQkgKiAyLiBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZP UiBBTEwgVEFCTEVTIEluIHRoaXMgY2FzZSwgJ3JlbGF0aW9ucycKKwkJICogY29udGFpbnMgdGhl IGxpc3Qgb2YgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZS4KKwkJ ICogRHVyaW5nIHBhcnNpbmcsIHRoZSAnZXhjZXB0JyBmbGFnIGlzIHNldCBmb3IgdGhlIGFzc29j aWF0ZWQKKwkJICogUHVibGljYXRpb25SZWxJbmZvIG9iamVjdHMuCiAJCSAqLwotCQlDYWNoZUlu dmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1 ZW5jZXMpCi0JewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3Rz LCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOworCQlMaXN0 CSAgICpyZWxzOwogCi0JCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNl ciAqLwotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCi0JCQllcmVw b3J0KEVSUk9SLAotCQkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks Ci0JCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJMRVMgSU4g U0NIRU1BIHB1YmxpY2F0aW9uIikpOwotCi0JCWlmIChyZWxhdGlvbnMgIT0gTklMKQotCQl7Ci0J CQlMaXN0CSAgICpyZWxzOworCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOworCQlU cmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJ CQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVM aXN0KHJlbGF0aW9ucyk7Ci0JCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRl LT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwor CQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLAorCQkJCQkJ CQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAorCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCk7CiAKLQkJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUs IHJlbHMsCi0JCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAotCQkJCQkJCQkJICAgcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwotCi0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJv aWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7Ci0JCX0KKwkJ UHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJQ2xvc2VU YWJsZUxpc3QocmVscyk7CisJfQogCi0JCWlmIChzY2hlbWFpZGxpc3QgIT0gTklMKQotCQl7Ci0J CQkvKgotCQkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRpbCB0aGUgcHVibGljYXRpb24gaXMg Y3JlYXRlZCB0byBwcmV2ZW50Ci0JCQkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KLQkJ CSAqLwotCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKLQkJCVB1YmxpY2F0aW9uQWRk U2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7Ci0JCX0KKwlpZiAoc2No ZW1haWRsaXN0ICE9IE5JTCkKKwl7CisJCS8qCisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50 aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJyZW50 IHNjaGVtYSBkZWxldGlvbi4KKwkJICovCisJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7 CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVM TCk7CiAJfQogCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCWlmIChz dG10LT5mb3JfYWxsX3RhYmxlcykKKwl7CisJCS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhh dCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCisJCUNhY2hlSW52YWxpZGF0ZVJlbGNh Y2hlQWxsKCk7CisJfQorCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25S ZWxhdGlvbklkLCBwdWJvaWQsIDApOwogCiAJLyoKQEAgLTEwNTAsOCArMTA2MSw4IEBAIEFsdGVy UHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQsCiAJCUxvY2tEYXRhYmFzZU9iamVjdChQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1 YmZvcm0tPm9pZCwgMCwKIAkJCQkJCSAgIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQkJcm9vdF9yZWxp ZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSAg UFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvbklu Y2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9O X1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCiAJCXsKQEAgLTExNzAs OCArMTE4MSw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCSAqIHRyZWVzLCBub3QganVzdCB0aG9zZSBl eHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24uCiAJCSAqLwogCQlpZiAocm9v dF9yZWxpZHMgPT0gTklMKQotCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHVi Zm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQkJcmVsaWRz ID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtMTI1 Niw4ICsxMjY3LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCBy ZWxzLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJ ICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJ CQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQ dWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJCVBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxs ICAgKm9sZGxjOwogCkBAIC0xMzU4LDYgKzEzNjksNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVz KEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCW9sZHJlbCA9 IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKIAkJCQlvbGRyZWwtPndoZXJlQ2xh dXNlID0gTlVMTDsKIAkJCQlvbGRyZWwtPmNvbHVtbnMgPSBOSUw7CisJCQkJb2xkcmVsLT5leGNl cHQgPSBmYWxzZTsKIAkJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwK IAkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQkJCWRlbHJlbHMgPSBs YXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CkBAIC0xNDA4LDcgKzE0MjAsOCBAQCBBbHRlclB1Ymxp Y2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTGlzdENlbGwgICAq bGM7CiAJCUxpc3QJICAgKnJlbG9pZHM7CiAKLQkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uUmVs YXRpb25zKHB1YmZvcm0tPm9pZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcmVsb2lkcyA9 IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJlbG9pZHMpCiAJ CXsKQEAgLTE3NzEsNiArMTc4NCw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlw dWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVy ZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4 Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJl bGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE4NDMsNiArMTg1Nyw3 IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMg Y29sdW1uIGxpc3QgZnJvbSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29s dW1uczsKKwkJCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBl bmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGls ZHJlbGlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2YzBlNWM3ZS4uYTUz NTFmYzU5YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC04Njg4LDcgKzg2ODgsNyBA QCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpjb2xOYW1lLAogCSAqIGV4cHJlc3Npb25zLgogCSAqLwogCWlmIChhdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMICYmCi0JCUdldFJlbGF0aW9u UHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIE5VTEwsIE5VTEwpKQogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQkgZXJybXNnKCJBTFRFUiBUQUJMRSAvIFNFVCBFWFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0 ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gdGFibGVzIHRoYXQgYXJlIHBhcnQg b2YgYSBwdWJsaWNhdGlvbiIpLApAQCAtMTg4ODQsNyArMTg4ODQsNyBAQCBBVFByZXBDaGFuZ2VQ ZXJzaXN0ZW5jZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xv Z2dlZCkKIAkgKiBVTkxPR0dFRCwgYXMgVU5MT0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hl ZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJl bGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhS ZWxhdGlvbkdldFJlbGlkKHJlbCksIE5VTEwsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJ CSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGUgXCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2Ug aXQgaXMgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDcxM2VlNWMxMGEy Li5kM2MzZTlmNTljNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yMDMsNiArMjAzLDcgQEAgc3RhdGljIHZv aWQgcHJvY2Vzc0NBU2JpdHMoaW50IGNhc19iaXRzLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIg KmNvbnN0clR5cGUsCiBzdGF0aWMgUGFydGl0aW9uU3RyYXRlZ3kgcGFyc2VQYXJ0aXRpb25TdHJh dGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0aW9uLAogCQkJCQkJCQkJCQkJY29yZV95eXNj YW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVf bGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAorCQkJCQkJCQkJCQlMaXN0ICoqcHVib2JqZWN0 cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3Nl cXVlbmNlcywKIAkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwpAQCAtNDU1LDYg KzQ1Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25z IFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1f cmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IHB1Yl9hbGxf b2JqX3R5cGVfbGlzdAorCQkJCXB1Yl9leGNlcHRfb2JqX2xpc3Qgb3B0X3B1Yl9leGNlcHRfY2xh dXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBlIDxub2RlPgly ZXR1cm5pbmdfb3B0aW9uCkBAIC01OTIsNiArNTk0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBh dXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+ IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogJXR5cGUgPHB1YmxpY2F0aW9uYWxsb2JqZWN0c3Bl Yz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxrZXl3b3JkPiB1bnJlc2VydmVkX2tl eXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTA3OTIsNyArMTA3OTUsNyBAQCBBbHRl ck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVS IFRPIFJvbGVTcGVjCiAgKgogICogcHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgotICoJ CVRBQkxFUworICoJCVRBQkxFUyBbRVhDRVBUIFtUQUJMRV0gKCB0YWJsZSBbLCAuLi5dICldCiAg KgkJU0VRVUVOQ0VTCiAgKgogICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBwdWJfb2JqIFssIC4u Ll0gW1dJVEggb3B0aW9uc10KQEAgLTEwODE4LDcgKzEwODIxLDggQEAgQ3JlYXRlUHVibGljYXRp b25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQ dWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJcHJlcHJvY2Vz c19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPmZvcl9hbGxfdGFibGVzLAorCQkJCQlwcmVw cm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJCQkJ CQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVu Y2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJCQkJCW4tPm9wdGlvbnMgPSAkNjsKQEAg LTEwODU4LDYgKzEwODYyLDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVidGFi bGUtPnJlbGF0aW9uID0gJDI7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwogCQkJ CQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAx OwogCQkJCX0KIAkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElkCiAJCQkJewpAQCAtMTA5MzMs MTEgKzEwOTM4LDE5IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAJCQkJCXsg JCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK29wdF9wdWJfZXhjZXB0X2NsYXVzZToKKwkJ CUVYQ0VQVCBvcHRfdGFibGUgJygnIHB1Yl9leGNlcHRfb2JqX2xpc3QgJyknCXsgJCQgPSAkNDsg fQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKIFB1YmxpY2F0 aW9uQWxsT2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTCisJCQkJQUxMIFRBQkxFUyBvcHRfcHViX2V4 Y2VwdF9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbkFsbE9i alNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTl9BTExfVEFCTEVTOwor CQkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkMzsKKwkJCQkJCWlmKCQkLT5leGNlcHRfdGFibGVz ICE9IE5VTEwpCisJCQkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgkJC0+ZXhjZXB0X3RhYmxl cywgeXlzY2FubmVyKTsKIAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCQl9CiAJCQkJfCBB TEwgU0VRVUVOQ0VTCkBAIC0xMDk1NCw2ICsxMDk2NywyMyBAQCBwdWJfYWxsX29ial90eXBlX2xp c3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CiAJOwogCitQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWM6CisJCQkgcmVsYXRpb25fZXhwcgorCQkJ CXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVi b2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRTsKKwkJCQkJJCQtPnB1YnRhYmxl ID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0 ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+bG9j YXRpb24gPSBAMTsKKwkJCQl9CisJOworCitwdWJfZXhjZXB0X29ial9saXN0OiBQdWJsaWNhdGlv bkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9l eGNlcHRfb2JqX2xpc3QgJywnIFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworCQkJCQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CisJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0x OTc5NCw4ICsxOTgyNCw5IEBAIHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ks IGludCBsb2NhdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAgKiBBbHNvLCBjaGVja3Mg aWYgdGhlIHB1Yl9vYmplY3RfdHlwZSBoYXMgYmVlbiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Uu CiAgKi8KIHN0YXRpYyB2b2lkCi1wcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3Qg KmFsbF9vYmplY3RzX2xpc3QsIGJvb2wgKmFsbF90YWJsZXMsCi0JCQkJCQkJCWJvb2wgKmFsbF9z ZXF1ZW5jZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQorcHJlcHJvY2Vzc19wdWJfYWxsX29i anR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKKwkJ CQkJCQkJYm9vbCAqYWxsX3RhYmxlcywgYm9vbCAqYWxsX3NlcXVlbmNlcywKKwkJCQkJCQkJY29y ZV95eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAJaWYgKCFhbGxfb2JqZWN0c19saXN0KQogCQlyZXR1 cm47CkBAIC0xOTgxNSw2ICsxOTg0Niw3IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xp c3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgYm9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihvYmotPmxvY2F0aW9uKSk7CiAKIAkJCSphbGxfdGFibGVzID0gdHJ1ZTsK KwkJCSpwdWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3Rh Ymxlcyk7CiAJCX0KIAkJZWxzZSBpZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FM TF9TRVFVRU5DRVMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCmluZGV4IGUwMTZmNjRlMGIzLi4wNTgwMjQ4MmMxMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0yMDg4LDcgKzIwODgsNyBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAlp ZiAoIWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdldF9y ZWxfbmFtZXNwYWNlKHJlbGlkKTsKLQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocmVsaWQpOworCQlMaXN0CSAgICpwdWJpZHMgPSBOSUw7CiAKIAkJLyoKIAkJICog V2UgZG9uJ3QgYWNxdWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMg d2UgYnVpbGQKQEAgLTIxMDMsNiArMjEwMyw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQljaGFyCQlyZWxraW5kID0gZ2V0X3Jl bF9yZWxraW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKIAor CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgJnB1YmlkcywgTlVMTCk7CisKIAkJLyog UmVsb2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4gKi8KIAkJaWYgKCFwdWJs aWNhdGlvbnNfdmFsaWQpCiAJCXsKQEAgLTIyMDIsMTAgKzIyMDQsMjYgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkvKgogCQkJ ICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0 aXRpb24KIAkJCSAqIHJvb3QgYW5kIHNldCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHku CisJCQkgKgorCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIGFu ZCBpdCBoYXMgYW4gRVhDRVBUCisJCQkgKiBUQUJMRSBsaXN0OgorCQkJICoKKwkJCSAqIDEuIElm IHB1YnZpYXJvb3QgaXMgc2V0IGFuZCB0aGUgcmVsYXRpb24gaXMgYSBwYXJ0aXRpb24sIGNoZWNr CisJCQkgKiB3aGV0aGVyIHRoZSBwYXJ0aXRpb24gcm9vdCBpcyBpbmNsdWRlZCBpbiB0aGUgRVhD RVBUIFRBQkxFCisJCQkgKiBsaXN0LiBJZiBzbywgZG8gbm90IHB1Ymxpc2ggdGhlIGNoYW5nZS4K KwkJCSAqCisJCQkgKiAyLiBJZiBwdWJ2aWFyb290IGlzIG5vdCBzZXQsIGNoZWNrIHdoZXRoZXIg dGhlIHJlbGF0aW9uIGl0c2VsZgorCQkJICogaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJM RSBsaXN0LiBJZiBzbywgZG8gbm90IHB1Ymxpc2ggdGhlCisJCQkgKiBjaGFuZ2UuCisJCQkgKgor CQkJICogVGhpcyBpcyBhY2hpZXZlZCBieSBrZWVwaW5nIHRoZSB2YXJpYWJsZSAicHVibGlzaCIg c2V0IHRvCisJCQkgKiBmYWxzZS4gQW5kIGV2ZW50dWFsbHksIGVudHJ5LT5wdWJhY3Rpb25zIHdp bGwgcmVtYWluIGFsbCBmYWxzZQorCQkJICogZm9yIHRoaXMgcHVibGljYXRpb24uCiAJCQkgKi8K IAkJCWlmIChwdWItPmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKKwkJCQlM aXN0CSAgICpleGNlcHRwdWJpZHMgPSBOSUw7CisKIAkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYm IGFtX3BhcnRpdGlvbikKIAkJCQl7CiAJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKQEAgLTIyMTMsOSArMjIzMSwyMyBAQCBnZXRfcmVsX3N5 bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQkJcHVi X3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CiAJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlz dF9sZW5ndGgoYW5jZXN0b3JzKTsKIAkJCQl9Ci0JCQl9CiAKLQkJCWlmICghcHVibGlzaCkKKwkJ CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhwdWJfcmVsaWQsIE5VTEwsICZleGNlcHRwdWJpZHMp OworCisJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJ CQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIFNhbml0eSBjaGVj ayAqLworCQkJCQlBc3NlcnQoZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID09IGZhbHNlICYm CisJCQkJCQkgICBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPT0gZmFsc2UgJiYKKwkJCQkJ CSAgIGVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9PSBmYWxzZSAmJgorCQkJCQkJICAgZW50 cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPT0gZmFsc2UpOworCQkJCX0KKworCQkJCWxpc3Rf ZnJlZShleGNlcHRwdWJpZHMpOworCQkJfQorCQkJZWxzZSBpZiAoIXB1Ymxpc2gpCiAJCQl7CiAJ CQkJYm9vbAkJYW5jZXN0b3JfcHVibGlzaGVkID0gZmFsc2U7CiAKQEAgLTIyNTksNiArMjI5MSw5 IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkJICogRG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMs IGJlY2F1c2UKIAkJCSAqIHB1Ymxpc2hpbmcgdGhvc2Ugb2YgaXRzIHBhcnRpdGlvbnMgc3VmZmlj ZXMsIHVubGVzcyBwYXJ0aXRpb24KIAkJCSAqIGNoYW5nZXMgd29uJ3QgYmUgcHVibGlzaGVkIGR1 ZSB0byBwdWJ2aWFyb290IGJlaW5nIHNldC4KKwkJCSAqCisJCQkgKiBJZiB0aGUgcmVsYXRpb24g aXMgcGFydCBvZiBFWENFUFQgVEFCTEUgbGlzdCBvZiBhIHB1YmxpY2F0aW9uLAorCQkJICogdGhl ICdwdWJsaXNoJyB2YXJpYWJsZSBpcyBhbHJlYWR5IHNldCB0byBmYWxzZS4KIAkJCSAqLwogCQkJ aWYgKHB1Ymxpc2ggJiYKIAkJCQkocmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF IHx8IHB1Yi0+cHVidmlhcm9vdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2 YjYzNGM5ZmZmMS4uZGMwMjFkYmI2Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpA QCAtNTc4OCw3ICs1Nzg4LDkgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9u IHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiB7Ci0JTGlzdAkgICAqcHVib2lk czsKKwlMaXN0CSAgICpwdWJvaWRzID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHB1Ym9pZHMgPSBO SUw7CisJTGlzdAkgICAqYWxsdGFibGVzcHVib2lkczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1v cnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJCQlzY2hlbWFpZDsKQEAgLTU4MjYsNyArNTgyOCw3IEBA IFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0 aW9uRGVzYyAqcHViZGVzYykKIAlwdWJkZXNjLT5nZW5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0 cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlw dWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQpOworCUdldFJlbGF0aW9uUHVi bGljYXRpb25zKHJlbGlkLCAmcHVib2lkcywgJmV4Y2VwdHB1Ym9pZHMpOwogCXNjaGVtYWlkID0g UmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwogCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91 bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCkBA IC01ODM4LDE2ICs1ODQwLDI1IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRp b24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJZm9yZWFjaChsYywgYW5j ZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOworCQkJTGlz dAkgICAqYW5jZXN0b3JfcHVib2lkcyA9IE5JTDsKKwkJCUxpc3QJICAgKmFuY2VzdG9yX2V4Y2Vw dHB1Ym9pZHMgPSBOSUw7CiAKLQkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1 Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOwor CQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsICZhbmNlc3Rvcl9wdWJvaWRzLAor CQkJCQkJCQkJJmFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOworCisJCQlwdWJvaWRzID0gbGlzdF9j b25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBhbmNlc3Rvcl9wdWJvaWRzKTsKIAkJCXNjaGVtYWlk ID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0 X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOworCQkJZXhjZXB0cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhj ZXB0cHVib2lkcywKKwkJCQkJCQkJCQkJCSAgIGFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOwogCQl9 CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRh Ymxlc1B1YmxpY2F0aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnMoKTsKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LAorCQkJCQkJCQkJIGxpc3RfZGlmZmVyZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJ CQkJCQkJCQkJIGV4Y2VwdHB1Ym9pZHMpKTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJ T2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDJiZWJlZmQwYmEy Li44NTFhOTczNTJmNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NjQ4LDkgKzQ2NDgsNTggQEAgZ2V0UHVi bGljYXRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3B1YnZpYXJvb3QpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YmdlbmNvbHNfdHlwZSA9 CiAJCQkqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmdlbmNvbHMpKTsKKwkJcHViaW5mb1tpXS5l eGNlcHRfdGFibGVzID0gKFNpbXBsZVB0ckxpc3QpCisJCXsKKwkJCU5VTEwsIE5VTEwKKwkJfTsK IAogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVt cGFibGVPYmplY3QoJihwdWJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQkvKgorCQkgKiBHZXQg dGhlIGxpc3Qgb2YgdGFibGVzIGZvciBwdWJsaWNhdGlvbnMgc3BlY2lmaWVkIHdpdGggdGhlIEVY Q0VQVAorCQkgKiBUQUJMRSBjbGF1c2UuIFRoaXMgaXMgaW50cm9kdWNlZCBpbiBQb3N0Z3JlU1FM IDE5LgorCQkgKgorCQkgKiBFWENFUFQgVEFCTEVTIGlzIHByb2Nlc3NlZCBoZXJlIGFuZCBvdXRw dXQgZGlyZWN0bHkgYnkKKwkJICogZHVtcFB1YmxpY2F0aW9uKCkuIFRoaXMgZGlmZmVycyBmcm9t IHRoZSBhcHByb2FjaCB1c2VkIGluCisJCSAqIGR1bXBQdWJsaWNhdGlvblRhYmxlKCkgYW5kIGR1 bXBQdWJsaWNhdGlvbk5hbWVzcGFjZSgpLCBzaW5jZSB0aGF0CisJCSAqIGFwcHJvYWNoIHdvdWxk IHJlcXVpcmUgRVhDRVBUIFRBQkxFIHN1cHBvcnQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OLAorCQkg KiB3aGljaCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKwkJICovCisJCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJaW50CQkJbnRibHM7CisJCQlQR3Jlc3Vs dCAgICpyZXNfdGJsczsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCQkgICJTRUxFQ1QgcHJyZWxpZFxuIgorCQkJCQkJCSAg IkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWxcbiIKKwkJCQkJCQkgICJXSEVSRSBw cnB1YmlkID0gJXUgYW5kIHByZXhjZXB0IiwKKwkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJ ZC5vaWQpOworCisJCQlyZXNfdGJscyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0 YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJbnRibHMgPSBQUW50dXBsZXMocmVzX3RibHMpOwor CQkJaWYgKG50YmxzID09IDApCisJCQkJY29udGludWU7CisKKwkJCWZvciAoaW50IGogPSAwOyBq IDwgbnRibHM7IGorKykKKwkJCXsKKwkJCQlPaWQJCQlwcnJlbGlkOworCQkJCVRhYmxlSW5mbyAg KnRiaW5mbzsKKworCQkJCXBycmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwg MCkpOworCisJCQkJdGJpbmZvID0gZmluZFRhYmxlQnlPaWQocHJyZWxpZCk7CisJCQkJaWYgKHRi aW5mbyA9PSBOVUxMKQorCQkJCQljb250aW51ZTsKKworCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBl bmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCX0KKworCQkJUFFjbGVh cihyZXNfdGJscyk7CisJCX0KIAl9CiAKIGNsZWFudXA6CkBAIC00NjkwLDcgKzQ3MzksMjUgQEAg ZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHVi aW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVl bmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlp bnQJCQluX2V4Y2x1ZGVkID0gMDsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBG T1IgQUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0 aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2Vs bCA9IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQp CisJCXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOwor CisJCQlpZiAoKytuX2V4Y2x1ZGVkID09IDEpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgRVhDRVBUIFRBQkxFICgiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiwgIik7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIk9OTFkgJXMiLCBm bXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pKTsKKwkJfQorCQlpZiAobl9leGNsdWRlZCA+IDAp CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIikiKTsKKwl9CiAJZWxzZSBpZiAocHVi aW5mby0+cHViYWxsc2VxdWVuY2VzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBG T1IgQUxMIFNFUVVFTkNFUyIpOwogCkBAIC00ODcwLDYgKzQ5MzcsNyBAQCBnZXRQdWJsaWNhdGlv blRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVz KQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVs aWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBB UyBwcnJlbHF1YWwsICIKQEAgLTQ4ODIsNiArNDk1MCw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJ CQkJICIgICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0 cnNbc10pXG4iCiAJCQkJCQkJICIgIEVMU0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBX SEVSRSBOT1QgcHIucHJleGNlcHQiKTsKKwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlk LCAiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaAppbmRleCA0YzRiMTRlNWZjNy4uZDE0MWViNjZkMTcgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aApAQCAtNjc2LDYgKzY3Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAli b29sCQlwdWJ0cnVuY2F0ZTsKIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlw ZSBwdWJnZW5jb2xzX3R5cGU7CisJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJs aWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGE4ZGNjMmI1 Yzc1Li41NGVhZTU3N2M5MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMxNzAsNiAr MzE3MCwzNiBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9u X3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+ IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQ VUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFi bGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lU SCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkv eG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAor CX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+ IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50 ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50 ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlz aCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxp a2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwkn Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJ Y3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50 LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0g J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9 PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVB VEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVh dGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggMzU4NGM0ZTE0 MjguLjFiZmVjMGJkM2VmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzA3MywxNyArMzA3MywzNCBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAg ICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3Nd KVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgot CQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIu cHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJ CQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBw ci5wcnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04g Yy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMn XG4iLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24g Pj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIu cHJleGNlcHRcbiIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAi VU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAs IE5VTExcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExc biIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBn X3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBn X2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAi T1JERVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAg IldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxp c2hhYmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lv biA+PSAxOTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIg ICAgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJ CQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJ CQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04g cHIucHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0g JyVzJyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxz ZQogCQkJewpAQCAtMzEzNCw2ICszMTUxLDM1IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlQUWNsZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQ cmludCBwdWJsaWNhdGlvbnMgdGhhdCB0aGUgdGFibGUgaXMgZXhwbGljaXRseSBleGNsdWRlZCBm cm9tICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJ CQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJ CSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEp OworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJ dHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXBy aW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIkV4Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJ CQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7 IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAg IFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRk Rm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0K KwogCQkvKgogCQkgKiBJZiB2ZXJib3NlLCBwcmludCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJ ICovCkBAIC02NzUzLDggKzY3OTksMTIgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVs IHByXG4iCiAJCQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJ CSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHVi aWQgPSAnJXMnXG4iCi0JCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAg IiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iLCBwdWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE5MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHBy LnByZXhjZXB0XG4iKTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEs MiIpOwogCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6 IiksIGZhbHNlLCAmY29udCkpCiAJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKQEAgLTY3NzIsNiAr NjgyMiwyMyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJ CQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0 LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgdGhlIGV4Y2x1ZGVkIHRhYmxl cyBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCQkJCQkJCSAgIlNFTEVDVCBjb25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVz cGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4iCisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJw dWJpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiICBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJ ICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25E ZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkp CisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJfQorCQl9CiAKIAkJcHJpbnRUYWJsZSgmY29u dCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xl YW51cCgmY29udCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOGI5MWJjMDAwNjIuLjM5NDA0 ZWEwZjY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNjY5LDcgKzM2NjksMTcgQEAgbWF0 Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JF QVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJCUNPTVBMRVRF X1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIikpCi0JCUNP TVBMRVRFX1dJVEgoIldJVEggKCIpOworCQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUgKCIs ICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9X SVRIKCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSkK KwkJQ09NUExFVEVfV0lUSCgiKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRB QkxFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rf b2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwg TWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVT IiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZf d2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExF VEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0 aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDM2 OGJlY2NhODk5Li41MTI2Yzk5NmZmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aApAQCAtMTQ2LDE0ICsxNDYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZv CiAJUmVsYXRpb24JcmVsYXRpb247CiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAq Y29sdW1uczsKKwlib29sCQlleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJu IFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0 aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Np bmdfb2spOwotZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7 CitleHRlcm4gYm9vbCBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipw dWJpZHMsIExpc3QgKipleGNlcHRfcHViaWRzKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVk IHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRp b25zKCksCisgKiBFeHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZgor ICogR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucygpLCBhbmQgR2V0QWxsUHVibGljYXRp b25FeGNsdWRlZFRhYmxlcygpLAogICogd2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3 aGljaCBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlcwogICogbWVudGlvbmVkIGluIHRo ZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVjdCB0byBzZWUuCiAgKgpAQCAtMTY4LDkgKzE3MCwxMiBA QCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEws CiB9IFB1YmxpY2F0aW9uUGFydE9wdDsKIAotZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVy biBMaXN0ICpHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJ CQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0 QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1 YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKTsKIGV4dGVy biBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpH ZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hl bWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbl9yZWwuaAppbmRleCAzYTg3OTBlODQ4Mi4uZTNjY2JhNWVjNzkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEsNiArMzEsNyBAQCBD QVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkK IAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1 YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQg QktJX0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlw cmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIAogI2lm ZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJl ICovCiAJcGdfbm9kZV90cmVlIHBycXVhbDsJCS8qIHF1YWxpZmljYXRpb25zICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggNjQ2ZDZjZWQ3NjMuLjUyODI0MjViNGRkIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCkBAIC00MzAwLDYgKzQzMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv blRhYmxlCiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNo ZWQgKi8KIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0 CSAgICpjb2x1bW5zOwkJLyogTGlzdCBvZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUg Ki8KKwlib29sCQlleGNlcHQ7CQkJLyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIH0gUHVibGlj YXRpb25UYWJsZTsKIAogLyoKQEAgLTQzMDgsNiArNDMwOSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uVGFibGUKIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJ UFVCTElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCisJUFVCTElDQVRJT05PQkpfRVhD RVBUX1RBQkxFLAkvKiBBIHRhYmxlIHRvIGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpf VEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElP Tk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50 IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCkBAIC00MzM2LDYgKzQzMzgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkFsbE9ialNwZWMKIHsKIAlOb2RlVGFnCQl0eXBlOwog CVB1YmxpY2F0aW9uQWxsT2JqVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGlj YXRpb24gb2JqZWN0ICovCisJTGlzdAkgICAqZXhjZXB0X3RhYmxlczsJLyogTGlzdCBvZiB0YWJs ZXMgdG8gYmUgZXhjbHVkZWQgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA3ZmI0OWFhZjI5Yi4u YjIxMTVlZGIzYzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC0yMTMsMzMgKzIxMywxMDQgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKICgx IHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVz dHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsK LUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3Ri bDMpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOworLS0gRXhjbHVkZSB0YWJsZXMg dXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1 bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgor ICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCist LSBFeGNsdWRlIHRhYmxlcyB1c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9S IEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1 YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9u IHNob3dzIHRoZSBwdWJsaWNhdGlvbiBsaXN0IHRoZSB0YWJsZSBpcworLS0gZXhjbHVkZWQgZnJv bQorXGQgdGVzdHB1Yl90YmwxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZXN0cHViX3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJfdGJsMV9pZF9zZXEnOjpyZWdjbGFzcykKKyBkYXRhICAg fCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3Rw dWJfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorUHVibGljYXRpb25zOgorICAg ICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKK0V4Y2VwdCBQdWJsaWNhdGlvbnM6CisgICAgInRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZTEiCisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRl c3RwdWJfdGJsMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3Rw dWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUxOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JF QVRFIFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3Ri bF9wYXJlbnQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0 ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMiCi0gICAgInB1Ymxp Yy50ZXN0cHViX3RibDNhIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1 YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBG T1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViNAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjQKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJs ZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9w YXJlbnQiCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CistLSBFeGNsdWRlIHBhcmVudCB0YWJsZSwg b21pdHRpbmcgYm90aCBvZiAnT05MWScgYW5kICcqJworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWI1IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1xk UnArIHRlc3RwdWI1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9j aGlsZCIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGgg JyonOiBleGNsdWRlIHRhYmxlIGFuZCBhbGwgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVu dCAqKTsKK1xkUnArIHRlc3RwdWI2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0 cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhD RVBUIHdpdGggT05MWTogZXhjbHVkZSB0YWJsZSBidXQgbm90IGRlc2NlbmRhbnRzCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRl c3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjcKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAg ICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOworRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVz dHB1Yjc7CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRF IFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVn cmVzc19wdWJfc2VxMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA4NWIw MGJkNjdjOC4uNTIyNGRhOTNkNzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK QEAgLTEwNSwyMCArMTA1LDQxIEBAIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBw Z19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsCiBcZCsgdGVzdHB1 Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJf dGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlCistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxl bGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlw dGlvbiBzaG93cyB0aGUgcHVibGljYXRpb24gbGlzdCB0aGUgdGFibGUgaXMKKy0tIGV4Y2x1ZGVk IGZyb20KK1xkIHRlc3RwdWJfdGJsMQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJf Zm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0 dGFibGUxOwogCi1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHVi X3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi MyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZP UiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsK IFxkUnArIHRlc3RwdWIzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9O TFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIEV4Y2x1ZGUgcGFyZW50 IHRhYmxlLCBvbWl0dGluZyBib3RoIG9mICdPTkxZJyBhbmQgJyonCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJl bnQpOworXGRScCsgdGVzdHB1YjUKKy0tIEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJsZSBh bmQgYWxsIGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHVi NgorLS0gRVhDRVBUIHdpdGggT05MWTogZXhjbHVkZSB0YWJsZSBidXQgbm90IGRlc2NlbmRhbnRz CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNwogCi1EUk9QIFRBQkxF IHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMs IHRlc3RwdWI0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1 Yl90YmxfcGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1 YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OwogCiAtLS0gVGVzdHMg Zm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3Nf cHViX3NlcTA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXggYTRjN2RiYWZmNTkuLjA3 MjgyYWEzYzE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBA IHRlc3RzICs9IHsKICAgICAgICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29u ZmxpY3RzLnBsJywKICAgICAgICd0LzAzNl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X3Jl cF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAg XSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2No YW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi45NTkwNGRkZDAwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKQEAgLTAsMCArMSwyMzggQEAKKwor IyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVi bGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlz aGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKKyMgSW5pdGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNj cmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRu b2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5v ZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMgZm9yIG5vcm1hbCB0YWJs ZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ3Jl YXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUg VEFCTEUgc2NoMS50YWIxIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKykp OworCisjIENyZWF0ZSBzY2hlbWFzIGFuZCB0YWJsZXMgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2No MTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCk7CispKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnRhYjEpIgorKTsKKyMgQ3JlYXRlIGEgbG9naWNh bCByZXBsaWNhdGlvbiBzbG90Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90 JywgJ3Bnb3V0cHV0JykiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSIKKyk7CisKKyMgV2Fp dCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAorCSd0YXBfc3ViX3NjaGVt YScpOworCisjIENoZWNrIHRoZSB0YWJsZSBkYXRhIGRvZXMgbm90IHN5bmMgZm9yIGV4Y2x1ZGVk IHRhYmxlCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDB8fCksCisJJ2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBj b3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0YWJsZScpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRl X3NlcmllcygxMSwyMCkpIik7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byBleGNs dWRlZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJv dG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9zdWJfc2NoZW1hJyki CispOworaXMoJHJlc3VsdCwgcXEodCksICdjaGVjayBubyBjaGFuZ2VzIGZvciBleGNsdWRlZCB0 YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90Jyk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVk IHRvIHRoZSBleGNsdWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZC4KKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBt aW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2No ZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CisKKyMgY2xlYW51cAorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFw X3B1Yl9zY2hlbWEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEiKTsKKworIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBm b3IgcGFydGl0aW9uZWQgdGFibGVzCisjIENoZWNrIGJlaGF2aW9yIG9mIEVYQ0VQVCBUQUJMRSB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9uIGEKKyMgcGFydGl0aW9uZWQgdGFibGUg YW5kIGl0cyBwYXJ0aXRpb25zLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBTZXR1cCBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgcGFydGl0aW9ucyBvbiB0 aGUgcHVibGlzaGVyIHRoYXQgbWFwIHRvIG5vcm1hbAorIyB0YWJsZXMgb24gdGhlIHN1YnNjcmli ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFU RSBUQUJMRSBzY2gxLnQxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRB QkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoNSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDIgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9S IFZBTFVFUyBGUk9NICg2KSBUTyAoMTApOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShhIGludCk7CisJ Q1JFQVRFIFRBQkxFIHNjaDEucGFydDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQy KGEgaW50KTsKKykpOworCisjIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgd2l0aCBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlCisjIEV4Y2x1ZGluZyBhIHBhcnRpdGlvbiB3aGls ZSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlIHByZXZlbnRzCisjIHJlcGxpY2F0 aW9uIG9mIHJvd3MgaW5zZXJ0ZWQgaW50byB0aGUgcGFydGl0aW9uZWQgdGFibGUgZm9yIHRoYXQg cGFydGljdWxhcgorIyBwYXJ0aXRpb24uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSBmYWxzZSk7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEpLCAoNik7 CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIn IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEu dDEgVkFMVUVTICgyKSwgKDcpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCd0YXBfc3ViX3BhcnQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFy dDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIGV4Y2x1ZGVkIHBhcnRpdGlv bicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCAkcmVzdWx0LCBxcSg2Cis3KSwgJ2No ZWNrIHJvd3Mgb24gb3RoZXIgcGFydGl0aW9uJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBzY2gxLnQxIik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9w dWJfcGFydDsiKTsKKworIyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIHdpdGggcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSBmYWxzZQorIyBFeGNsdWRpbmcgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IHN0aWxsIGFsbG93cyByb3dzIGluc2VydGVkIGludG8gdGhlCisjIHBhcnRpdGlvbmVkIHRhYmxl IHRvIGJlIHJlcGxpY2F0ZWQgdmlhIGl0cyBwYXJ0aXRpb25zLgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEggKHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVT ICgxKSwgKDYpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9w YXJ0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJl c3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSBzY2gxLnBhcnQxIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiksICdjaGVjayByb3dzIG9uIGZp cnN0IHBhcnRpdGlvbicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCAkcmVzdWx0LCBx cSg2Cis3KSwgJ2NoZWNrIHJvd3Mgb24gc2Vjb25kIHBhcnRpdGlvbicpOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgc2NoMS50MSIpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9w YXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJM SUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZh bmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorKTsKKworIyBFWENFUFQg VEFCTEUgKHNjaDEudDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlCisj IFdoZW4gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIGV4Y2x1ZGVkIGFuZCBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCBpcyB0cnVlLAorIyBubyByb3dzIGZyb20gdGhlIHRhYmxlIG9yIGl0cyBw YXJ0aXRpb25zIGFyZSByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMSksICg2KTsKKykpOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJ T04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMg KDIpLCAoNyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJf cGFydCcpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBhcnRpdGlvbmVk IHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcworIyBleGNsdWRlZCB3aXRoIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9n aWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3By b3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIK Kyk7CitpcygkcmVzdWx0LCBxcSh0KSwgJ2NoZWNrIG5vIGNoYW5nZXMgZm9yIGV4Y2x1ZGVkIHRh YmxlIGluIHJlcGxpY2F0aW9uIHNsb3QnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworCiskcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9N IHNjaDEucGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIGZpcnN0IHBh cnRpdGlvbicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdj aGVjayByb3dzIG9uIHNlY29uZCBwYXJ0aXRpb24nKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0OyIpOworCisjIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgd2l0aCBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUKKyMgV2hlbiBhIHBhcnRpdGlvbiBpcyBleGNsdWRl ZCBidXQgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgdHJ1ZSwKKyMgcm93cyBwdWJsaXNo ZWQgdGhyb3VnaCB0aGUgcGFydGl0aW9uZWQgdGFibGUgY2FuIHN0aWxsIGJlIHJlcGxpY2F0ZWQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2No MS5wYXJ0MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOworCUlOU0VSVCBJTlRP IHNjaDEudDEgVkFMVUVTICgxKSwgKDYpCispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKyk7Cisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNo ZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBz Y2gxLnQxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyCis2Cis3KSwgJ2NoZWNr IHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7Citp cygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBleGNsdWRlZCBwYXJ0aXRpb24nKTsKKwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQyIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBv dGhlciBwYXJ0aXRpb24nKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5v ZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4w Cgo= --0000000000009403bb0649884659--