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 1w5O4E-003CNM-0e for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 13:14:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5O4C-00E355-1H for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 13:14:36 +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 1w5O4B-00E34w-1C for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 13:14:36 +0000 Received: from mail-oo1-xc32.google.com ([2607:f8b0:4864:20::c32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5O44-00000000yDW-2gqX for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 13:14:34 +0000 Received: by mail-oo1-xc32.google.com with SMTP id 006d021491bc7-67bbea1e090so3616814eaf.3 for ; Wed, 25 Mar 2026 06:14:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774444468; cv=none; d=google.com; s=arc-20240605; b=I2bGj9AF7iv4oQWZkKCVvjNWPk7HqRQwxUZNXgM+B42bzbKlVpFkBqRkFO5wwoF/Mz Yl0H75k1sJoKqDmcW9BSmi8LXZKAlrhvkrj6w3OJhXdw7+5lPcY+e9RgqrGt6wooz6V4 /zNR5HDcpNq33UswZPFI1CNrEWkU089v24U77xBk1GZUPJy8aP8VT6maW6lvVsKgFu/B KNmbtV1Jvq3K86EI+rhN/nCsapPWeg26nXyxBfIwrB8khySDk3XNC8lQjZTZJAjIeMtx nZpnZxYAAFUJJqA+XLotLuQL6e8pyOwzz+7QFTCJNdQRDO/XhQBV2hlS5pUKLU0V9gXH d/fw== 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=xdEAnh8UxDS6NxIXJvttM8z7GyUHoqjWTG4KLRPaNY4=; fh=grhKBIyZf5Abokj0RoBUDmNayXGwq2opuewmHLZ7rr0=; b=Y2XNuuhEiGsS/KCmRW+/InzSFola20byOpufAOw4ZrphxvHO2sdIHW9R1EClSB+bUf WM/6gFU+Mgse3Nzk3vguN0sS6TW2LpWkfaCwjHpms3IgwVwV61B++M/m6DcOChpim0a2 cBaF+WBLja3Zj/rqsv0kSoaBe4XHx1pmMH2c1HSCnp1lgJalaESPorODVyOL7pVVwjzd WGmZylX+XmUv1aSDcmjnTcgAj2bcEU0nzxmB0Vd1be2kENvBQ0xK06LjRD0VIScvL2is M4c9U2pId64iI4kS1mExEQzXwyFbktWtNADhMpGEafzipQ3u75QqPoPYXoDOCcAInK3d 1VSA==; 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=20251104; t=1774444468; x=1775049268; 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=xdEAnh8UxDS6NxIXJvttM8z7GyUHoqjWTG4KLRPaNY4=; b=RzIuzHstdv8p95hg34tWU/6qWRRACA79eqBC+zYipgCz1m1Uzwx8OfVTlxw2JkSdAr 7X1nJiCZQ9NgiwDhspUIiyvpxp/5ppzoeCEDTc922IgPzU/78pAb2/ubnatIIV/Lea0d 6heAsueACKm5GINolqKqCACD0/nFVQgXRtTiji957RZqVhLlEG3beJrVR8ohewKS6YXH 0Ql8gDF3nfp9oNo5YPo/BJOSBnxcRnDkJTDHlh7GCxay6cwPquwT3hPJ00XINhttAHH/ IHs05h4F6+DD57oNiBOckhpIjJ8fpjTOeBA3g8mmVGiDCZMtgxLaRyYBF6FavmYEnGGs kRNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774444468; x=1775049268; 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=xdEAnh8UxDS6NxIXJvttM8z7GyUHoqjWTG4KLRPaNY4=; b=gBwHEwM4bE2v8EHZgNGzzguIrQRY6TseBvkn+XRLT31vn2SEymNpdZfnlrkkLVYFdi 5y1WB2gGZNRBWPk2jPOFVumCARV5lraKxlLohDbppw2Eb8UWN31cfjH7zmlttvtziMec NVS2kQl3G5rUYy7xXKIoiXZxqvUlAYWaCFuFkdEHVtQjfu1+UbMbaSDI3Fx4fgFtc+4E g00ZooY/R4+aKfsNsFJYU3Xatcj50lbrROygRWqHtqq6cgLUOXpSGyf1cZfuUQ05I7d+ rJcafws3KKmIKQRLQQLqggvEbmqYDO8sZ51/KFy2kxD4RF6rlDOUKoobM/vB8cQW7RSl 5PzQ== X-Forwarded-Encrypted: i=1; AJvYcCUDPKbdGYK971wc5HQF6MME3g1Baj1nvDG22EoIhQAJ9hbKaYYOa9vZNKx6gMC9GGhMDFKTywKs7H0vXCr2@lists.postgresql.org X-Gm-Message-State: AOJu0YwyZuGS9Y41oOw9WX5Dxy1VjwYsNooqTcOoU8S0Bhaej4YZn1ff R1Ri6VnJWzXJfdea9iu+4wLCpZClJESlVPq3EG+xTxHeytG2gkXMBqsCswr8CUW/GF5hz+AlUZ7 RbtWtWBdZu1uplPly8E8ksoA/lu753aA= X-Gm-Gg: ATEYQzyTPotvviDll24WmxjOkyQyPPyDVQhEH2KF8d7wsu6aQYnDg9o/gK8W7SoHiqY qpSiNAVYCul/E+kNmuVO9hJPbC1QLrXgcr5E1wM7d8pRS+BNwOcj+6P83lb1FFVMDF9JkAAORcg Np2uXA+csa7TixggzFZVeFFdTOzxQCZk0rUwEbChbYxJuuZu8NuNucMsl9oI1iaMmhUYmcqez+h CEsrm2K29GQXavF5q2UoBxtnzuKPgM4hvTimSuaN9kE2QvQa1WmvBTVS44fD9qn5jl1Dfd0tOif xe2qPclVFKWxh71Ajmc78f5VlV+bTK6J1mdcj22GgYqurYC1RBw1eKA5EEATbW/C5chC5pMyA5p mn+Zqgo5O6dPDSyGHD6Sh39OQvfbFcr7ZCJ/gvx6Eag2pUtBGEeESqxwWFSsh+kw63eOI+xt4yl ZPoOROKt+P7+xxyEGPa1o= X-Received: by 2002:a05:6820:4dc2:b0:67c:29e6:a4f with SMTP id 006d021491bc7-67dff58016emr1891481eaf.66.1774444467774; Wed, 25 Mar 2026 06:14:27 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> In-Reply-To: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> From: jian he Date: Wed, 25 Mar 2026 21:13:49 +0800 X-Gm-Features: AQROBzBhsjCRAXqHnMI4r-uZQyrdI1utzCBZikQaWjN339rs2r6HL-uakQ-uCBU Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Peter Eisentraut Cc: Corey Huinker , Amul Sul , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002d5ce0064dd90c3e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002d5ce0064dd90c3e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 24, 2026 at 9:13=E2=80=AFPM Peter Eisentraut wrote: > > In patch 0012, I did not apply the changes involving > float_*flow_error() in dtof(). These should be considered together > with the error handling changes in patch 0018 (about which below). > > Patch 0004 is probably ok, I just need to study a bit more, since it's > a bit different from the other ones. > > In the comment for patch 0008 you write that supporting soft errors in > int4_cash() is not easy. I suppose this is because of the external > function call to int8mul()? Maybe that was necessary in ancient > times, but int8mul() is nowadays just a fmgr wrapper around > pg_mul_s64_overflow(), which you can call directly in int4_cash(), and > then it should be easy. > cash_numeric is not easy to refactor safely, To do this, we have to refactor (numeric_round, numeric_div), which will require refactoring more functions. So CoercionErrorSafe_Internal still checks whether the source element/base type is MONEYOID. > About patch 0017 (jsonb): Calling ereturn() in a function that returns > void, well, you make that work, but it seems a bit weird. Maybe > cannotCastJsonbValue() could be changed to return a dummy datum, and > then you could just call it like > > return cannotCastJsonbValue(...); > ok. > Similarly, about patch 0018 (refactor float error): I think this is a > fragile API. float_overflow_error() now will either ereport or just > errsave. But nothing enforces that callers do the right thing. For > example, in patch 0019, you change float_zero_divide_error(NULL) to > float_zero_divide_error(escontext), but don't insert a return, so the > code will continue to perform the division. Similar to patch 0017, > maybe these functions should be changed to have a non-void return > value. Or maybe make separate functions to be used in places where we > want soft error handling. > Add argument to float_overflow_error, extern void float_underflow_error, float_zero_divide_error requires extensive refactoring. So I have added +extern float8 float_overflow_error_ext(struct Node *escontext); +extern float8 float_underflow_error_ext(struct Node *escontext); +extern float8 float_zero_divide_error_ext(struct Node *escontext); > In the comment for patch 0021 you write that the function casting type > circle to type polygon cannot be error safe, because it's a SQL > language function. I suggest to convert this to a C function and make > the required changes there. > Please see 007. Now with this entire v24 patchset, the only built-in cast function that is not error safe is numeric_cash. I'll think about CREATE CAST ... WITH SAFE FUNCTION syntax, later. Right now, I am still using CoercionErrorSafe_Internal to check if CAST DEF= AULT can be applied to this combination of source type and target type. -- jian https://www.enterprisedb.com/ --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0008-error-safe-for-casting-money-data-type.patch" Content-Disposition: attachment; filename="v24-0008-error-safe-for-casting-money-data-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxc93 RnJvbSAxMWU4ZGY2YzM5M2I4ODZhYzQ0NmYyZmQ5YmUzNWI2MzY3YzdiMjQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTk6MTI6MTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA4LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgbW9uZXkgZGF0YSB0eXBlCgpOT1RFOiBjYXN0 aW5nIGZyb20gbW9uZXkgZGF0YSB0eXBlIGlzIG5vdCBlcnJvciBzYWZlLCBzaW5jZSBjYXNoX251 bWVyaWMgaXMgbm90CmVycm9yIHNhZmUuCgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2Fz dHRhcmdldDo6cmVndHlwZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnBy b3NyYywgcHAucHJvbmFtZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9p ZCA9IHBjLmNhc3RmdW5jIGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3R0YXJnZXQ6OnJlZ3R5 cGUgPSAnbW9uZXknOjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2Fz dHNvdXJjZSB8IGNhc3R0YXJnZXQgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhv ZCB8ICAgIHByb3NyYyAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LQogYmlnaW50ICAgICB8IG1vbmV5ICAgICAgfCAgICAgMzgxMiB8IGEgICAgICAgICAgIHwgZiAg ICAgICAgICB8IGludDhfY2FzaCAgICB8IG1vbmV5CiBpbnRlZ2VyICAgIHwgbW9uZXkgICAgICB8 ICAgICAzODExIHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgaW50NF9jYXNoICAgIHwgbW9u ZXkKIG51bWVyaWMgICAgfCBtb25leSAgICAgIHwgICAgIDM4MjQgfCBhICAgICAgICAgICB8IGYg ICAgICAgICAgfCBudW1lcmljX2Nhc2ggfCBtb25leQooMyByb3dzKQoKQXV0aG9yOiBqaWFuIGhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhR QG1haWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3Fs Lm9yZy9wYXRjaC81OTQxCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYyB8IDI4ICsr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25z KCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9j YXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCmluZGV4IDYyM2Y2ZWVjMDU2Li5m MDQ4N2E2MGYwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs dWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRl ICJub2Rlcy9taXNjbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2Nhc2guaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgpAQCAtMTEwNiwxMiAr MTEwNywxMiBAQCBjYXNoX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBudW1lcmlj X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlEYXR1bQkJYW1vdW50ID0gUEdfR0VUQVJHX0RB VFVNKDApOworCU51bWVyaWMJCWFtb3VudCA9IFBHX0dFVEFSR19OVU1FUklDKDApOwogCUNhc2gJ CXJlc3VsdDsKIAlpbnQJCQlmcG9pbnQ7CiAJaW50NjQJCXNjYWxlOwogCWludAkJCWk7Ci0JRGF0 dW0JCW51bWVyaWNfc2NhbGU7CisJTnVtZXJpYwkJbnVtZXJpY19zY2FsZTsKIAlzdHJ1Y3QgbGNv bnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKIAkvKiBzZWUgY29tbWVudHMgYWJv dXQgZnJhY19kaWdpdHMgaW4gY2FzaF9pbigpICovCkBAIC0xMTI1LDExICsxMTI2LDE2IEBAIG51 bWVyaWNfY2FzaChQR19GVU5DVElPTl9BUkdTKQogCQlzY2FsZSAqPSAxMDsKIAogCS8qIG11bHRp cGx5IHRoZSBpbnB1dCBhbW91bnQgYnkgc2NhbGUgZmFjdG9yICovCi0JbnVtZXJpY19zY2FsZSA9 IE51bWVyaWNHZXREYXR1bShpbnQ2NF90b19udW1lcmljKHNjYWxlKSk7Ci0JYW1vdW50ID0gRGly ZWN0RnVuY3Rpb25DYWxsMihudW1lcmljX211bCwgYW1vdW50LCBudW1lcmljX3NjYWxlKTsKKwlu dW1lcmljX3NjYWxlID0gaW50NjRfdG9fbnVtZXJpYyhzY2FsZSk7CisKKwlhbW91bnQgPSBudW1l cmljX211bF9zYWZlKGFtb3VudCwgbnVtZXJpY19zY2FsZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlp ZiAodW5saWtlbHkoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKSkKKwkJUEdf UkVUVVJOX05VTEwoKTsKIAogCS8qIG5vdGUgdGhhdCBudW1lcmljX2ludDggd2lsbCByb3VuZCB0 byBuZWFyZXN0IGludGVnZXIgZm9yIHVzICovCi0JcmVzdWx0ID0gRGF0dW1HZXRJbnQ2NChEaXJl Y3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50OCwgYW1vdW50KSk7CisJcmVzdWx0ID0gbnVtZXJp Y19pbnQ4X3NhZmUoYW1vdW50LCBmY2luZm8tPmNvbnRleHQpOworCWlmICh1bmxpa2VseShTT0ZU X0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpKQorCQlQR19SRVRVUk5fTlVMTCgpOwog CiAJUEdfUkVUVVJOX0NBU0gocmVzdWx0KTsKIH0KQEAgLTExNTgsOCArMTE2NCwxMCBAQCBpbnQ0 X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAkJc2NhbGUgKj0gMTA7CiAKIAkvKiBjb21wdXRlIGFt b3VudCAqIHNjYWxlLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cgKi8KLQlyZXN1bHQgPSBEYXR1bUdl dEludDY0KERpcmVjdEZ1bmN0aW9uQ2FsbDIoaW50OG11bCwgSW50NjRHZXREYXR1bShhbW91bnQp LAotCQkJCQkJCQkJCQkgICBJbnQ2NEdldERhdHVtKHNjYWxlKSkpOworCWlmICh1bmxpa2VseShw Z19tdWxfczY0X292ZXJmbG93KGFtb3VudCwgc2NhbGUsICZyZXN1bHQpKSkKKwkJZXJldHVybihm Y2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKKwkJCQllcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19W QUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCWVycm1zZygiYmlnaW50IG91dCBvZiByYW5nZSIpKTsK IAogCVBHX1JFVFVSTl9DQVNIKHJlc3VsdCk7CiB9CkBAIC0xMTg4LDggKzExOTYsMTAgQEAgaW50 OF9jYXNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXNjYWxlICo9IDEwOwogCiAJLyogY29tcHV0ZSBh bW91bnQgKiBzY2FsZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93ICovCi0JcmVzdWx0ID0gRGF0dW1H ZXRJbnQ2NChEaXJlY3RGdW5jdGlvbkNhbGwyKGludDhtdWwsIEludDY0R2V0RGF0dW0oYW1vdW50 KSwKLQkJCQkJCQkJCQkJICAgSW50NjRHZXREYXR1bShzY2FsZSkpKTsKKwlpZiAodW5saWtlbHko cGdfbXVsX3M2NF9vdmVyZmxvdyhhbW91bnQsIHNjYWxlLCAmcmVzdWx0KSkpCisJCWVyZXR1cm4o ZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNf VkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCQllcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSk7 CiAKIAlQR19SRVRVUk5fQ0FTSChyZXN1bHQpOwogfQotLSAKMi4zNC4xCgo= --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0005-refactor-point_dt.patch" Content-Disposition: attachment; filename="v24-0005-refactor-point_dt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxc11 RnJvbSAzNDVmYTRhZmM4OGE3NzA2YzU0YTE2YTUwNDdjYjdhYTc3N2VjZGEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTA6MTg6MDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA1LzldIHJlZmFjdG9yIHBvaW50X2R0CgpSZWZhY3RvciBwb2ludF9kdCB0byBiZSBlcnJvci1z YWZlIGZvciBhbiB1cGNvbWluZyBwYXRjaCB1c2UuICBOb3RlIGZvciBmdXR1cmUKd29yazogbHNl Z19jZW50ZXIsIHBhdGhfcG9seSwgYm94X2NlbnRlciwgYm94X2NpcmNsZSwgcG9seV9jZW50ZXIs IHBvbHlfY2lyY2xlLAphbmQgY2lyY2xlX2JveCB3aWxsIG5lZWQgZXJyb3Itc2FmZQoKQXV0aG9y OiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbXVs IFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5k cmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5r ZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFK Zlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQpD b21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0MQot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgfCA3OSArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAzMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYwppbmRleCBiZmI0ODU5YjRjYi4uMzUw ZTg2ZjYzNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYwpAQCAtODIsNyArODIsNyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgcG9pbnRfc3ViX3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEs IFBvaW50ICpwdDIpOwogc3RhdGljIGlubGluZSB2b2lkIHBvaW50X211bF9wb2ludChQb2ludCAq cmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lu dF9kaXZfcG9pbnQoUG9pbnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CiBzdGF0 aWMgaW5saW5lIGJvb2wgcG9pbnRfZXFfcG9pbnQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7Ci1z dGF0aWMgaW5saW5lIGZsb2F0OCBwb2ludF9kdChQb2ludCAqcHQxLCBQb2ludCAqcHQyKTsKK3N0 YXRpYyBpbmxpbmUgZmxvYXQ4IHBvaW50X2R0KFBvaW50ICpwdDEsIFBvaW50ICpwdDIsIE5vZGUg KmVzY29udGV4dCk7CiBzdGF0aWMgaW5saW5lIGZsb2F0OCBwb2ludF9zbChQb2ludCAqcHQxLCBQ b2ludCAqcHQyKTsKIHN0YXRpYyBpbnQJcG9pbnRfaW5zaWRlKFBvaW50ICpwLCBpbnQgbnB0cywg UG9pbnQgKnBsaXN0KTsKIApAQCAtODM5LDcgKzgzOSw3IEBAIGJveF9kaXN0YW5jZShQR19GVU5D VElPTl9BUkdTKQogCWJveF9jbigmYSwgYm94MSk7CiAJYm94X2NuKCZiLCBib3gyKTsKIAotCVBH X1JFVFVSTl9GTE9BVDgocG9pbnRfZHQoJmEsICZiKSk7CisJUEdfUkVUVVJOX0ZMT0FUOChwb2lu dF9kdCgmYSwgJmIsIE5VTEwpKTsKIH0KIAogCkBAIC0xODA4LDcgKzE4MDgsOCBAQCBwYXRoX2xl bmd0aChQR19GVU5DVElPTl9BUkdTKQogCQkJaXByZXYgPSBwYXRoLT5ucHRzIC0gMTsgLyogaW5j bHVkZSB0aGUgY2xvc3VyZSBzZWdtZW50ICovCiAJCX0KIAotCQlyZXN1bHQgPSBmbG9hdDhfcGwo cmVzdWx0LCBwb2ludF9kdCgmcGF0aC0+cFtpcHJldl0sICZwYXRoLT5wW2ldKSk7CisJCXJlc3Vs dCA9IGZsb2F0OF9wbChyZXN1bHQsCisJCQkJCQkgICBwb2ludF9kdCgmcGF0aC0+cFtpcHJldl0s ICZwYXRoLT5wW2ldLCBOVUxMKSk7CiAJfQogCiAJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwpA QCAtMTk5NSwxMyArMTk5NiwyNCBAQCBwb2ludF9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKQog CVBvaW50CSAgICpwdDEgPSBQR19HRVRBUkdfUE9JTlRfUCgwKTsKIAlQb2ludAkgICAqcHQyID0g UEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KHB0MSwg cHQyKSk7CisJUEdfUkVUVVJOX0ZMT0FUOChwb2ludF9kdChwdDEsIHB0MiwgTlVMTCkpOwogfQog CiBzdGF0aWMgaW5saW5lIGZsb2F0OAotcG9pbnRfZHQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0MikK K3BvaW50X2R0KFBvaW50ICpwdDEsIFBvaW50ICpwdDIsIE5vZGUgKmVzY29udGV4dCkKIHsKLQly ZXR1cm4gaHlwb3QoZmxvYXQ4X21pKHB0MS0+eCwgcHQyLT54KSwgZmxvYXQ4X21pKHB0MS0+eSwg cHQyLT55KSk7CisJZmxvYXQ4CQl4OworCWZsb2F0OAkJeTsKKworCXggPSBmbG9hdDhfbWlfc2Fm ZShwdDEtPngsIHB0Mi0+eCwgZXNjb250ZXh0KTsKKwlpZiAodW5saWtlbHkoU09GVF9FUlJPUl9P Q0NVUlJFRChlc2NvbnRleHQpKSkKKwkJcmV0dXJuIDAuMDsKKworCXkgPSBmbG9hdDhfbWlfc2Fm ZShwdDEtPnksIHB0Mi0+eSwgZXNjb250ZXh0KTsKKwlpZiAodW5saWtlbHkoU09GVF9FUlJPUl9P Q0NVUlJFRChlc2NvbnRleHQpKSkKKwkJcmV0dXJuIDAuMDsKKworCXJldHVybiBoeXBvdCh4LCB5 KTsKIH0KIAogRGF0dW0KQEAgLTIxNzMsNyArMjE4NSw3IEBAIGxzZWdfbGVuZ3RoKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJTFNFRwkgICAqbHNlZyA9IFBHX0dFVEFSR19MU0VHX1AoMCk7CiAKLQlQ R19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KCZsc2VnLT5wWzBdLCAmbHNlZy0+cFsxXSkpOworCVBH X1JFVFVSTl9GTE9BVDgocG9pbnRfZHQoJmxzZWctPnBbMF0sICZsc2VnLT5wWzFdLCBOVUxMKSk7 CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMjI1OCw4ICsyMjcwLDggQEAgbHNlZ19sdChQR19GVU5DVElPTl9BUkdT KQogCUxTRUcJICAgKmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VHCSAgICpsMiA9IFBH X0dFVEFSR19MU0VHX1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGx0KHBvaW50X2R0KCZsMS0+ cFswXSwgJmwxLT5wWzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdKSkp OworCVBHX1JFVFVSTl9CT09MKEZQbHQocG9pbnRfZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0sIE5V TEwpLAorCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5VTEwpKSk7CiB9CiAK IERhdHVtCkBAIC0yMjY4LDggKzIyODAsOCBAQCBsc2VnX2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ TFNFRwkgICAqbDEgPSBQR19HRVRBUkdfTFNFR19QKDApOwogCUxTRUcJICAgKmwyID0gUEdfR0VU QVJHX0xTRUdfUCgxKTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRfZHQoJmwxLT5wWzBd LCAmbDEtPnBbMV0pLAotCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0pKSk7CisJ UEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmbDEtPnBbMF0sICZsMS0+cFsxXSwgTlVMTCks CisJCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsxXSwgTlVMTCkpKTsKIH0KIAogRGF0 dW0KQEAgLTIyNzgsOCArMjI5MCw4IEBAIGxzZWdfZ3QoUEdfRlVOQ1RJT05fQVJHUykKIAlMU0VH CSAgICpsMSA9IFBHX0dFVEFSR19MU0VHX1AoMCk7CiAJTFNFRwkgICAqbDIgPSBQR19HRVRBUkdf TFNFR19QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBndChwb2ludF9kdCgmbDEtPnBbMF0sICZs MS0+cFsxXSksCi0JCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsxXSkpKTsKKwlQR19S RVRVUk5fQk9PTChGUGd0KHBvaW50X2R0KCZsMS0+cFswXSwgJmwxLT5wWzFdLCBOVUxMKSwKKwkJ CQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdLCBOVUxMKSkpOwogfQogCiBEYXR1bQpA QCAtMjI4OCw4ICsyMzAwLDggQEAgbHNlZ19nZShQR19GVU5DVElPTl9BUkdTKQogCUxTRUcJICAg KmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VHCSAgICpsMiA9IFBHX0dFVEFSR19MU0VH X1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGdlKHBvaW50X2R0KCZsMS0+cFswXSwgJmwxLT5w WzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdKSkpOworCVBHX1JFVFVS Tl9CT09MKEZQZ2UocG9pbnRfZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0sIE5VTEwpLAorCQkJCQkJ cG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5VTEwpKSk7CiB9CiAKIApAQCAtMjc0Myw3 ICsyNzU1LDcgQEAgbGluZV9jbG9zZXB0X3BvaW50KFBvaW50ICpyZXN1bHQsIExJTkUgKmxpbmUs IFBvaW50ICpwb2ludCkKIAlpZiAocmVzdWx0ICE9IE5VTEwpCiAJCSpyZXN1bHQgPSBjbG9zZXB0 OwogCi0JcmV0dXJuIHBvaW50X2R0KCZjbG9zZXB0LCBwb2ludCk7CisJcmV0dXJuIHBvaW50X2R0 KCZjbG9zZXB0LCBwb2ludCwgTlVMTCk7CiB9CiAKIERhdHVtCkBAIC0yNzg0LDcgKzI3OTYsNyBA QCBsc2VnX2Nsb3NlcHRfcG9pbnQoUG9pbnQgKnJlc3VsdCwgTFNFRyAqbHNlZywgUG9pbnQgKnB0 KQogCWlmIChyZXN1bHQgIT0gTlVMTCkKIAkJKnJlc3VsdCA9IGNsb3NlcHQ7CiAKLQlyZXR1cm4g cG9pbnRfZHQoJmNsb3NlcHQsIHB0KTsKKwlyZXR1cm4gcG9pbnRfZHQoJmNsb3NlcHQsIHB0LCBO VUxMKTsKIH0KIAogRGF0dW0KQEAgLTMxMDgsOSArMzEyMCw5IEBAIG9uX3BsKFBHX0ZVTkNUSU9O X0FSR1MpCiBzdGF0aWMgYm9vbAogbHNlZ19jb250YWluX3BvaW50KExTRUcgKmxzZWcsIFBvaW50 ICpwdCkKIHsKLQlyZXR1cm4gRlBlcShwb2ludF9kdChwdCwgJmxzZWctPnBbMF0pICsKLQkJCQlw b2ludF9kdChwdCwgJmxzZWctPnBbMV0pLAotCQkJCXBvaW50X2R0KCZsc2VnLT5wWzBdLCAmbHNl Zy0+cFsxXSkpOworCXJldHVybiBGUGVxKHBvaW50X2R0KHB0LCAmbHNlZy0+cFswXSwgTlVMTCkg KworCQkJCXBvaW50X2R0KHB0LCAmbHNlZy0+cFsxXSwgTlVMTCksCisJCQkJcG9pbnRfZHQoJmxz ZWctPnBbMF0sICZsc2VnLT5wWzFdLCBOVUxMKSk7CiB9CiAKIERhdHVtCkBAIC0zMTc2LDExICsz MTg4LDEyIEBAIG9uX3BwYXRoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKCFwYXRoLT5jbG9zZWQp CiAJewogCQluID0gcGF0aC0+bnB0cyAtIDE7Ci0JCWEgPSBwb2ludF9kdChwdCwgJnBhdGgtPnBb MF0pOworCQlhID0gcG9pbnRfZHQocHQsICZwYXRoLT5wWzBdLCBOVUxMKTsKIAkJZm9yIChpID0g MDsgaSA8IG47IGkrKykKIAkJewotCQkJYiA9IHBvaW50X2R0KHB0LCAmcGF0aC0+cFtpICsgMV0p OwotCQkJaWYgKEZQZXEoZmxvYXQ4X3BsKGEsIGIpLCBwb2ludF9kdCgmcGF0aC0+cFtpXSwgJnBh dGgtPnBbaSArIDFdKSkpCisJCQliID0gcG9pbnRfZHQocHQsICZwYXRoLT5wW2kgKyAxXSwgTlVM TCk7CisJCQlpZiAoRlBlcShmbG9hdDhfcGwoYSwgYiksCisJCQkJCSBwb2ludF9kdCgmcGF0aC0+ cFtpXSwgJnBhdGgtPnBbaSArIDFdLCBOVUxMKSkpCiAJCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7 CiAJCQlhID0gYjsKIAkJfQpAQCAtNDc2Niw3ICs0Nzc5LDcgQEAgY2lyY2xlX292ZXJsYXAoUEdf RlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTEgPSBQR19HRVRBUkdfQ0lSQ0xFX1Ao MCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUyID0gUEdfR0VUQVJHX0NJUkNMRV9QKDEpOwogCi0JUEdf UkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+Y2VudGVyLCAmY2lyY2xlMi0+Y2Vu dGVyKSwKKwlQR19SRVRVUk5fQk9PTChGUGxlKHBvaW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZj aXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkJZmxvYXQ4X3BsKGNpcmNsZTEtPnJhZGl1cywg Y2lyY2xlMi0+cmFkaXVzKSkpOwogfQogCkBAIC00ODI4LDcgKzQ4NDEsNyBAQCBjaXJjbGVfY29u dGFpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpjaXJjbGUxID0gUEdfR0VUQVJH X0NJUkNMRV9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlMiA9IFBHX0dFVEFSR19DSVJDTEVfUCgx KTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRfZHQoJmNpcmNsZTEtPmNlbnRlciwgJmNp cmNsZTItPmNlbnRlciksCisJUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+ Y2VudGVyLCAmY2lyY2xlMi0+Y2VudGVyLCBOVUxMKSwKIAkJCQkJCWZsb2F0OF9taShjaXJjbGUy LT5yYWRpdXMsIGNpcmNsZTEtPnJhZGl1cykpKTsKIH0KIApAQCAtNDg0MCw3ICs0ODUzLDcgQEAg Y2lyY2xlX2NvbnRhaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTEgPSBQ R19HRVRBUkdfQ0lSQ0xFX1AoMCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUyID0gUEdfR0VUQVJHX0NJ UkNMRV9QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+Y2Vu dGVyLCAmY2lyY2xlMi0+Y2VudGVyKSwKKwlQR19SRVRVUk5fQk9PTChGUGxlKHBvaW50X2R0KCZj aXJjbGUxLT5jZW50ZXIsICZjaXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkJZmxvYXQ4X21p KGNpcmNsZTEtPnJhZGl1cywgY2lyY2xlMi0+cmFkaXVzKSkpOwogfQogCkBAIC01MDY5LDcgKzUw ODIsNyBAQCBjaXJjbGVfZGlzdGFuY2UoUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNp cmNsZTIgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMSk7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAKLQlyZXN1 bHQgPSBmbG9hdDhfbWkocG9pbnRfZHQoJmNpcmNsZTEtPmNlbnRlciwgJmNpcmNsZTItPmNlbnRl ciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBvaW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZjaXJj bGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkgICBmbG9hdDhfcGwoY2lyY2xlMS0+cmFkaXVzLCBj aXJjbGUyLT5yYWRpdXMpKTsKIAlpZiAocmVzdWx0IDwgMC4wKQogCQlyZXN1bHQgPSAwLjA7CkBA IC01MDg1LDcgKzUwOTgsNyBAQCBjaXJjbGVfY29udGFpbl9wdChQR19GVU5DVElPTl9BUkdTKQog CVBvaW50CSAgICpwb2ludCA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCWZsb2F0OAkJZDsKIAot CWQgPSBwb2ludF9kdCgmY2lyY2xlLT5jZW50ZXIsIHBvaW50KTsKKwlkID0gcG9pbnRfZHQoJmNp cmNsZS0+Y2VudGVyLCBwb2ludCwgTlVMTCk7CiAJUEdfUkVUVVJOX0JPT0woZCA8PSBjaXJjbGUt PnJhZGl1cyk7CiB9CiAKQEAgLTUwOTcsNyArNTExMCw3IEBAIHB0X2NvbnRhaW5lZF9jaXJjbGUo UEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZSA9IFBHX0dFVEFSR19DSVJDTEVf UCgxKTsKIAlmbG9hdDgJCWQ7CiAKLQlkID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCBwb2lu dCk7CisJZCA9IHBvaW50X2R0KCZjaXJjbGUtPmNlbnRlciwgcG9pbnQsIE5VTEwpOwogCVBHX1JF VFVSTl9CT09MKGQgPD0gY2lyY2xlLT5yYWRpdXMpOwogfQogCkBAIC01MTEyLDcgKzUxMjUsNyBA QCBkaXN0X3BjKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQR19HRVRB UkdfQ0lSQ0xFX1AoMSk7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAKLQlyZXN1bHQgPSBmbG9hdDhfbWko cG9pbnRfZHQocG9pbnQsICZjaXJjbGUtPmNlbnRlciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBv aW50X2R0KHBvaW50LCAmY2lyY2xlLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkgICBjaXJjbGUtPnJh ZGl1cyk7CiAJaWYgKHJlc3VsdCA8IDAuMCkKIAkJcmVzdWx0ID0gMC4wOwpAQCAtNTEzMCw3ICs1 MTQzLDcgQEAgZGlzdF9jcG9pbnQoUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcG9pbnQg PSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlmbG9hdDgJCXJlc3VsdDsKIAotCXJlc3VsdCA9IGZs b2F0OF9taShwb2ludF9kdChwb2ludCwgJmNpcmNsZS0+Y2VudGVyKSwgY2lyY2xlLT5yYWRpdXMp OworCXJlc3VsdCA9IGZsb2F0OF9taShwb2ludF9kdChwb2ludCwgJmNpcmNsZS0+Y2VudGVyLCBO VUxMKSwgY2lyY2xlLT5yYWRpdXMpOwogCWlmIChyZXN1bHQgPCAwLjApCiAJCXJlc3VsdCA9IDAu MDsKIApAQCAtNTIxNSw3ICs1MjI4LDcgQEAgYm94X2NpcmNsZShQR19GVU5DVElPTl9BUkdTKQog CWNpcmNsZS0+Y2VudGVyLnggPSBmbG9hdDhfZGl2KGZsb2F0OF9wbChib3gtPmhpZ2gueCwgYm94 LT5sb3cueCksIDIuMCk7CiAJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0OF9kaXYoZmxvYXQ4X3Bs KGJveC0+aGlnaC55LCBib3gtPmxvdy55KSwgMi4wKTsKIAotCWNpcmNsZS0+cmFkaXVzID0gcG9p bnRfZHQoJmNpcmNsZS0+Y2VudGVyLCAmYm94LT5oaWdoKTsKKwljaXJjbGUtPnJhZGl1cyA9IHBv aW50X2R0KCZjaXJjbGUtPmNlbnRlciwgJmJveC0+aGlnaCwgTlVMTCk7CiAKIAlQR19SRVRVUk5f Q0lSQ0xFX1AoY2lyY2xlKTsKIH0KQEAgLTUyOTksNyArNTMxMiw3IEBAIHBvbHlfdG9fY2lyY2xl KENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5KQogCiAJZm9yIChpID0gMDsgaSA8IHBvbHkt Pm5wdHM7IGkrKykKIAkJcmVzdWx0LT5yYWRpdXMgPSBmbG9hdDhfcGwocmVzdWx0LT5yYWRpdXMs Ci0JCQkJCQkJCSAgIHBvaW50X2R0KCZwb2x5LT5wW2ldLCAmcmVzdWx0LT5jZW50ZXIpKTsKKwkJ CQkJCQkJICAgcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgTlVMTCkpOwog CXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4X2RpdihyZXN1bHQtPnJhZGl1cywgcG9seS0+bnB0cyk7 CiB9CiAKLS0gCjIuMzQuMQoK --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0002-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v24-0002-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxc52 RnJvbSBlZjgzMjA1NDVhZGE3NTkzYTJlNTlhMzAwYzM4MDMyZTRmNGNiOTAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMDg6MzU6MjUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCAyLzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcganNvbmIgdG8gb3RoZXIgdHlwZXMgcGVyCiBw Z19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZSwg Y2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFtZSBm cm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5jIGFu ZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnanNvbmInOjpyZWd0 eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8ICAgIGNhc3R0 YXJnZXQgICAgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8ICAgIHByb3Ny YyAgICAgfCBwcm9uYW1lCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiBq c29uYiAgICAgIHwgYm9vbGVhbiAgICAgICAgICB8ICAgICAzNTU2IHwgZSAgICAgICAgICAgfCBm ICAgICAgICAgIHwganNvbmJfYm9vbCAgICB8IGJvb2wKIGpzb25iICAgICAgfCBudW1lcmljICAg ICAgICAgIHwgICAgIDM0NDkgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBqc29uYl9udW1l cmljIHwgbnVtZXJpYwoganNvbmIgICAgICB8IHNtYWxsaW50ICAgICAgICAgfCAgICAgMzQ1MCB8 IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGpzb25iX2ludDIgICAgfCBpbnQyCiBqc29uYiAg ICAgIHwgaW50ZWdlciAgICAgICAgICB8ICAgICAzNDUxIHwgZSAgICAgICAgICAgfCBmICAgICAg ICAgIHwganNvbmJfaW50NCAgICB8IGludDQKIGpzb25iICAgICAgfCBiaWdpbnQgICAgICAgICAg IHwgICAgIDM0NTIgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBqc29uYl9pbnQ4ICAgIHwg aW50OAoganNvbmIgICAgICB8IHJlYWwgICAgICAgICAgICAgfCAgICAgMzQ1MyB8IGUgICAgICAg ICAgIHwgZiAgICAgICAgICB8IGpzb25iX2Zsb2F0NCAgfCBmbG9hdDQKIGpzb25iICAgICAgfCBk b3VibGUgcHJlY2lzaW9uIHwgICAgIDI1ODAgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBq c29uYl9mbG9hdDggIHwgZmxvYXQ4Cig3IHJvd3MpCgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dO YmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBo dHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uYi5jIHwgMzUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IDFiMWE4ZjMwMWYyLi44NjRjNWFjMWM4NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iLmMKQEAgLTE3ODUsOCArMTc4NSw4IEBAIEpzb25iRXh0cmFjdFNjYWxhcihK c29uYkNvbnRhaW5lciAqamJjLCBKc29uYlZhbHVlICpyZXMpCiAvKgogICogRW1pdCBjb3JyZWN0 LCB0cmFuc2xhdGFibGUgY2FzdCBlcnJvciBtZXNzYWdlCiAgKi8KLXN0YXRpYyB2b2lkCi1jYW5u b3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkK K3N0YXRpYyBEYXR1bQorY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNv bnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKIHsKIAlzdGF0aWMgY29uc3Qgc3Ry dWN0CiAJewpAQCAtMTgwNywxMiArMTgwNywxMyBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVt IGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkKIAogCWZvciAoaSA9IDA7IGkgPCBs ZW5ndGhvZihtZXNzYWdlcyk7IGkrKykKIAkJaWYgKG1lc3NhZ2VzW2ldLnR5cGUgPT0gdHlwZSkK LQkJCWVyZXBvcnQoRVJST1IsCisJCQllcmV0dXJuKGVzY29udGV4dCwgKERhdHVtKSAwLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1z ZyhtZXNzYWdlc1tpXS5tc2csIHNxbHR5cGUpKSk7CiAKIAkvKiBzaG91bGQgYmUgdW5yZWFjaGFi bGUgKi8KIAllbG9nKEVSUk9SLCAidW5rbm93biBqc29uYiB0eXBlOiAlZCIsIChpbnQpIHR5cGUp OworCXJldHVybiAoRGF0dW0pIDA7CiB9CiAKIERhdHVtCkBAIC0xODIyLDcgKzE4MjMsNyBAQCBq c29uYl9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSnNvbmJWYWx1ZQl2OwogCiAJaWYgKCFKc29u YkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAmdikpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYu dHlwZSwgImJvb2xlYW4iKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwg ImJvb2xlYW4iLCBmY2luZm8tPmNvbnRleHQpOwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQog CXsKQEAgLTE4MzEsNyArMTgzMiw3IEBAIGpzb25iX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKIAl9 CiAKIAlpZiAodi50eXBlICE9IGpidkJvb2wpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlw ZSwgImJvb2xlYW4iKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImJv b2xlYW4iLCBmY2luZm8tPmNvbnRleHQpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluLCAwKTsKIApA QCAtMTg0Niw3ICsxODQ3LDcgQEAganNvbmJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogCU51 bWVyaWMJCXJldFZhbHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAm dikpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKKwkJcmV0dXJu IGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiLCBmY2luZm8tPmNvbnRleHQp OwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE4NTUsNyArMTg1Niw3IEBAIGpz b25iX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBlICE9IGpidk51 bWVyaWMpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKKwkJcmV0 dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiLCBmY2luZm8tPmNvbnRl eHQpOwogCiAJLyoKIAkgKiB2LnZhbC5udW1lcmljIHBvaW50cyBpbnRvIGpzb25iIGJvZHksIHNv IHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgdG8KQEAgLTE4NzYsNyArMTg3Nyw3IEBAIGpzb25iX2lu dDIoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmV0VmFsdWU7CiAKIAlpZiAoIUpzb25iRXh0 cmFjdFNjYWxhcigmaW4tPnJvb3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBl LCAic21hbGxpbnQiKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInNt YWxsaW50IiwgZmNpbmZvLT5jb250ZXh0KTsKIAogCWlmICh2LnR5cGUgPT0gamJ2TnVsbCkKIAl7 CkBAIC0xODg1LDcgKzE4ODYsNyBAQCBqc29uYl9pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQog CiAJaWYgKHYudHlwZSAhPSBqYnZOdW1lcmljKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5 cGUsICJzbWFsbGludCIpOworCQlyZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi c21hbGxpbnQiLCBmY2luZm8tPmNvbnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlv bkNhbGwxKG51bWVyaWNfaW50MiwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYudmFsLm51 bWVyaWMpKTsKQEAgLTE5MDMsNyArMTkwNCw3IEBAIGpzb25iX2ludDQoUEdfRlVOQ1RJT05fQVJH UykKIAlEYXR1bQkJcmV0VmFsdWU7CiAKIAlpZiAoIUpzb25iRXh0cmFjdFNjYWxhcigmaW4tPnJv b3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIpOworCQly ZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIsIGZjaW5mby0+Y29u dGV4dCk7CiAKIAlpZiAodi50eXBlID09IGpidk51bGwpCiAJewpAQCAtMTkxMiw3ICsxOTEzLDcg QEAganNvbmJfaW50NChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0gamJ2 TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIpOworCQly ZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIsIGZjaW5mby0+Y29u dGV4dCk7CiAKIAlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ0LAog CQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi52YWwubnVtZXJpYykpOwpAQCAtMTkzMCw3ICsx OTMxLDcgQEAganNvbmJfaW50OChQR19GVU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXRWYWx1ZTsK IAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFyKCZpbi0+cm9vdCwgJnYpKQotCQljYW5ub3RDYXN0 SnNvbmJWYWx1ZSh2LnR5cGUsICJiaWdpbnQiKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZh bHVlKHYudHlwZSwgImJpZ2ludCIsIGZjaW5mby0+Y29udGV4dCk7CiAKIAlpZiAodi50eXBlID09 IGpidk51bGwpCiAJewpAQCAtMTkzOSw3ICsxOTQwLDcgQEAganNvbmJfaW50OChQR19GVU5DVElP Tl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0gamJ2TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpz b25iVmFsdWUodi50eXBlLCAiYmlnaW50Iik7CisJCXJldHVybiBjYW5ub3RDYXN0SnNvbmJWYWx1 ZSh2LnR5cGUsICJiaWdpbnQiLCBmY2luZm8tPmNvbnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJl Y3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50OCwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVt KHYudmFsLm51bWVyaWMpKTsKQEAgLTE5NTcsNyArMTk1OCw3IEBAIGpzb25iX2Zsb2F0NChQR19G VU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXRWYWx1ZTsKIAogCWlmICghSnNvbmJFeHRyYWN0U2Nh bGFyKCZpbi0+cm9vdCwgJnYpKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJyZWFs Iik7CisJCXJldHVybiBjYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJyZWFsIiwgZmNpbmZv LT5jb250ZXh0KTsKIAogCWlmICh2LnR5cGUgPT0gamJ2TnVsbCkKIAl7CkBAIC0xOTY2LDcgKzE5 NjcsNyBAQCBqc29uYl9mbG9hdDQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBl ICE9IGpidk51bWVyaWMpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInJlYWwiKTsK KwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInJlYWwiLCBmY2luZm8tPmNv bnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfZmxvYXQ0 LAogCQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi52YWwubnVtZXJpYykpOwpAQCAtMTk4NCw3 ICsxOTg1LDcgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAJRGF0dW0JCXJldFZh bHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAmdikpCi0JCWNhbm5v dENhc3RKc29uYlZhbHVlKHYudHlwZSwgImRvdWJsZSBwcmVjaXNpb24iKTsKKwkJcmV0dXJuIGNh bm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImRvdWJsZSBwcmVjaXNpb24iLCBmY2luZm8tPmNv bnRleHQpOwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE5OTMsNyArMTk5NCw3 IEBAIGpzb25iX2Zsb2F0OChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0g amJ2TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiZG91YmxlIHByZWNp c2lvbiIpOworCQlyZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiZG91YmxlIHBy ZWNpc2lvbiIsIGZjaW5mby0+Y29udGV4dCk7CiAKIAlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9u Q2FsbDEobnVtZXJpY19mbG9hdDgsCiAJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LnZhbC5u dW1lcmljKSk7Ci0tIAoyLjM0LjEKCg== --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0006-error-safe-for-casting-geometry-data-type.patch" Content-Disposition: attachment; filename="v24-0006-error-safe-for-casting-geometry-data-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxce4 RnJvbSAwMTEwMWMyZjEwMGZmYmY2NmI5Y2QwZTc2ZmU2NmNiZDE4YTQ4NjNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTA6MTk6MTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA2LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgZ2VvbWV0cnkgZGF0YSB0eXBlCgpzZWxlY3Qg Y2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZSwgcHAucHJvc3JjCmZyb20g cGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0gcGMuY2FzdGZ1bmMKam9pbiBw Z190eXBlIHB0IG9uIHB0Lm9pZCA9IGNhc3Rzb3VyY2UKam9pbiBwZ190eXBlIHB0MSBvbiBwdDEu b2lkID0gY2FzdHRhcmdldAphbmQgcGMuY2FzdGZ1bmMgPiAwIGFuZCAgcHQudHlwYXJyYXkgPD4g MAphbmQgcHQudHlwbmFtZXNwYWNlID0gJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UKYW5kIHB0 MS50eXBuYW1lc3BhY2UgPSAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFjZQphbmQgKHB0LnR5cGNh dGVnb3J5ICA9ICdHJyBvciBwdDEudHlwY2F0ZWdvcnkgID0gJ0cnKQpvcmRlciBieSBjYXN0c291 cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFy Z2V0IHwgICAgcHJvc3JjCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t CiBwb2ludCAgICAgIHwgYm94ICAgICAgICB8IHBvaW50X2JveAogbHNlZyAgICAgICB8IHBvaW50 ICAgICAgfCBsc2VnX2NlbnRlcgogcGF0aCAgICAgICB8IHBvbHlnb24gICAgfCBwYXRoX3BvbHkK IGJveCAgICAgICAgfCBwb2ludCAgICAgIHwgYm94X2NlbnRlcgogYm94ICAgICAgICB8IGxzZWcg ICAgICAgfCBib3hfZGlhZ29uYWwKIGJveCAgICAgICAgfCBwb2x5Z29uICAgIHwgYm94X3BvbHkK IGJveCAgICAgICAgfCBjaXJjbGUgICAgIHwgYm94X2NpcmNsZQogcG9seWdvbiAgICB8IHBvaW50 ICAgICAgfCBwb2x5X2NlbnRlcgogcG9seWdvbiAgICB8IHBhdGggICAgICAgfCBwb2x5X3BhdGgK IHBvbHlnb24gICAgfCBib3ggICAgICAgIHwgcG9seV9ib3gKIHBvbHlnb24gICAgfCBjaXJjbGUg ICAgIHwgcG9seV9jaXJjbGUKIGNpcmNsZSAgICAgfCBwb2ludCAgICAgIHwgY2lyY2xlX2NlbnRl cgogY2lyY2xlICAgICB8IGJveCAgICAgICAgfCBjaXJjbGVfYm94CiBjaXJjbGUgICAgIHwgcG9s eWdvbiAgICB8CigxNCByb3dzKQoKYWxyZWFkeSBlcnJvciBzYWZlOiBwb2ludF9ib3gsIGJveF9k aWFnb25hbCwgYm94X3BvbHksIHBvbHlfcGF0aCwgcG9seV9ib3gsIGNpcmNsZV9jZW50ZXIuClRo aXMgcGF0Y2ggbWFrZSB0aGVzZSBmdW5jdGlvbnMgZXJyb3Igc2FmZTogbHNlZ19jZW50ZXIsIHBh dGhfcG9seSwgYm94X2NlbnRlciwKYm94X2NpcmNsZSwgcG9seV9jZW50ZXIsIHBvbHlfY2lyY2xl LCBjaXJjbGVfYm94LgoKRnVuY3Rpb24gdGhhdCBjYXN0aW5nIHR5cGUgY2lyY2xlIHRvIHR5cGUg cG9seWdvbiBjYW5ub3QgYmUgZXJyb3Igc2FmZSwgYmVjYXVzZQppdCdzIGEgU1FMIGxhbmd1YWdl IGZ1bmN0aW9uLgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRo UUBtYWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNx bC5vcmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgfCAy MDMgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNjAg aW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2dlb19vcHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKaW5k ZXggMzUwZTg2ZjYzNzcuLmE1OWYxY2FiYzQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvZ2VvX29wcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKQEAg LTc3LDcgKzc3LDggQEAgZW51bSBwYXRoX2RlbGltCiAKIC8qIFJvdXRpbmVzIGZvciBwb2ludHMg Ki8KIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9jb25zdHJ1Y3QoUG9pbnQgKnJlc3VsdCwgZmxv YXQ4IHgsIGZsb2F0OCB5KTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9hZGRfcG9pbnQoUG9p bnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CitzdGF0aWMgaW5saW5lIHZvaWQg cG9pbnRfYWRkX3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIsCisJ CQkJCQkJCSAgIE5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgcG9pbnRfc3Vi X3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIpOwogc3RhdGljIGlu bGluZSB2b2lkIHBvaW50X211bF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2lu dCAqcHQyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9kaXZfcG9pbnQoUG9pbnQgKnJlc3Vs dCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CkBAIC0xMDgsNyArMTA5LDcgQEAgc3RhdGljIGZs b2F0OCBsc2VnX2Nsb3NlcHRfbHNlZyhQb2ludCAqcmVzdWx0LCBMU0VHICpvbl9sc2VnLCBMU0VH ICp0b19sc2VnKTsKIAogLyogUm91dGluZXMgZm9yIGJveGVzICovCiBzdGF0aWMgaW5saW5lIHZv aWQgYm94X2NvbnN0cnVjdChCT1ggKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7Ci1z dGF0aWMgdm9pZCBib3hfY24oUG9pbnQgKmNlbnRlciwgQk9YICpib3gpOworc3RhdGljIGJvb2wg Ym94X2NuKFBvaW50ICpjZW50ZXIsIEJPWCAqYm94LCBOb2RlICplc2NvbnRleHQpOwogc3RhdGlj IGJvb2wgYm94X292KEJPWCAqYm94MSwgQk9YICpib3gyKTsKIHN0YXRpYyBmbG9hdDggYm94X2Fy KEJPWCAqYm94KTsKIHN0YXRpYyBmbG9hdDggYm94X2h0KEJPWCAqYm94KTsKQEAgLTEyNSw3ICsx MjYsNyBAQCBzdGF0aWMgZmxvYXQ4IGNpcmNsZV9hcihDSVJDTEUgKmNpcmNsZSk7CiAKIC8qIFJv dXRpbmVzIGZvciBwb2x5Z29ucyAqLwogc3RhdGljIHZvaWQgbWFrZV9ib3VuZF9ib3goUE9MWUdP TiAqcG9seSk7Ci1zdGF0aWMgdm9pZCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwgUE9M WUdPTiAqcG9seSk7CitzdGF0aWMgYm9vbCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwg UE9MWUdPTiAqcG9seSwgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBib29sIGxzZWdfaW5zaWRl X3BvbHkoUG9pbnQgKmEsIFBvaW50ICpiLCBQT0xZR09OICpwb2x5LCBpbnQgc3RhcnQpOwogc3Rh dGljIGJvb2wgcG9seV9jb250YWluX3BvbHkoUE9MWUdPTiAqY29udGFpbnNfcG9seSwgUE9MWUdP TiAqY29udGFpbmVkX3BvbHkpOwogc3RhdGljIGJvb2wgcGxpc3Rfc2FtZShpbnQgbnB0cywgUG9p bnQgKnAxLCBQb2ludCAqcDIpOwpAQCAtODM2LDggKzgzNyw4IEBAIGJveF9kaXN0YW5jZShQR19G VU5DVElPTl9BUkdTKQogCVBvaW50CQlhLAogCQkJCWI7CiAKLQlib3hfY24oJmEsIGJveDEpOwot CWJveF9jbigmYiwgYm94Mik7CisJKHZvaWQpIGJveF9jbigmYSwgYm94MSwgTlVMTCk7CisJKHZv aWQpIGJveF9jbigmYiwgYm94MiwgTlVMTCk7CiAKIAlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0 KCZhLCAmYiwgTlVMTCkpOwogfQpAQCAtODUxLDcgKzg1Miw4IEBAIGJveF9jZW50ZXIoUEdfRlVO Q1RJT05fQVJHUykKIAlCT1gJCSAgICpib3ggPSBQR19HRVRBUkdfQk9YX1AoMCk7CiAJUG9pbnQJ ICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCi0JYm94X2NuKHJlc3VsdCwgYm94 KTsKKwlpZiAoIWJveF9jbihyZXN1bHQsIGJveCwgZmNpbmZvLT5jb250ZXh0KSkKKwkJUEdfUkVU VVJOX05VTEwoKTsKIAogCVBHX1JFVFVSTl9QT0lOVF9QKHJlc3VsdCk7CiB9CkBAIC04NjgsMTQg Kzg3MCwzMSBAQCBib3hfYXIoQk9YICpib3gpCiAKIC8qCQlib3hfY24JLQkJc3RvcmVzIHRoZSBj ZW50ZXJwb2ludCBvZiB0aGUgYm94IGludG8gKmNlbnRlci4KICAqLwotc3RhdGljIHZvaWQKLWJv eF9jbihQb2ludCAqY2VudGVyLCBCT1ggKmJveCkKK3N0YXRpYyBib29sCitib3hfY24oUG9pbnQg KmNlbnRlciwgQk9YICpib3gsIE5vZGUgKmVzY29udGV4dCkKIHsKLQljZW50ZXItPnggPSBmbG9h dDhfZGl2KGZsb2F0OF9wbChib3gtPmhpZ2gueCwgYm94LT5sb3cueCksIDIuMCk7Ci0JY2VudGVy LT55ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLnksIGJveC0+bG93LnkpLCAyLjAp OworCWZsb2F0OAkJeDsKKwlmbG9hdDgJCXk7CisKKwl4ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5o aWdoLngsIGJveC0+bG93LngsIGVzY29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQo ZXNjb250ZXh0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJY2VudGVyLT54ID0gZmxvYXQ4X2Rpdl9z YWZlKHgsIDIuMCwgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRl eHQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5oaWdoLnks IGJveC0+bG93LnksIGVzY29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250 ZXh0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJY2VudGVyLT55ID0gZmxvYXQ4X2Rpdl9zYWZlKHks IDIuMCwgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQor CQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAotCiAvKgkJYm94X3dkCS0JCXJl dHVybnMgdGhlIHdpZHRoIChsZW5ndGgpIG9mIHRoZSBib3gKICAqCQkJCQkJCQkgIChob3Jpem9u dGFsIG1hZ25pdHVkZSkuCiAgKi8KQEAgLTIzMjksMTMgKzIzNDgsMzEgQEAgbHNlZ19jZW50ZXIo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlMU0VHCSAgICpsc2VnID0gUEdfR0VUQVJHX0xTRUdfUCgw KTsKIAlQb2ludAkgICAqcmVzdWx0OworCWZsb2F0OAkJeDsKKwlmbG9hdDgJCXk7CiAKIAlyZXN1 bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAotCXJlc3VsdC0+eCA9IGZsb2F0OF9kaXYoZmxv YXQ4X3BsKGxzZWctPnBbMF0ueCwgbHNlZy0+cFsxXS54KSwgMi4wKTsKLQlyZXN1bHQtPnkgPSBm bG9hdDhfZGl2KGZsb2F0OF9wbChsc2VnLT5wWzBdLnksIGxzZWctPnBbMV0ueSksIDIuMCk7CisJ eCA9IGZsb2F0OF9wbF9zYWZlKGxzZWctPnBbMF0ueCwgbHNlZy0+cFsxXS54LCBmY2luZm8tPmNv bnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdv dG8gZmFpbDsKKworCXJlc3VsdC0+eCA9IGZsb2F0OF9kaXZfc2FmZSh4LCAyLjAsIGZjaW5mby0+ Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJ Z290byBmYWlsOworCisJeSA9IGZsb2F0OF9wbF9zYWZlKGxzZWctPnBbMF0ueSwgbHNlZy0+cFsx XS55LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+ Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKKworCXJlc3VsdC0+eSA9IGZsb2F0OF9kaXZfc2FmZSh5 LCAyLjAsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZv LT5jb250ZXh0KSkKKwkJZ290byBmYWlsOwogCiAJUEdfUkVUVVJOX1BPSU5UX1AocmVzdWx0KTsK KworZmFpbDoKKwlQR19SRVRVUk5fTlVMTCgpOwogfQogCiAKQEAgLTMyOTAsNyArMzMyNyw3IEBA IGJveF9pbnRlcnB0X2xzZWcoUG9pbnQgKnJlc3VsdCwgQk9YICpib3gsIExTRUcgKmxzZWcpCiAK IAlpZiAocmVzdWx0ICE9IE5VTEwpCiAJewotCQlib3hfY24oJnBvaW50LCBib3gpOworCQkodm9p ZCkgYm94X2NuKCZwb2ludCwgYm94LCBOVUxMKTsKIAkJbHNlZ19jbG9zZXB0X3BvaW50KHJlc3Vs dCwgbHNlZywgJnBvaW50KTsKIAl9CiAKQEAgLTQxMjEsMTEgKzQxNTgsMjAgQEAgY29uc3RydWN0 X3BvaW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAogc3RhdGljIGlubGluZSB2b2lkCi1wb2ludF9h ZGRfcG9pbnQoUG9pbnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0MikKK3BvaW50X2Fk ZF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyLCBOb2RlICplc2Nv bnRleHQpCiB7Ci0JcG9pbnRfY29uc3RydWN0KHJlc3VsdCwKLQkJCQkJZmxvYXQ4X3BsKHB0MS0+ eCwgcHQyLT54KSwKLQkJCQkJZmxvYXQ4X3BsKHB0MS0+eSwgcHQyLT55KSk7CisJZmxvYXQ4CQl4 OworCWZsb2F0OAkJeTsKKworCXggPSBmbG9hdDhfcGxfc2FmZShwdDEtPngsIHB0Mi0+eCwgZXNj b250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQlyZXR1cm47 CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUocHQxLT55LCBwdDItPnksIGVzY29udGV4dCk7CisJaWYg KFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJcmV0dXJuOworCisJcG9pbnRfY29u c3RydWN0KHJlc3VsdCwgeCwgeSk7CiB9CiAKIERhdHVtCkBAIC00MTM3LDcgKzQxODMsNyBAQCBw b2ludF9hZGQoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9p bnQpOwogCi0JcG9pbnRfYWRkX3BvaW50KHJlc3VsdCwgcDEsIHAyKTsKKwlwb2ludF9hZGRfcG9p bnQocmVzdWx0LCBwMSwgcDIsIE5VTEwpOwogCiAJUEdfUkVUVVJOX1BPSU5UX1AocmVzdWx0KTsK IH0KQEAgLTQyNDksOCArNDI5NSw4IEBAIGJveF9hZGQoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAotCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5o aWdoLCAmYm94LT5oaWdoLCBwKTsKLQlwb2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+bG93LCAmYm94 LT5sb3csIHApOworCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5oaWdoLCAmYm94LT5oaWdoLCBw LCBOVUxMKTsKKwlwb2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+bG93LCAmYm94LT5sb3csIHAsIE5V TEwpOwogCiAJUEdfUkVUVVJOX0JPWF9QKHJlc3VsdCk7CiB9CkBAIC00NDEzLDcgKzQ0NTksNyBA QCBwYXRoX2FkZF9wdChQR19GVU5DVElPTl9BUkdTKQogCWludAkJCWk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgcGF0aC0+bnB0czsgaSsrKQotCQlwb2ludF9hZGRfcG9pbnQoJnBhdGgtPnBbaV0sICZw YXRoLT5wW2ldLCBwb2ludCk7CisJCXBvaW50X2FkZF9wb2ludCgmcGF0aC0+cFtpXSwgJnBhdGgt PnBbaV0sIHBvaW50LCBOVUxMKTsKIAogCVBHX1JFVFVSTl9QQVRIX1AocGF0aCk7CiB9CkBAIC00 NDcxLDcgKzQ1MTcsNyBAQCBwYXRoX3BvbHkoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIFRoaXMg aXMgbm90IHZlcnkgY29uc2lzdGVudCAtLS0gb3RoZXIgc2ltaWxhciBjYXNlcyByZXR1cm4gTlVM TCAuLi4gKi8KIAlpZiAoIXBhdGgtPmNsb3NlZCkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVy bihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJvcGVuIHBhdGggY2Fubm90IGJlIGNv bnZlcnRlZCB0byBwb2x5Z29uIikpKTsKIApAQCAtNDUyMSw3ICs0NTY3LDkgQEAgcG9seV9jZW50 ZXIoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwog Ci0JcG9seV90b19jaXJjbGUoJmNpcmNsZSwgcG9seSk7CisJaWYgKCFwb2x5X3RvX2NpcmNsZSgm Y2lyY2xlLCBwb2x5LCBmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCiAJ KnJlc3VsdCA9IGNpcmNsZS5jZW50ZXI7CiAKIAlQR19SRVRVUk5fUE9JTlRfUChyZXN1bHQpOwpA QCAtNDk4Myw3ICs1MDMxLDcgQEAgY2lyY2xlX2FkZF9wdChQR19GVU5DVElPTl9BUkdTKQogCiAJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCi0JcG9pbnRfYWRkX3BvaW50KCZyZXN1 bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCk7CisJcG9pbnRfYWRkX3BvaW50KCZy ZXN1bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCwgTlVMTCk7CiAJcmVzdWx0LT5y YWRpdXMgPSBjaXJjbGUtPnJhZGl1czsKIAogCVBHX1JFVFVSTl9DSVJDTEVfUChyZXN1bHQpOwpA QCAtNTIwNCwxNCArNTI1MiwzMCBAQCBjaXJjbGVfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAli b3ggPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAKLQlkZWx0YSA9IGZsb2F0OF9kaXYoY2lyY2xlLT5y YWRpdXMsIHNxcnQoMi4wKSk7CisJZGVsdGEgPSBmbG9hdDhfZGl2X3NhZmUoY2lyY2xlLT5yYWRp dXMsIHNxcnQoMi4wKSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZhaWw7CiAKLQlib3gtPmhpZ2gueCA9IGZsb2F0 OF9wbChjaXJjbGUtPmNlbnRlci54LCBkZWx0YSk7Ci0JYm94LT5sb3cueCA9IGZsb2F0OF9taShj aXJjbGUtPmNlbnRlci54LCBkZWx0YSk7Ci0JYm94LT5oaWdoLnkgPSBmbG9hdDhfcGwoY2lyY2xl LT5jZW50ZXIueSwgZGVsdGEpOwotCWJveC0+bG93LnkgPSBmbG9hdDhfbWkoY2lyY2xlLT5jZW50 ZXIueSwgZGVsdGEpOworCWJveC0+aGlnaC54ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50 ZXIueCwgZGVsdGEsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQo ZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWlsOworCisJYm94LT5sb3cueCA9IGZsb2F0OF9t aV9zYWZlKGNpcmNsZS0+Y2VudGVyLngsIGRlbHRhLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChT T0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKKworCWJv eC0+aGlnaC55ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueSwgZGVsdGEsIGZjaW5m by0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkK KwkJZ290byBmYWlsOworCisJYm94LT5sb3cueSA9IGZsb2F0OF9taV9zYWZlKGNpcmNsZS0+Y2Vu dGVyLnksIGRlbHRhLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVE KGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKIAogCVBHX1JFVFVSTl9CT1hfUChib3gp OworCitmYWlsOgorCVBHX1JFVFVSTl9OVUxMKCk7CiB9CiAKIC8qIGJveF9jaXJjbGUoKQpAQCAt NTIyMiwxNSArNTI4NiwzNyBAQCBib3hfY2lyY2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQk9Y CQkgICAqYm94ID0gUEdfR0VUQVJHX0JPWF9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlOworCWZs b2F0OAkJeDsKKwlmbG9hdDgJCXk7CiAKIAljaXJjbGUgPSBwYWxsb2Nfb2JqZWN0KENJUkNMRSk7 CiAKLQljaXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLngs IGJveC0+bG93LngpLCAyLjApOwotCWNpcmNsZS0+Y2VudGVyLnkgPSBmbG9hdDhfZGl2KGZsb2F0 OF9wbChib3gtPmhpZ2gueSwgYm94LT5sb3cueSksIDIuMCk7CisJeCA9IGZsb2F0OF9wbF9zYWZl KGJveC0+aGlnaC54LCBib3gtPmxvdy54LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VS Uk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKIAotCWNpcmNsZS0+ cmFkaXVzID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCAmYm94LT5oaWdoLCBOVUxMKTsKKwlj aXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHgsIDIuMCwgZmNpbmZvLT5jb250ZXh0 KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZh aWw7CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5oaWdoLnksIGJveC0+bG93LnksIGZjaW5m by0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkK KwkJZ290byBmYWlsOworCisJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0OF9kaXZfc2FmZSh5LCAy LjAsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5j b250ZXh0KSkKKwkJZ290byBmYWlsOworCisJY2lyY2xlLT5yYWRpdXMgPSBwb2ludF9kdCgmY2ly Y2xlLT5jZW50ZXIsICZib3gtPmhpZ2gsCisJCQkJCQkJICBmY2luZm8tPmNvbnRleHQpOworCisJ aWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWlsOwog CiAJUEdfUkVUVVJOX0NJUkNMRV9QKGNpcmNsZSk7CisKK2ZhaWw6CisJUEdfUkVUVVJOX05VTEwo KTsKIH0KIAogCkBAIC01Mjg5LDE1ICs1Mzc1LDE2IEBAIGNpcmNsZV9wb2x5KFBHX0ZVTkNUSU9O X0FSR1MpCiAvKgogICogQ29udmVydCBwb2x5Z29uIHRvIGNpcmNsZQogICoKLSAqIFRoZSByZXN1 bHQgbXVzdCBiZSBwcmVhbGxvY2F0ZWQuCisgKiBUaGUgcGFyYW1ldGVyICJyZXN1bHQiIG11c3Qg YmUgcHJlYWxsb2NhdGVkLgogICoKICAqIFhYWCBUaGlzIGFsZ29yaXRobSBzaG91bGQgdXNlIHdl aWdodGVkIG1lYW5zIG9mIGxpbmUgc2VnbWVudHMKICAqCXJhdGhlciB0aGFuIHN0cmFpZ2h0IGF2 ZXJhZ2UgdmFsdWVzIG9mIHBvaW50cyAtIHRnbCA5Ny8wMS8yMS4KICAqLwotc3RhdGljIHZvaWQK LXBvbHlfdG9fY2lyY2xlKENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5KQorc3RhdGljIGJv b2wKK3BvbHlfdG9fY2lyY2xlKENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5LCBOb2RlICpl c2NvbnRleHQpCiB7CiAJaW50CQkJaTsKKwlmbG9hdDgJCXg7CiAKIAlBc3NlcnQocG9seS0+bnB0 cyA+IDApOwogCkBAIC01MzA2LDE0ICs1MzkzLDQzIEBAIHBvbHlfdG9fY2lyY2xlKENJUkNMRSAq cmVzdWx0LCBQT0xZR09OICpwb2x5KQogCXJlc3VsdC0+cmFkaXVzID0gMDsKIAogCWZvciAoaSA9 IDA7IGkgPCBwb2x5LT5ucHRzOyBpKyspCi0JCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5jZW50 ZXIsICZyZXN1bHQtPmNlbnRlciwgJnBvbHktPnBbaV0pOwotCXJlc3VsdC0+Y2VudGVyLnggPSBm bG9hdDhfZGl2KHJlc3VsdC0+Y2VudGVyLngsIHBvbHktPm5wdHMpOwotCXJlc3VsdC0+Y2VudGVy LnkgPSBmbG9hdDhfZGl2KHJlc3VsdC0+Y2VudGVyLnksIHBvbHktPm5wdHMpOworCXsKKwkJcG9p bnRfYWRkX3BvaW50KCZyZXN1bHQtPmNlbnRlciwKKwkJCQkJCSZyZXN1bHQtPmNlbnRlciwKKwkJ CQkJCSZwb2x5LT5wW2ldLAorCQkJCQkJZXNjb250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0ND VVJSRUQoZXNjb250ZXh0KSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXN1bHQtPmNlbnRl ci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3VsdC0+Y2VudGVyLngsCisJCQkJCQkJCQkgICBwb2x5 LT5ucHRzLAorCQkJCQkJCQkJICAgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChlc2NvbnRleHQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXN1bHQtPmNlbnRlci55ID0gZmxv YXQ4X2Rpdl9zYWZlKHJlc3VsdC0+Y2VudGVyLnksCisJCQkJCQkJCQkgICBwb2x5LT5ucHRzLAor CQkJCQkJCQkJICAgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRl eHQpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcG9seS0+bnB0czsgaSsr KQotCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9wbChyZXN1bHQtPnJhZGl1cywKLQkJCQkJCQkJ ICAgcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgTlVMTCkpOwotCXJlc3Vs dC0+cmFkaXVzID0gZmxvYXQ4X2RpdihyZXN1bHQtPnJhZGl1cywgcG9seS0+bnB0cyk7CisJewor CQl4ID0gcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgZXNjb250ZXh0KTsK KwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJCXJldHVybiBmYWxzZTsK KworCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9wbF9zYWZlKHJlc3VsdC0+cmFkaXVzLCB4LCBl c2NvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQkJcmV0 dXJuIGZhbHNlOworCX0KKworCXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3Vs dC0+cmFkaXVzLCBwb2x5LT5ucHRzLCBlc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VS UkVEKGVzY29udGV4dCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOwogfQogCiBE YXR1bQpAQCAtNTMyNCw3ICs1NDQwLDggQEAgcG9seV9jaXJjbGUoUEdfRlVOQ1RJT05fQVJHUykK IAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQ0lSQ0xFKTsKIAotCXBvbHlfdG9fY2lyY2xlKHJl c3VsdCwgcG9seSk7CisJaWYgKCFwb2x5X3RvX2NpcmNsZShyZXN1bHQsIHBvbHksIGZjaW5mby0+ Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlQR19SRVRVUk5fQ0lSQ0xFX1AocmVz dWx0KTsKIH0KLS0gCjIuMzQuMQoK --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0009-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v24-0009-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxbj0 RnJvbSA4ODRiMzJiOTI1N2VjNWE0NWUzNWM4NGRkYmRjMmFjMDY3MzQzYWRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMjE6MDU6NDYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA5LzldIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF UlJPUikKCkludHJvZHVjZSBTUUwtc3RhbmRhcmQgc2FmZSB0eXBlIGNhc3Qgc3ludGF4OgogICAg Q0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpClRo aXMgYWxsb3cgdXNlcnMgdG8gc3BlY2lmeSBhIGRlZmF1bHQgZmFsbGJhY2sgZXhwcmVzc2lvbiBp ZiBhIHR5cGUgY29udmVyc2lvbgpmYWlscywgcmF0aGVyIHRoYW4gcmFpc2luZyBhbiBlcnJvci4K CldpdGggdGhpcyBwYXRjaHNldCwgYWxtb3N0IGFsbCBvZiB0aGUgY2FzdCBmdW5jdGlvbnMgaW4g cGdfY2FzdC5jYXN0ZnVuYyBhcmUgbm93CmVycm9yLXNhZmUuICBDb2VyY2VWaWFJTyBhbmQgQ29l cmNlVG9Eb21haW4gd2VyZSBhbHJlYWR5IGVycm9yLXNhZmUgaW4gdGhlIEhFQUQsCnNlZSBbMF0s IHRoaXMgcGF0Y2ggZXh0ZW5kcyBlcnJvci1zYWZlIGJlaGF2aW9yIHRvIEFycmF5Q29lcmNlRXhw ci4KCkV4YW1wbGU6CiAgICAtLSBSZXR1cm5zICcyMDExLTAxLTAxJyBpbnN0ZWFkIG9mIHRocm93 aW5nIGFuIGludmFsaWQgaW5wdXQgc3ludGF4IGVycm9yLgogICAgU0VMRUNUIENBU1QoJzEnIEFT IGRhdGUgREVGQVVMVCAnMjAxMS0wMS0wMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CgojIEJ1bXBz IGNhdHZlcnNpb24gcmVxdWlyZWQKClswXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dp dC9wb3N0Z3Jlc3FsLmdpdC9jb21taXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRj Mzg0ZjU2Mjc0YgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJh IDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy9wYXRjaC81OTQxCi0tLQogY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCAgICAg ICAgICAgIHwgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dCAgICAg ICAgICB8ICAgNSArCiBjb250cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbCAgICAgICAgICAgICAg ICAgfCAgIDIgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0ICAg IHwgIDI0ICstCiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbCAgICAg fCAgIDUgKwogZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwg IDMyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAgICB8ICA2 NiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICAgIHwgIDI5 ICsKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgICAgICAgICB8ICA1NiAr CiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDUzICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAgICB8ICA4MCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAgICAgICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMgICAgICAgICAgICAgfCAxNDUgKystCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAzNTcgKysrKysrLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAgIHwgIDE4ICsKIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyNSArCiBzcmMvYmFja2VuZC91 dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY0V4cHIuaCAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL2ZtZ3Iu aCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAzOCArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0 aW1pemVyLmggICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9j b2VyY2UuaCAgICAgICAgICAgICB8ICAxNiArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBl LmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qu b3V0ICAgICAgICAgICAgfCA5ODkgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dCAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9lcXVpdmNsYXNzLm91dCAgICAgIHwgICA3ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y2FzdC5zcWwgICAgICAgICAgICAgICAgIHwgNDAxICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9jYXN0LnNxbCAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9lcXVpdmNsYXNzLnNxbCAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDQwIGZpbGVzIGNoYW5nZWQsIDIzODAg aW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvZXhwZWN0 ZWQvY2l0ZXh0Lm91dCBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKaW5kZXgg OGMwYmY1NGYwZjMuLmVjZmFmMmFhODVhIDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9leHBl Y3RlZC9jaXRleHQub3V0CisrKyBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQK QEAgLTEwLDYgKzEwLDExIEBAIFdIRVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlk YXRlKG9wYy5vaWQpOwogLS0tLS0tLS0rLS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FT VCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4 dCB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09O VkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4 dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0kuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIFNhZmUgdHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkLgogLS0gVGVzdCB0aGUgb3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIC0t IFRlc3QgPSBhbmQgPD4uCiBTRUxFQ1QgJ2EnOjpjaXRleHQgPSAnYSc6OmNpdGV4dCBBUyB0Owpk aWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0IGIvY29udHJp Yi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0CmluZGV4IGM1ZTVmMTgwZjJiLi4zZTEyY2Q3 OTNhZCAxMDA2NDQKLS0tIGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0Cisr KyBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dApAQCAtMTAsNiArMTAsMTEg QEAgV0hFUkUgb3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAt LS0tLS0tLSstLS0tLS0tLS0KICgwIHJvd3MpCiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIg QVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VS Uk9SOiAgY2Fubm90IGNhc3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdoZW4gREVGQVVMVCBl eHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitM SU5FIDE6IFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSS4uLgorICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgU2FmZSB0eXBlIGNh c3QgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBUZXN0 IHRoZSBvcGVyYXRvcnMgYW5kIGluZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVzdCA9IGFuZCA8Pi4K IFNFTEVDVCAnYSc6OmNpdGV4dCA9ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250 cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbCBiL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3Fs CmluZGV4IGFhMWNmOWFiZDVjLi5jODIwYjBiZDRkOSAxMDA2NDQKLS0tIGEvY29udHJpYi9jaXRl eHQvc3FsL2NpdGV4dC5zcWwKKysrIGIvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKQEAg LTksNiArOSw4IEBAIFNFTEVDVCBhbW5hbWUsIG9wY25hbWUKIEZST00gcGdfb3BjbGFzcyBvcGMg TEVGVCBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IG9wY21ldGhvZAogV0hFUkUgb3BjLm9pZCA+ PSAxNjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAKK1NFTEVDVCBDQVNUKCdhYmMn OjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0g ZXJyb3IKKwogLS0gVGVzdCB0aGUgb3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIAog LS0gVGVzdCA9IGFuZCA8Pi4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC9zZWxlY3Qub3V0CmluZGV4IGEwNjkxMTljNzkwLi44NGYxMDgxMGY3MiAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAorKysgYi9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC03Myw2ICs3Mywy NSBAQCBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQgMiBGRVRDSCBGSVJTVCAzIFJPVyBPTkxZOwog LS0tLS0KICgwIHJvd3MpCiAKKy0tIGVycm9yIHNhZmUgdHlwZSBjYXN0CitTRUxFQ1QgQ0FTVCgn YScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0t CisgICAgMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMgREVGQVVMVCAy IE9OIENPTlZFUlNJT04gRVJST1IpOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAyIE9OIENP TlZFUlNJT04gRVJST1IpOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCisoMSByb3cp CisKIC0tIERJU1RJTkNUIGFuZCBPUkRFUiBCWSBwYXR0ZXJucwogLS0gVHJ5IHNvbWUgcXVlcnkg cGVybXV0YXRpb25zIHdoaWNoIG9uY2UgcHJvZHVjZWQgaWRlbnRpY2FsIHF1ZXJ5IElEcwogU0VM RUNUIERJU1RJTkNUIDEgQVMgImludCI7CkBAIC0yMjIsNiArMjQxLDkgQEAgU0VMRUNUIGNhbGxz LCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xM QVRFICJDIjsKICAgICAgMiB8ICAgIDIgfCBTRUxFQ1QgJDEgQVMgImludCIgT1JERVIgQlkgMQog ICAgICAxIHwgICAgMiB8IFNFTEVDVCAkMSBBUyBpIFVOSU9OIFNFTEVDVCAkMiBPUkRFUiBCWSBp CiAgICAgIDEgfCAgICAxIHwgU0VMRUNUICQxIHx8ICQyCisgICAgIDEgfCAgICAxIHwgU0VMRUNU IENBU1QoJDEgQVMgaW50IERFRkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8 ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBudW1lcmljIERFRkFVTFQgJDIgT04gQ09OVkVSU0lP TiBFUlJPUikKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBudW1lcmljKDEwKSBE RUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJST1IpCiAgICAgIDIgfCAgICAyIHwgU0VMRUNUIERJ U1RJTkNUICQxIEFTICJpbnQiCiAgICAgIDAgfCAgICAwIHwgU0VMRUNUIGNhbGxzLCByb3dzLCBx dWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIgog ICAgICAxIHwgICAgMSB8IFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1Qg TlVMTCBBUyB0CkBAIC0yMzAsNyArMjUyLDcgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBG Uk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAg ICB8ICAgICAgfCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgIHwgICAgICB8ICAgU0VMRUNU IGYgRlJPTSB0IE9SREVSIEJZIGYKICAgICAgMSB8ICAgIDEgfCBzZWxlY3QgJDE6Ompzb25iID8g JDIKLSgxNyByb3dzKQorKDIwIHJvd3MpCiAKIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKSBJUyBOT1QgTlVMTCBBUyB0OwogIHQgCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC9zZWxlY3Quc3FsCmluZGV4IGExMGQ2MThjMDM0Li40YmU5Nzk3N2JhNiAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKKysrIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKQEAgLTI1LDYgKzI1LDExIEBAIFNFTEVD VCAxIEFTICJpbnQiIExJTUlUIDMgT0ZGU0VUIDM7CiBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQg MSBGRVRDSCBGSVJTVCAyIFJPVyBPTkxZOwogU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVU Q0ggRklSU1QgMyBST1cgT05MWTsKIAorLS0gZXJyb3Igc2FmZSB0eXBlIGNhc3QKK1NFTEVDVCBD QVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoJzEyJyBBUyBudW1lcmljIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKCcxMicgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1Ip OworCiAtLSBESVNUSU5DVCBhbmQgT1JERVIgQlkgcGF0dGVybnMKIC0tIFRyeSBzb21lIHF1ZXJ5 IHBlcm11dGF0aW9ucyB3aGljaCBvbmNlIHByb2R1Y2VkIGlkZW50aWNhbCBxdWVyeSBJRHMKIFNF TEVDVCBESVNUSU5DVCAxIEFTICJpbnQiOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRh eC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IDY3NDgyOTk2ODYxLi5hYTBm YzFlZjgxYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9zeW50YXguc2dtbApAQCAtMjA3MSw2ICsyMDcxLDEwIEBAIENBU1QgKCA8cmVwbGFj ZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBs YWNlYWJsZT4KICAgICBUaGUgPGxpdGVyYWw+Q0FTVDwvbGl0ZXJhbD4gc3ludGF4IGNvbmZvcm1z IHRvIFNRTDsgdGhlIHN5bnRheCB3aXRoCiAgICAgPGxpdGVyYWw+Ojo8L2xpdGVyYWw+IGlzIGhp c3RvcmljYWwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgogICAgIHVzYWdl LgorICAgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVSU0lP TiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIGlzIHNwZWNpZmllZCBpcyBlcXVpdmFsZW50IHRvOgor PHN5bm9wc2lzPgorQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g QVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFUlJPUiBPTiBDT05WRVJTSU9OIEVS Uk9SICkKKzwvc3lub3BzaXM+CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMjEyNSw2ICsy MTI5LDM0IEBAIENBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFT IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4KICAgICAgPHhyZWYgbGlua2VuZD0ic3Fs LWNyZWF0ZWNhc3QiLz4uCiAgICAgPC9wYXJhPgogICAgPC9ub3RlPgorCisgPHNlY3QzIGlkPSJz cWwtc3ludGF4LXR5cGUtY2FzdHMtc2FmZSI+CisgIDx0aXRsZT5TYWZlIFR5cGUgQ2FzdDwvdGl0 bGU+CisgICA8cGFyYT4KKyAgICBBIHR5cGUgY2FzdCBtYXkgb2NjYXNpb25hbGx5IGZhaWwuIFRv IGd1YXJkIGFnYWluc3Qgc3VjaCBmYWlsdXJlcywgeW91IGNhbgorICAgIHByb3ZpZGUgYW4gPGxp dGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHRvIGhhbmRsZSBwb3Rl bnRpYWwgZXJyb3JzLgorICAgIFRoZSBzeW50YXggZm9yIHNhZmUgdHlwZSBjYXN0IGlzOgorPHN5 bm9wc2lzPgorQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMg PHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gT04gQ09OVkVSU0lPTiBFUlJPUiApCis8L3N5bm9wc2lzPgor ICAgIElmIHRoZSB0eXBlIGNhc3QgZmFpbHMsIGFuIGVycm9yIGlzIG5vdCByYWlzZWQuICBJbnN0 ZWFkLCBldmFsdWF0aW9uIGZhbGxzCisgICAgYmFjayB0byB0aGUgZGVmYXVsdCA8cmVwbGFjZWFi bGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHNwZWNpZmllZCBpbiB0aGUKKyAgICA8bGl0ZXJh bD5PTiBDT05WRVJTSU9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2UuCisgICAgQXQgcHJlc2VudCwg dGhpcyBvbmx5IHN1cHBvcnQgYnVpbHQtaW4gdHlwZSBjYXN0cywgc2VlIDx4cmVmIGxpbmtlbmQ9 ImNhdGFsb2ctcGctY2FzdCIvPi4KKyAgICBVc2VyLWRlZmluZWQgdHlwZSBjYXN0cyBjcmVhdGVk IHdpdGggPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZWNhc3QiPkNSRUFURSBDQVNUPC9saW5rPgor ICAgIGFyZSBub3Qgc3VwcG9ydGVkLgorICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBTb21l IGV4YW1wbGVzOgorPHNjcmVlbj4KK1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBpbnRlZ2Vy IERFRkFVTFQgMyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5SZXN1bHQ6 IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVyb3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0PgorU0VM RUNUIENBU1QoVEVYVCAnZXJyb3InIEFTIG51bWVyaWMgREVGQVVMVCAxLjEgT04gQ09OVkVSU0lP TiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21w dXRlcm91dHB1dD4xLjE8L2NvbXB1dGVyb3V0cHV0PgorPC9zY3JlZW4+CisgICAgPC9wYXJhPgor ICA8L3NlY3QzPgogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0ic3FsLXN5bnRheC1jb2xsYXRl LWV4cHJzIj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IDc3MjI5MTQxYjM4Li5jMjUxMTc5 NDU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC05OSw2ICs5OSw5IEBAIHN0YXRpYyB2 b2lkIEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdn c3RhdGUsCiBzdGF0aWMgdm9pZCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4 cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAogCQkJ CQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOworc3RhdGljIHZvaWQgRXhlY0luaXRTYWZlVHlw ZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJ CQkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251bGwsCisJCQkJCQkJCQkgRXhwckV2YWxT dGVwICpzY3JhdGNoKTsKIHN0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkNvZXJjaW9uKEV4cHJTdGF0 ZSAqc3RhdGUsIEpzb25SZXR1cm5pbmcgKnJldHVybmluZywKIAkJCQkJCQkJIEVycm9yU2F2ZUNv bnRleHQgKmVzY29udGV4dCwgYm9vbCBvbWl0X3F1b3RlcywKIAkJCQkJCQkJIGJvb2wgZXhpc3Rz X2NvZXJjZSwKQEAgLTE3MzQsNiArMTczNyw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2Rl LCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJZWxlbXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9 IHBhbGxvY19vYmplY3QoRGF0dW0pOwogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxs ID0gcGFsbG9jX29iamVjdChib29sKTsKKwkJCQllbGVtc3RhdGUtPmVzY29udGV4dCA9IHN0YXRl LT5lc2NvbnRleHQ7CiAKIAkJCQlFeGVjSW5pdEV4cHJSZWMoYWNvZXJjZS0+ZWxlbWV4cHIsIGVs ZW1zdGF0ZSwKIAkJCQkJCQkJJmVsZW1zdGF0ZS0+cmVzdmFsdWUsICZlbGVtc3RhdGUtPnJlc251 bGwpOwpAQCAtMjIwOSw2ICsyMjEzLDE1IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBF eHByU3RhdGUgKnN0YXRlLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9TYWZlVHlwZUNh c3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShT YWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKworCQkJCUV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihz dGNleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCwgJnNjcmF0Y2gpOworCisJCQkJYnJlYWs7CisJ CQl9CisKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNv YWxlc2NlID0gKENvYWxlc2NlRXhwciAqKSBub2RlOwpAQCAtMjczNiw2ICsyNzQ5LDcgQEAgRXhl Y0luaXRGdW5jKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgRXhwciAqbm9kZSwgTGlzdCAqYXJncywg T2lkIGZ1bmNpZCwKIAlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbzsKIAlpbnQJCQlhcmdubzsKIAlM aXN0Q2VsbCAgICpsYzsKKwlOb2RlCSAgICpjb250ZXh0ID0gTlVMTDsKIAogCS8qIENoZWNrIHBl cm1pc3Npb24gdG8gY2FsbCBmdW5jdGlvbiAqLwogCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVj ayhQcm9jZWR1cmVSZWxhdGlvbklkLCBmdW5jaWQsIEdldFVzZXJJZCgpLCBBQ0xfRVhFQ1VURSk7 CkBAIC0yNzQzLDYgKzI3NTcsOSBAQCBFeGVjSW5pdEZ1bmMoRXhwckV2YWxTdGVwICpzY3JhdGNo LCBFeHByICpub2RlLCBMaXN0ICphcmdzLCBPaWQgZnVuY2lkLAogCQlhY2xjaGVja19lcnJvcihh Y2xyZXN1bHQsIE9CSkVDVF9GVU5DVElPTiwgZ2V0X2Z1bmNfbmFtZShmdW5jaWQpKTsKIAlJbnZv a2VGdW5jdGlvbkV4ZWN1dGVIb29rKGZ1bmNpZCk7CiAKKwlpZiAoSXNBKG5vZGUsIEZ1bmNFeHBy KSAmJiAoKEZ1bmNFeHByICopIG5vZGUpLT5lcnJvcnNhZmUpCisJCWNvbnRleHQgPSAoTm9kZSAq KSBzdGF0ZS0+ZXNjb250ZXh0OworCiAJLyoKIAkgKiBTYWZldHkgY2hlY2sgb24gbmFyZ3MuICBV bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBuZXZlcgogCSAqIGZhaWwsIGFz IHBhcnNlciBzaG91bGQgY2hlY2sgc29vbmVyLiAgQnV0IHBvc3NpYmx5IGl0IG1pZ2h0IGZhaWwg aWYKQEAgLTI3NjksNyArMjc4Niw4IEBAIEV4ZWNJbml0RnVuYyhFeHByRXZhbFN0ZXAgKnNjcmF0 Y2gsIEV4cHIgKm5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAKIAkvKiBJbml0aWFsaXpl IGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyIHN0cnVjdHVyZSB0b28gKi8KIAlJbml0RnVuY3Rpb25D YWxsSW5mb0RhdGEoKmZjaW5mbywgZmxpbmZvLAotCQkJCQkJCSBuYXJncywgaW5wdXRjb2xsaWQs IE5VTEwsIE5VTEwpOworCQkJCQkJCSBuYXJncywgaW5wdXRjb2xsaWQsCisJCQkJCQkJIGNvbnRl eHQsIE5VTEwpOwogCiAJLyogS2VlcCBleHRyYSBjb3BpZXMgb2YgdGhpcyBpbmZvIHRvIHNhdmUg YW4gaW5kaXJlY3Rpb24gYXQgcnVudGltZSAqLwogCXNjcmF0Y2gtPmQuZnVuYy5mbl9hZGRyID0g ZmxpbmZvLT5mbl9hZGRyOwpAQCAtNDc3MCw2ICs0Nzg4LDUyIEBAIEV4ZWNCdWlsZFBhcmFtU2V0 RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJcmV0dXJuIHN0YXRlOwogfQogCisvKgorICogUHVzaCBz dGVwcyB0byBldmFsdWF0ZSBhIFNhZmVUeXBlQ2FzdEV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkKKyAqIGV4cHJlc3Npb25zLgorICovCitzdGF0aWMgdm9pZAorRXhlY0luaXRTYWZlVHlw ZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJ CQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251bGwsCisJCQkJCQkgRXhwckV2YWxTdGVwICpz Y3JhdGNoKQoreworCS8qCisJICogQ29lcmNpb24gdG8gdGhlIHRhcmdldCB0eXBlIGZhaWxlZC4g RmFsbGluZyBiYWNrIHRvIHRoZSBERUZBVUxUCisJICogZXhwcmVzc2lvbiBmcm9tIHRoZSBPTiBD T05WRVJTSU9OIEVSUk9SIGNsYXVzZSB0byBmaW5pc2guCisJICovCisJaWYgKHN0Y2V4cHItPmNh c3RleHByID09IE5VTEwpCisJeworCQlFeGVjSW5pdEV4cHJSZWMoc3RjZXhwci0+ZGVmZXhwciwg c3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCXJldHVybjsKKwl9CisJZWxzZQorCXsKKwkJU2Fm ZVR5cGVDYXN0U3RhdGUgKnN0Y3N0YXRlID0gcGFsbG9jMF9vYmplY3QoU2FmZVR5cGVDYXN0U3Rh dGUpOworCQlFcnJvclNhdmVDb250ZXh0ICpzYXZlZF9lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250 ZXh0OworCisJCXN0Y3N0YXRlLT5zdGNleHByID0gc3RjZXhwcjsKKwkJc3Rjc3RhdGUtPmVzY29u dGV4dC50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gJnN0 Y3N0YXRlLT5lc2NvbnRleHQ7CisKKwkJLyogZXZhbHVhdGUgYXJndW1lbnQgZXhwcmVzc2lvbiBp bnRvIHN0ZXAncyByZXN1bHQgYXJlYSAqLworCQlFeGVjSW5pdEV4cHJSZWMoc3RjZXhwci0+Y2Fz dGV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9T QUZFVFlQRV9DQVNUOworCQlzY3JhdGNoLT5kLnN0Y2V4cHIuc3Rjc3RhdGUgPSBzdGNzdGF0ZTsK KwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkJLyoKKwkJICogRXZhbHVh dGUgdGhlIERFRkFVTFQgZXhwcmVzc2lvbiBjYXN0LiBzdGF0ZS0+ZXNjb250ZXh0IG11c3QgYmUK KwkJICogTlVMTCwgYXMgdGhpcyBldmFsdWF0aW9uIHNob3VsZCBub3QgYmUgZXJyb3Itc2FmZS4K KwkJICovCisJCXN0YXRlLT5lc2NvbnRleHQgPSBOVUxMOworCQlFeGVjSW5pdEV4cHJSZWMoc3Rj c3RhdGUtPnN0Y2V4cHItPmRlZmV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKwkJc3RhdGUt PmVzY29udGV4dCA9IHNhdmVkX2VzY29udGV4dDsKKworCQlzdGNzdGF0ZS0+anVtcF9lbmQgPSBz dGF0ZS0+c3RlcHNfbGVuOworCX0KK30KKwogLyoKICAqIFB1c2ggc3RlcHMgdG8gZXZhbHVhdGUg YSBKc29uRXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vic2lkaWFyeSBleHByZXNzaW9ucy4KICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggNDMxMTY0MzFlZGYuLjc5ZWJl MDI1NGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTU3MCw2ICs1 NzAsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfWE1MRVhQUiwKIAkJJiZDQVNFX0VF T1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNFX0VFT1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VF T1BfU0FGRVRZUEVfQ0FTVCwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfUEFUSCwKIAkJJiZDQVNF X0VFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9O X0ZJTklTSCwKQEAgLTE5MjgsNiArMTkyOSwyOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhU KCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX1NBRkVUWVBFX0NBU1QpCisJCXsKKwkJCVNhZmVU eXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IG9wLT5kLnN0Y2V4cHIuc3Rjc3RhdGU7CisKKwkJCWlm ICghU09GVF9FUlJPUl9PQ0NVUlJFRCgmc3Rjc3RhdGUtPmVzY29udGV4dCkpCisJCQkJRUVPX0pV TVAoc3Rjc3RhdGUtPmp1bXBfZW5kKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQkqb3AtPnJlc3ZhbHVl ID0gKERhdHVtKSAwOworCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisKKwkJCQkvKgorCQkJCSAq IFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZvciBjYXRjaGluZyBlcnJvcnMgd2hlbgorCQkJ CSAqIGNvZXJjaW5nIGEgZXhwcmVzc2lvbi4KKwkJCQkgKi8KKwkJCQlzdGNzdGF0ZS0+ZXNjb250 ZXh0LmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCQkJc3Rjc3RhdGUtPmVzY29udGV4dC5kZXRh aWxzX3dhbnRlZCA9IGZhbHNlOworCisJCQkJRUVPX05FWFQoKTsKKwkJCX0KKwkJfQorCiAJCUVF T19DQVNFKEVFT1BfSlNPTkVYUFJfUEFUSCkKIAkJewogCQkJLyogdG9vIGNvbXBsZXggZm9yIGFu IGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLwpAQCAtMzY0Niw2ICszNjY5LDEyIEBAIEV4ZWNFdmFs QXJyYXlDb2VyY2UoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRl eHQgKmVjb250ZXh0KQogCQkJCQkJCSAgZWNvbnRleHQsCiAJCQkJCQkJICBvcC0+ZC5hcnJheWNv ZXJjZS5yZXN1bHRlbGVtdHlwZSwKIAkJCQkJCQkgIG9wLT5kLmFycmF5Y29lcmNlLmFtc3RhdGUp OworCisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQob3AtPmQuYXJyYXljb2VyY2UuZWxlbWV4cHJz dGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpv cC0+cmVzbnVsbCA9IHRydWU7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4 cHIuYwppbmRleCA2NTBmMWQ0MmE5My4uMjMzYmQyYWUyN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xs dm1qaXRfZXhwci5jCkBAIC0yMjU2LDYgKzIyNTYsNjIgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhw clN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOwog CQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfU0FGRVRZUEVfQ0FTVDoKKwkJCQl7CisJCQkJCVNh ZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IG9wLT5kLnN0Y2V4cHIuc3Rjc3RhdGU7CisJCQkJ CUxMVk1CYXNpY0Jsb2NrUmVmIGJfbm9lcnJvcjsKKwkJCQkJTExWTUJhc2ljQmxvY2tSZWYgYl9l cnJvcjsKKwkJCQkJTExWTVZhbHVlUmVmIHZfZXJyb3Jfb2NjdXJyZWRfcDsKKwkJCQkJTExWTVZh bHVlUmVmIHZfZGV0YWlsc193YW50ZWRfcDsKKwkJCQkJTExWTVZhbHVlUmVmIHZfZXJyb3Jfb2Nj dXJyZWQ7CisKKwkJCQkJYl9ub2Vycm9yID0gbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsg MV0sCisJCQkJCQkJCQkJCSAgIm9wLiVkLm5vZXJyb3IiLCBvcG5vKTsKKwkJCQkJYl9lcnJvciA9 IGxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCQkib3AuJWQuZXJy b3IiLCBvcG5vKTsKKworCQkJCQkvKiBHZXQgcG9pbnRlciB0byBlcnJvcl9vY2N1cnJlZCBmaWVs ZCAqLworCQkJCQl2X2Vycm9yX29jY3VycmVkX3AgPSBsX3B0cl9jb25zdCgmc3Rjc3RhdGUtPmVz Y29udGV4dC5lcnJvcl9vY2N1cnJlZCwKKwkJCQkJCQkJCQkJCQkgbF9wdHIoVHlwZVN0b3JhZ2VC b29sKSk7CisKKwkJCQkJLyogTG9hZCBlcnJvcl9vY2N1cnJlZCBhdCBydW50aW1lICovCisJCQkJ CXZfZXJyb3Jfb2NjdXJyZWQgPSBsX2xvYWQoYiwgVHlwZVN0b3JhZ2VCb29sLCB2X2Vycm9yX29j Y3VycmVkX3AsICIiKTsKKworCQkJCQkvKiBCcmFuY2ggYmFzZWQgb24gZXJyb3Jfb2NjdXJyZWQ6 IG5vIGVycm9yIC0+IGp1bXBfZW5kICovCisJCQkJCUxMVk1CdWlsZENvbmRCcihiLAorCQkJCQkJ CQkJTExWTUJ1aWxkSUNtcChiLCBMTFZNSW50RVEsIHZfZXJyb3Jfb2NjdXJyZWQsCisJCQkJCQkJ CQkJCQkgIGxfc2Jvb2xfY29uc3QoMCksICIiKSwKKwkJCQkJCQkJCWJfbm9lcnJvciwKKwkJCQkJ CQkJCWJfZXJyb3IpOworCisJCQkJCS8qIE5vIGVycm9yOiBqdW1wIHRvIGVuZCAqLworCQkJCQlM TFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9ub2Vycm9yKTsKKwkJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbc3Rjc3RhdGUtPmp1bXBfZW5kXSk7CisKKwkJCQkJLyogRXJyb3Igb2NjdXJy ZWQ6IHNldCBudWxsLCByZXNldCBmbGFncywgZXZhbHVhdGUgZGVmYXVsdCAqLworCQkJCQlMTFZN UG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9lcnJvcik7CisKKwkJCQkJLyogc2V0IHJlc251bGwg dG8gdHJ1ZSAqLworCQkJCQlMTFZNQnVpbGRTdG9yZShiLCBsX3Nib29sX2NvbnN0KDEpLCB2X3Jl c251bGxwKTsKKworCQkJCQkvKiByZXNldCByZXN2YWx1ZSAqLworCQkJCQlMTFZNQnVpbGRTdG9y ZShiLCBsX2RhdHVtX2NvbnN0KDApLCB2X3Jlc3ZhbHVlcCk7CisKKwkJCQkJLyoKKwkJCQkJICog UmVzZXQgZm9yIG5leHQgdXNlIHN1Y2ggYXMgZm9yIGNhdGNoaW5nIGVycm9ycyB3aGVuCisJCQkJ CSAqIGNvZXJjaW5nIGEgZXhwcmVzc2lvbi4KKwkJCQkJICovCisJCQkJCUxMVk1CdWlsZFN0b3Jl KGIsIGxfc2Jvb2xfY29uc3QoMCksIHZfZXJyb3Jfb2NjdXJyZWRfcCk7CisKKwkJCQkJdl9kZXRh aWxzX3dhbnRlZF9wID0gbF9wdHJfY29uc3QoJnN0Y3N0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193 YW50ZWQsCisJCQkJCQkJCQkJCQkJIGxfcHRyKFR5cGVTdG9yYWdlQm9vbCkpOworCQkJCQlMTFZN QnVpbGRTdG9yZShiLCBsX3Nib29sX2NvbnN0KDApLCB2X2RldGFpbHNfd2FudGVkX3ApOworCisJ CQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CisKKwkJCQkJYnJlYWs7CisJ CQkJfQorCiAJCQljYXNlIEVFT1BfSlNPTkVYUFJfUEFUSDoKIAkJCQl7CiAJCQkJCUpzb25FeHBy U3RhdGUgKmpzZXN0YXRlID0gb3AtPmQuanNvbmV4cHIuanNlc3RhdGU7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCmluZGV4IDNjZDM1YzVjNDU3Li41YTEwOTFkMGQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMK QEAgLTYwNSw2ICs2MDUsNyBAQCBtYWtlRnVuY0V4cHIoT2lkIGZ1bmNpZCwgT2lkIHJldHR5cGUs IExpc3QgKmFyZ3MsCiAJZnVuY2V4cHItPmZ1bmNjb2xsaWQgPSBmdW5jY29sbGlkOwogCWZ1bmNl eHByLT5pbnB1dGNvbGxpZCA9IGlucHV0Y29sbGlkOwogCWZ1bmNleHByLT5hcmdzID0gYXJnczsK KwlmdW5jZXhwci0+ZXJyb3JzYWZlID0gZmFsc2U7CiAJZnVuY2V4cHItPmxvY2F0aW9uID0gLTE7 CiAKIAlyZXR1cm4gZnVuY2V4cHI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDZhODUwMzQ5Y2Y3 Li5iNWU4OWI3ZjYwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTIwNiw2ICsyMDYsOSBAQCBl eHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfUm93Q29tcGFyZUV4cHI6CiAJCQl0 eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJ CXR5cGUgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdHR5cGU7CisJ CQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXR5cGUgPSAoKGNvbnN0IENvYWxl c2NlRXhwciAqKSBleHByKS0+Y29hbGVzY2V0eXBlOwogCQkJYnJlYWs7CkBAIC00NTMsNiArNDU2 LDggQEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJCXJldHVybiB0eXBtb2Q7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQlyZXR1cm4gKChj b25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHR0eXBtb2Q7CiAJCWNhc2UgVF9D b2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJLyoKQEAgLTk3MCw2ICs5NzUsOSBAQCBleHByQ29sbGF0 aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBSb3dDb21wYXJlRXhwcidzIHJlc3VsdCBpcyBi b29sZWFuIC4uLiAqLwogCQkJY29sbCA9IEludmFsaWRPaWQ7CS8qIC4uLiBzbyBpdCBoYXMgbm8g Y29sbGF0aW9uICovCiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQlj b2xsID0gKChjb25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQ7CisJ CQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCWNvbGwgPSAoKGNvbnN0IENvYWxl c2NlRXhwciAqKSBleHByKS0+Y29hbGVzY2Vjb2xsaWQ7CiAJCQlicmVhazsKQEAgLTEyNDAsNiAr MTI0OCw5IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJ CS8qIFJvd0NvbXBhcmVFeHByJ3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQlBc3NlcnQo IU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIC4uLiBzbyBuZXZlciBzZXQgYSBjb2xsYXRpb24g Ki8KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCSgoU2FmZVR5cGVD YXN0RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkID0gY29sbGF0aW9uOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQkoKENvYWxlc2NlRXhwciAqKSBleHByKS0+Y29hbGVz Y2Vjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTE1NTgsNiArMTU2OSw5IEBAIGV4 cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQkJLyoganVzdCB1c2UgbGVmdG1vc3QgYXJn dW1lbnQncyBsb2NhdGlvbiAqLwogCQkJbG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgoY29u c3QgUm93Q29tcGFyZUV4cHIgKikgZXhwciktPmxhcmdzKTsKIAkJCWJyZWFrOworCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCWxvYyA9ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBl eHByKS0+bG9jYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCS8q IENPQUxFU0NFIGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgZmlyc3QgdGhpbmcgKi8KIAkJ CWxvYyA9ICgoY29uc3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5sb2NhdGlvbjsKQEAgLTIzMzMs NiArMjM0NywxOCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJ CQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4 cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVU eXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJaWYgKFdBTEsoc3RjZXhwci0+c291cmNlKSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3RjZXhwci0+Y2FzdGV4cHIpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5kZWZleHByKSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXJldHVy biBXQUxLKCgoQ29hbGVzY2VFeHByICopIG5vZGUpLT5hcmdzKTsKIAkJY2FzZSBUX01pbk1heEV4 cHI6CkBAIC0zMzY4LDYgKzMzOTQsMTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChO b2RlICpub2RlLAogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7 CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIg KnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKwkJCQlTYWZlVHlw ZUNhc3RFeHByICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgc3RjZXhwciwgU2Fm ZVR5cGVDYXN0RXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnNvdXJjZSwgc3RjZXhwci0+c291 cmNlLCBFeHByICopOworCQkJCU1VVEFURShuZXdub2RlLT5jYXN0ZXhwciwgc3RjZXhwci0+Y2Fz dGV4cHIsIEV4cHIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmRlZmV4cHIsIHN0Y2V4cHItPmRl ZmV4cHIsIEV4cHIgKik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJ CWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJewogCQkJCUNvYWxlc2NlRXhwciAq Y29hbGVzY2VleHByID0gKENvYWxlc2NlRXhwciAqKSBub2RlOwpAQCAtNDUwNCw2ICs0NTQzLDIw IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0 dXJuIHRydWU7CiAJCQkJaWYgKFdBTEsodGMtPnR5cGVOYW1lKSkKIAkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsodGMtPmRlZmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNh c3RFeHByICpzdGNleHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJ CQlpZiAoV0FMSyhzdGNleHByLT5zb3VyY2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAo V0FMSyhzdGNleHByLT5jYXN0ZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxL KHN0Y2V4cHItPmRlZmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwog CQljYXNlIFRfQ29sbGF0ZUNsYXVzZToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpp bmRleCA5ZmIyNjZkMDg5ZC4uOGE1NGJhMjY4OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9j bGF1c2VzLmMKQEAgLTY5LDYgKzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlMaXN0CSAgICphY3Rp dmVfZm5zOwogCU5vZGUJICAgKmNhc2VfdmFsOwogCWJvb2wJCWVzdGltYXRlOworCUVycm9yU2F2 ZUNvbnRleHQgKmVzY29udGV4dDsKIH0gZXZhbF9jb25zdF9leHByZXNzaW9uc19jb250ZXh0Owog CiB0eXBlZGVmIHN0cnVjdApAQCAtMjUwNyw2ICsyNTA4LDcgQEAgZXZhbF9jb25zdF9leHByZXNz aW9ucyhQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMg PSBOSUw7CS8qIG5vdGhpbmcgYmVpbmcgcmVjdXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRl eHQuY2FzZV92YWwgPSBOVUxMOwkvKiBubyBDQVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4 dC5lc3RpbWF0ZSA9IGZhbHNlOwkvKiBzYWZlIHRyYW5zZm9ybWF0aW9ucyBvbmx5ICovCisJY29u dGV4dC5lc2NvbnRleHQgPSBOVUxMOwkvKiBmb3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1 YXRpb24gKi8KIAlyZXR1cm4gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZj b250ZXh0KTsKIH0KIApAQCAtMjY0Niw2ICsyNjQ4LDcgQEAgZXN0aW1hdGVfZXhwcmVzc2lvbl92 YWx1ZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMg PSBOSUw7CS8qIG5vdGhpbmcgYmVpbmcgcmVjdXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRl eHQuY2FzZV92YWwgPSBOVUxMOwkvKiBubyBDQVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4 dC5lc3RpbWF0ZSA9IHRydWU7CS8qIHVuc2FmZSB0cmFuc2Zvcm1hdGlvbnMgT0sgKi8KKwljb250 ZXh0LmVzY29udGV4dCA9IE5VTEw7CS8qIGZvciBlcnJvci1zYWZlIGV4cHJlc3Npb24gZXZhbHVh dGlvbiAqLwogCXJldHVybiBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3Iobm9kZSwgJmNv bnRleHQpOwogfQogCkBAIC0yNjcxLDExICsyNjc0LDEyIEBAIGVzdGltYXRlX2V4cHJlc3Npb25f dmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJKCFleHByZXNzaW9uX3RyZWVf d2Fsa2VyKChOb2RlICopIChub2RlKSwgY29udGFpbl9ub25fY29uc3Rfd2Fsa2VyLCBOVUxMKSkK IAogLyogR2VuZXJpYyBtYWNybyBmb3IgYXBwbHlpbmcgZXZhbHVhdGVfZXhwciAqLwotI2RlZmlu ZSBlY2VfZXZhbHVhdGVfZXhwcihub2RlKSBcCisjZGVmaW5lIGVjZV9ldmFsdWF0ZV9leHByKG5v ZGUsIGVzY29udGV4dCkgXAogCSgoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIChub2Rl KSwgXAogCQkJCQkJCWV4cHJUeXBlKChOb2RlICopIChub2RlKSksIFwKIAkJCQkJCQlleHByVHlw bW9kKChOb2RlICopIChub2RlKSksIFwKLQkJCQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChu b2RlKSkpKQorCQkJCQkJCWV4cHJDb2xsYXRpb24oKE5vZGUgKikgKG5vZGUpKSwgXAorCQkJCQkJ CWVzY29udGV4dCkpCiAKIC8qCiAgKiBSZWN1cnNpdmUgZ3V0cyBvZiBldmFsX2NvbnN0X2V4cHJl c3Npb25zL2VzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUKQEAgLTI4NjEsNiArMjg2NSw3IEBAIGV2 YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCW5ld2V4cHItPmZ1 bmNjb2xsaWQgPSBleHByLT5mdW5jY29sbGlkOwogCQkJCW5ld2V4cHItPmlucHV0Y29sbGlkID0g ZXhwci0+aW5wdXRjb2xsaWQ7CiAJCQkJbmV3ZXhwci0+YXJncyA9IGFyZ3M7CisJCQkJbmV3ZXhw ci0+ZXJyb3JzYWZlID0gZXhwci0+ZXJyb3JzYWZlOwogCQkJCW5ld2V4cHItPmxvY2F0aW9uID0g ZXhwci0+bG9jYXRpb247CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld2V4cHI7CiAJCQl9CkBAIC0z MTM2LDcgKzMxNDEsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9k ZSwKIAogCQkJCWlmICghaGFzX25vbmNvbnN0X2lucHV0ICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9p c19zYWZlKGV4cHItPm9wZnVuY2lkLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0 ZV9leHByKGV4cHIpOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoZXhwciwgKE5vZGUg KikgY29udGV4dC0+ZXNjb250ZXh0KTsKIAogCQkJCXJldHVybiAoTm9kZSAqKSBleHByOwogCQkJ fQpAQCAtMzE1Niw3ICszMTYxLDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5v ZGUgKm5vZGUsCiAJCQkJICovCiAJCQkJaWYgKGVjZV9hbGxfYXJndW1lbnRzX2NvbnN0KHNhb3Ap ICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19zYWZlKHNhb3AtPm9wZnVuY2lkLCBjb250ZXh0KSkK LQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKHNhb3ApOworCQkJCQlyZXR1cm4gZWNlX2V2 YWx1YXRlX2V4cHIoc2FvcCwgKE5vZGUgKikgY29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQlyZXR1 cm4gKE5vZGUgKikgc2FvcDsKIAkJCX0KIAkJY2FzZSBUX0Jvb2xFeHByOgpAQCAtMzI2Nyw2ICsz MjcyLDQyIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJ CQkJCQkJCQkJICBjb3B5T2JqZWN0KGp2ZS0+Zm9ybWF0KSk7CiAJCQl9CiAKKwkJY2FzZSBUX1Nh ZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjID0gY2FzdE5v ZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqbmV3ZXhw ciA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdEV4cHIpOworCisJCQkJTm9kZQkgICAqY2FzdGV4cHIg PSAoTm9kZSAqKSBzdGMtPmNhc3RleHByOworCQkJCU5vZGUJICAgKmRlZmV4cHIgPSAoTm9kZSAq KSBzdGMtPmRlZmV4cHI7CisKKwkJCQkvKgorCQkJCSAqIE5vIG5lZWQgdG8gZm9sZCAic291cmNl IiB0byBhIGNvbnN0YW50LiBUaGUgZXhlY3V0b3IgZG9lcworCQkJCSAqIG5vdCB1c2UgaXQsIHNl ZSBFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIuIEFkZGl0aW9uYWxseSwKKwkJCQkgKiBjYXN0ZXhw ciBleHByZXNzaW9uIHRyZWUgbWF5IGFscmVhZHkgY29udGFpbiB0aGUgInNvdXJjZSIKKwkJCQkg KiBub2RlLgorCQkJCSAqLworCQkJCWNvbnRleHQtPmVzY29udGV4dCA9IG1ha2VOb2RlKEVycm9y U2F2ZUNvbnRleHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JTYXZl Q29udGV4dDsKKwkJCQljb250ZXh0LT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7 CisKKwkJCQljYXN0ZXhwciA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihjYXN0ZXhw ciwKKwkJCQkJCQkJCQkJCQkJICBjb250ZXh0KTsKKwkJCQlwZnJlZShjb250ZXh0LT5lc2NvbnRl eHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4dCA9IE5VTEw7CisKKwkJCQlkZWZleHByID0gZXZh bF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGRlZmV4cHIsCisJCQkJCQkJCQkJCQkJCSBjb250 ZXh0KTsKKworCQkJCW5ld2V4cHItPnNvdXJjZSA9IChFeHByICopIHN0Yy0+c291cmNlOworCQkJ CW5ld2V4cHItPmNhc3RleHByID0gKEV4cHIgKikgY2FzdGV4cHI7CisJCQkJbmV3ZXhwci0+ZGVm ZXhwciA9IChFeHByICopIGRlZmV4cHI7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwZSA9IHN0Yy0+ cmVzdWx0dHlwZTsKKwkJCQluZXdleHByLT5yZXN1bHR0eXBtb2QgPSBzdGMtPnJlc3VsdHR5cG1v ZDsKKwkJCQluZXdleHByLT5yZXN1bHRjb2xsaWQgPSBzdGMtPnJlc3VsdGNvbGxpZDsKKworCQkJ CXJldHVybiAoTm9kZSAqKSBuZXdleHByOworCQkJfQorCiAJCWNhc2UgVF9TdWJQbGFuOgogCQlj YXNlIFRfQWx0ZXJuYXRpdmVTdWJQbGFuOgogCkBAIC0zNDE5LDcgKzM0NjAsNyBAQCBldmFsX2Nv bnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQlpZiAoYWMtPmFyZyAmJiBJ c0EoYWMtPmFyZywgQ29uc3QpICYmCiAJCQkJCWFjLT5lbGVtZXhwciAmJiAhSXNBKGFjLT5lbGVt ZXhwciwgQ29lcmNlVG9Eb21haW4pICYmCiAJCQkJCSFjb250YWluX211dGFibGVfZnVuY3Rpb25z KChOb2RlICopIGFjLT5lbGVtZXhwcikpCi0JCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihh Yyk7CisJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihhYywgKE5vZGUgKikgY29udGV4dC0+ ZXNjb250ZXh0KTsKIAogCQkJCXJldHVybiAoTm9kZSAqKSBhYzsKIAkJCX0KQEAgLTM2MTUsNyAr MzY1Niw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJ CW5vZGUgPSBlY2VfZ2VuZXJpY19wcm9jZXNzaW5nKG5vZGUpOwogCQkJCS8qIElmIGFsbCBhcmd1 bWVudHMgYXJlIENvbnN0cywgd2UgY2FuIGZvbGQgdG8gYSBjb25zdGFudCAqLwogCQkJCWlmIChl Y2VfYWxsX2FyZ3VtZW50c19jb25zdChub2RlKSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9l eHByKG5vZGUpOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIobm9kZSwgKE5vZGUgKikg Y29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gbm9kZTsKIAkJCX0KIAkJY2FzZSBUX0Nv YWxlc2NlRXhwcjoKQEAgLTM2OTgsNyArMzczOSw4IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNf bXV0YXRvcihOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gKE5vZGUgKikgZXZhbHVhdGVfZXhwcigo RXhwciAqKSBzdmYsCiAJCQkJCQkJCQkJCQkgIHN2Zi0+dHlwZSwKIAkJCQkJCQkJCQkJCSAgc3Zm LT50eXBtb2QsCi0JCQkJCQkJCQkJCQkgIEludmFsaWRPaWQpOworCQkJCQkJCQkJCQkJICBJbnZh bGlkT2lkLAorCQkJCQkJCQkJCQkJICBOVUxMKTsKIAkJCQllbHNlCiAJCQkJCXJldHVybiBjb3B5 T2JqZWN0KChOb2RlICopIHN2Zik7CiAJCQl9CkBAIC0zNzk1LDcgKzM4MzcsNyBAQCBldmFsX2Nv bnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJCQkJCQkJICBuZXdmc2Vs ZWN0LT5yZXN1bHR0eXBlLAogCQkJCQkJCQkJCQkgIG5ld2ZzZWxlY3QtPnJlc3VsdHR5cG1vZCwK IAkJCQkJCQkJCQkJICBuZXdmc2VsZWN0LT5yZXN1bHRjb2xsaWQpKQotCQkJCQkJcmV0dXJuIGVj ZV9ldmFsdWF0ZV9leHByKG5ld2ZzZWxlY3QpOworCQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9l eHByKG5ld2ZzZWxlY3QsIChOb2RlICopIGNvbnRleHQtPmVzY29udGV4dCk7CiAJCQkJfQogCQkJ CXJldHVybiAoTm9kZSAqKSBuZXdmc2VsZWN0OwogCQkJfQpAQCAtNDEyNSw3ICs0MTY3LDcgQEAg ZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJbmV3Y3JlLT5h cmcgPSAoRXhwciAqKSBhcmc7CiAKIAkJCQlpZiAoYXJnICE9IE5VTEwgJiYgSXNBKGFyZywgQ29u c3QpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoKE5vZGUgKikgbmV3Y3JlKTsKKwkJ CQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICopIG5ld2NyZSwgKE5vZGUgKikgY29u dGV4dC0+ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3Y3JlOwogCQkJfQogCQlk ZWZhdWx0OgpAQCAtNDU0Niw2ICs0NTg4LDcgQEAgc2ltcGxpZnlfZnVuY3Rpb24oT2lkIGZ1bmNp ZCwgT2lkIHJlc3VsdF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCQlmZXhwci5mdW5jY29s bGlkID0gcmVzdWx0X2NvbGxpZDsKIAkJZmV4cHIuaW5wdXRjb2xsaWQgPSBpbnB1dF9jb2xsaWQ7 CiAJCWZleHByLmFyZ3MgPSBhcmdzOworCQlmZXhwci5lcnJvcnNhZmUgPSBmYWxzZTsKIAkJZmV4 cHIubG9jYXRpb24gPSAtMTsKIAogCQlyZXEudHlwZSA9IFRfU3VwcG9ydFJlcXVlc3RTaW1wbGlm eTsKQEAgLTUyMjYsMTAgKzUyNjksMTEgQEAgZXZhbHVhdGVfZnVuY3Rpb24oT2lkIGZ1bmNpZCwg T2lkIHJlc3VsdF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCW5ld2V4cHItPmZ1bmNjb2xs aWQgPSByZXN1bHRfY29sbGlkOwkvKiBkb2Vzbid0IG1hdHRlciAqLwogCW5ld2V4cHItPmlucHV0 Y29sbGlkID0gaW5wdXRfY29sbGlkOwogCW5ld2V4cHItPmFyZ3MgPSBhcmdzOworCW5ld2V4cHIt PmVycm9yc2FmZSA9IGNvbnRleHQtPmVzY29udGV4dCA/IHRydWUgOiBmYWxzZTsKIAluZXdleHBy LT5sb2NhdGlvbiA9IC0xOwogCiAJcmV0dXJuIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgbmV3ZXhw ciwgcmVzdWx0X3R5cGUsIHJlc3VsdF90eXBtb2QsCi0JCQkJCQkgcmVzdWx0X2NvbGxpZCk7CisJ CQkJCQkgcmVzdWx0X2NvbGxpZCwgKE5vZGUgKikgY29udGV4dC0+ZXNjb250ZXh0KTsKIH0KIAog LyoKQEAgLTUzMzgsNiArNTM4Miw4IEBAIGlubGluZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQg cmVzdWx0X3R5cGUsIE9pZCByZXN1bHRfY29sbGlkLAogCWZleHByLT5mdW5jY29sbGlkID0gcmVz dWx0X2NvbGxpZDsJLyogZG9lc24ndCBtYXR0ZXIgKi8KIAlmZXhwci0+aW5wdXRjb2xsaWQgPSBp bnB1dF9jb2xsaWQ7CiAJZmV4cHItPmFyZ3MgPSBhcmdzOworCS8qIENhbm5vdCBldmFsdWF0ZSBT UUwgbGFuZ3VhZ2UgZnVuY3Rpb25zIGluIGFuIGVycm9yLXNhZmUgbWFubmVyLiAqLworCWZleHBy LT5lcnJvcnNhZmUgPSBmYWxzZTsKIAlmZXhwci0+bG9jYXRpb24gPSAtMTsKIAogCS8qIEZldGNo IHRoZSBmdW5jdGlvbiBib2R5ICovCkBAIC01NjgzLDEwICs1NzI5LDEzIEBAIHNxbF9pbmxpbmVf ZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogICoKICAqIFdlIHVzZSB0aGUgZXhlY3V0b3IncyBy b3V0aW5lIEV4ZWNFdmFsRXhwcigpIHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mCiAgKiBjb2RlIGFu ZCBlbnN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgZXhlY3V0b3Igd291bGQgZ2V0 LgorICoKKyAqIFdoZW4gZXNjb250ZXh0IGlzIG5vbi1OVUxMLCBzYWZlbHkgZXZhbHVhdGVzIHRo ZSBjb25zdGFudCBleHByZXNzaW9uLgorICogUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUgcmF0aGVy IHRoYW4gdGhyb3dpbmcgYW4gZXJyb3IuCiAgKi8KIEV4cHIgKgogZXZhbHVhdGVfZXhwcihFeHBy ICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0JCQkgIE9pZCBy ZXN1bHRfY29sbGF0aW9uKQorCQkJICBPaWQgcmVzdWx0X2NvbGxhdGlvbiwgTm9kZSAqZXNjb250 ZXh0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJTdGF0ZSAgKmV4cHJzdGF0ZTsKQEAg LTU3MTEsNyArNTc2MCw3IEBAIGV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJlc3VsdF90 eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCSAqIFByZXBhcmUgZXhwciBmb3IgZXhlY3V0aW9u LiAgKE5vdGU6IHdlIGNhbid0IHVzZSBFeGVjUHJlcGFyZUV4cHIKIAkgKiBiZWNhdXNlIGl0J2Qg cmVzdWx0IGluIHJlY3Vyc2l2ZWx5IGludm9raW5nIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMuKQog CSAqLwotCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcihleHByLCBOVUxMKTsKKwlleHByc3RhdGUg PSBFeGVjSW5pdEV4cHJXaXRoQ29udGV4dChleHByLCBOVUxMLCBlc2NvbnRleHQpOwogCiAJLyoK IAkgKiBBbmQgZXZhbHVhdGUgaXQuCkBAIC01NzMxLDYgKzU3ODAsMTMgQEAgZXZhbHVhdGVfZXhw cihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCiAJLyog R2V0IGJhY2sgdG8gb3V0ZXIgbWVtb3J5IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CiAKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChleHByc3RhdGUtPmVz Y29udGV4dCkpCisJeworCQlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJCXJldHVybiBO VUxMOworCX0KKwogCS8qCiAJICogTXVzdCBjb3B5IHJlc3VsdCBvdXQgb2Ygc3ViLWNvbnRleHQg dXNlZCBieSBleHByZXNzaW9uIGV2YWwuCiAJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBmZWE3MjZjZGQ1 Li4yYWMwNDU2NWFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNTgsNiArMTU4LDggQEAgc3RhdGljIHZv aWQgdXBkYXRlUmF3U3RtdEVuZChSYXdTdG10ICpycywgaW50IGVuZF9sb2NhdGlvbik7CiBzdGF0 aWMgTm9kZSAqbWFrZUNvbHVtblJlZihjaGFyICpjb2xuYW1lLCBMaXN0ICppbmRpcmVjdGlvbiwK IAkJCQkJCSAgIGludCBsb2NhdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGlj IE5vZGUgKm1ha2VUeXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxv Y2F0aW9uKTsKK3N0YXRpYyBOb2RlICptYWtlVHlwZUNhc3RXaXRoRGVmYXVsdChOb2RlICphcmcs IFR5cGVOYW1lICp0eXBlbmFtZSwKKwkJCQkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwgaW50IGxv Y2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50 IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJbnRDb25z dChpbnQgdmFsLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENvbnN0KGNo YXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKQEAgLTE2Njg3LDYgKzE2Njg5LDEyIEBAIGZ1bmNfZXhw cl9jb21tb25fc3ViZXhwcjoKIAkJCQl9CiAJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFt ZSAnKScKIAkJCQl7ICQkID0gbWFrZVR5cGVDYXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8IENBU1Qg JygnIGFfZXhwciBBUyBUeXBlbmFtZSBFUlJPUl9QIE9OIENPTlZFUlNJT05fUCBFUlJPUl9QICcp JworCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcg YV9leHByIEFTIFR5cGVuYW1lIE5VTExfUCBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJ CQl7ICQkID0gbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCBtYWtlTnVsbEFDb25zdCgt MSksIEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgREVGQVVMVCBhX2V4 cHIgT04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeyAkJCA9IG1ha2VUeXBlQ2FzdFdp dGhEZWZhdWx0KCQzLCAkNSwgJDcsIEAxKTsgfQogCQkJfCBFWFRSQUNUICcoJyBleHRyYWN0X2xp c3QgJyknCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5j TmFtZSgiZXh0cmFjdCIpLApAQCAtMTk4NDgsMTAgKzE5ODU2LDI1IEBAIG1ha2VUeXBlQ2FzdChO b2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCiAJbi0+YXJnID0g YXJnOwogCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhwciA9IE5VTEw7CiAJbi0+ bG9jYXRpb24gPSBsb2NhdGlvbjsKIAlyZXR1cm4gKE5vZGUgKikgbjsKIH0KIAorc3RhdGljIE5v ZGUgKgorbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5h bWUsIE5vZGUgKmRlZmV4cHIsCisJCQkJCQlpbnQgbG9jYXRpb24pCit7CisJVHlwZUNhc3QgICAq biA9IG1ha2VOb2RlKFR5cGVDYXN0KTsKKworCW4tPmFyZyA9IGFyZzsKKwluLT50eXBlTmFtZSA9 IHR5cGVuYW1lOworCW4tPmRlZmV4cHIgPSBkZWZleHByOworCW4tPmxvY2F0aW9uID0gbG9jYXRp b247CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKwogc3RhdGljIE5vZGUgKgogbWFrZVN0cmlu Z0NvbnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwgVHlwZU5hbWUgKnR5cGVuYW1lKQog ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDYwNzZlOTM3M2MxLi4wN2M3MzUyMWRmMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNDkxLDYgKzQ5MSwxMiBAQCBjaGVja19hZ2dsZXZlbHNf YW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCQllcnIg PSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBjaGVjayBjb25zdHJh aW50cyIpOwogCiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJ aWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8o Imdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHBy ZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgog CQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCkBAIC05OTIsNiArOTk4LDkgQEAg dHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3 ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygid2luZG93 IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMiKTsKIAkJCWJy ZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJ3aW5kb3cg ZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsK KwkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBS X0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9j b2VyY2UuYwppbmRleCA5MTNjYTUzNjY2Zi4uY2RkNjIwNDRhNjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfY29lcmNlLmMKQEAgLTM3LDE0ICszNywxNiBAQCBzdGF0aWMgTm9kZSAqY29lcmNlX3R5cGVf dHlwbW9kKE5vZGUgKm5vZGUsCiAJCQkJCQkJCU9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdl dFR5cE1vZCwKIAkJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0g Y2Zvcm1hdCwKIAkJCQkJCQkJaW50IGxvY2F0aW9uLAotCQkJCQkJCQlib29sIGhpZGVJbnB1dENv ZXJjaW9uKTsKKwkJCQkJCQkJYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJCQkJTm9kZSAq ZXNjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGhpZGVfY29lcmNpb25fbm9kZShOb2RlICpub2RlKTsK IHN0YXRpYyBOb2RlICpidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5vZGUsCiAJCQkJ CQkJCQkgICBDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlLAogCQkJCQkJCQkJICAgT2lkIGZ1bmNJ ZCwKIAkJCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAkJ CQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQs Ci0JCQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOworCQkJCQkJCQkJICAgaW50IGxvY2F0aW9uLAor CQkJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBOb2RlICpjb2VyY2VfcmVjb3Jk X3RvX2NvbXBsZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQkJICBP aWQgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCkBA IC04MSw2ICs4MywyOCBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250 ZXh0LAogCQkJCQkgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkgIGludCBsb2NhdGlvbikK K3sKKwlyZXR1cm4gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwg ZXhwcnR5cGUsCisJCQkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QsCisJCQkJCQkJ CQkJICBjY29udGV4dCwKKwkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJICBsb2NhdGlv biwKKwkJCQkJCQkJCQkgIE5VTEwpOworfQorCisvKgorICogZXNjb250ZXh0OiBJZiBub24tTlVM TCwgc2FmZWx5IGNvZXJjZXMgJ2V4cHInIHRvIHRoZSB0YXJnZXQgdHlwZQorICogd2l0aG91dCBy YWlzaW5nIGFuIGVycm9yLiBSZXR1cm5zIE5VTEwgaWYgdGhlIGNvZXJjaW9uIGZhaWxzLgorICoK KyAqIFNlZSAnY29lcmNlX3RvX3RhcmdldF90eXBlJyBhYm92ZSBmb3IgZGV0YWlscyBvbiBvdGhl ciBwYXJhbWV0ZXJzLgorICovCitOb2RlICoKK2NvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRl ZChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKKwkJCQkJCQkg ICBPaWQgdGFyZ2V0dHlwZSwgaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCSAgIENvZXJjaW9u Q29udGV4dCBjY29udGV4dCwKKwkJCQkJCQkgICBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKKwkJCQkJ CQkgICBpbnQgbG9jYXRpb24sCisJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KQogewogCU5vZGUJ ICAgKnJlc3VsdDsKIAlOb2RlCSAgICpvcmlnZXhwcjsKQEAgLTEwMiw5ICsxMjYsMTUgQEAgY29l cmNlX3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4 cHJ0eXBlLAogCXdoaWxlIChleHByICYmIElzQShleHByLCBDb2xsYXRlRXhwcikpCiAJCWV4cHIg PSAoTm9kZSAqKSAoKENvbGxhdGVFeHByICopIGV4cHIpLT5hcmc7CiAKLQlyZXN1bHQgPSBjb2Vy Y2VfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAotCQkJCQkJIHRhcmdldHR5cGUsIHRhcmdl dHR5cG1vZCwKLQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCXJlc3VsdCA9 IGNvZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJCQkJCQkJCSAg dGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJCQkg IGNmb3JtYXQsCisJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwor CWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBOVUxMOwogCiAJ LyoKIAkgKiBJZiB0aGUgdGFyZ2V0IGlzIGEgZml4ZWQtbGVuZ3RoIHR5cGUsIGl0IG1heSBuZWVk IGEgbGVuZ3RoIGNvZXJjaW9uIGFzCkBAIC0xMTQsNyArMTQ0LDExIEBAIGNvZXJjZV90b190YXJn ZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKIAly ZXN1bHQgPSBjb2VyY2VfdHlwZV90eXBtb2QocmVzdWx0LAogCQkJCQkJCQl0YXJnZXR0eXBlLCB0 YXJnZXR0eXBtb2QsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJ CQkJKHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpKTsKKwkJCQkJCQkJKHJl c3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpLAorCQkJCQkJCQllc2NvbnRleHQp OworCisJaWYgKHJlc3VsdCA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJZWxv ZyhFUlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBleHBlY3RlZCIpOwog CiAJaWYgKGV4cHIgIT0gb3JpZ2V4cHIgJiYgdHlwZV9pc19jb2xsYXRhYmxlKHRhcmdldHR5cGUp KQogCXsKQEAgLTE1OCw2ICsxOTIsMTggQEAgTm9kZSAqCiBjb2VyY2VfdHlwZShQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQlPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRUeXBl SWQsIGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENv ZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNvZXJjZV90eXBl X2V4dGVuZGVkKHBzdGF0ZSwgbm9kZSwKKwkJCQkJCQkJaW5wdXRUeXBlSWQsIHRhcmdldFR5cGVJ ZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAor CQkJCQkJCQlOVUxMKTsKK30KKworTm9kZSAqCitjb2VyY2VfdHlwZV9leHRlbmRlZChQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCSBPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJn ZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCisJCQkJCSBDb2VyY2lvbkNvbnRleHQgY2Nv bnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJCSBOb2RlICpl c2NvbnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCUNvZXJjaW9uUGF0aFR5cGUgcGF0aHR5 cGU7CkBAIC0yNTYsNiArMzAyLDcgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpub2RlLAogCQlpbnQzMgkJaW5wdXRUeXBlTW9kOwogCQlUeXBlCQliYXNlVHlwZTsKIAkJ UGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCQljaGFyCSAgICpzdHJpbmcgPSBOVUxMOwog CiAJCS8qCiAJCSAqIElmIHRoZSB0YXJnZXQgdHlwZSBpcyBhIGRvbWFpbiwgd2Ugd2FudCB0byBj YWxsIGl0cyBiYXNlIHR5cGUncwpAQCAtMzA5LDEzICszNTYsMjEgQEAgY29lcmNlX3R5cGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKiBhcyBDU1RSSU5HLgogCQkgKi8KIAkJ aWYgKCFjb24tPmNvbnN0aXNudWxsKQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0gc3RyaW5nVHlw ZURhdHVtKGJhc2VUeXBlLAotCQkJCQkJCQkJCQkJIERhdHVtR2V0Q1N0cmluZyhjb24tPmNvbnN0 dmFsdWUpLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7Ci0JCWVsc2UKLQkJCW5ld2Nvbi0+ Y29uc3R2YWx1ZSA9IHN0cmluZ1R5cGVEYXR1bShiYXNlVHlwZSwKLQkJCQkJCQkJCQkJCSBOVUxM LAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7CisJCQlzdHJpbmcgPSBEYXR1bUdldENTdHJp bmcoY29uLT5jb25zdHZhbHVlKTsKKworCQlpZiAoIXN0cmluZ1R5cGVEYXR1bVNhZmUoYmFzZVR5 cGUsCisJCQkJCQkJCSBzdHJpbmcsCisJCQkJCQkJCSBpbnB1dFR5cGVNb2QsCisJCQkJCQkJCSBl c2NvbnRleHQsCisJCQkJCQkJCSAmbmV3Y29uLT5jb25zdHZhbHVlKSkKKwkJeworCQkJLyogVU5L Tk9XTiBDb25zdCBjYW5ub3QgY29lcmNlIHRvIHRhcmdldFR5cGUsIGV4aXQgbm93ICovCisJCQlj YW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CisKKwkJCVJlbGVh c2VTeXNDYWNoZShiYXNlVHlwZSk7CisKKwkJCXJldHVybiBOVUxMOworCQl9CiAKIAkJLyoKIAkJ ICogSWYgaXQncyBhIHZhcmxlbmEgdmFsdWUsIGZvcmNlIGl0IHRvIGJlIGluIG5vbi1leHBhbmRl ZApAQCAtMzY0LDcgKzQxOSw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqbm9kZSwKIAkJCQkJCQkJCSAgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJCQkJCQkJCQkg IHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAot CQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICBlc2NvbnRl eHQpOwogCiAJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CiAKQEAgLTM5Nyw5ICs0NTMsMTEg QEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKi8KIAkJ Q29sbGF0ZUV4cHIgKmNvbGwgPSAoQ29sbGF0ZUV4cHIgKikgbm9kZTsKIAotCQlyZXN1bHQgPSBj b2VyY2VfdHlwZShwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKLQkJCQkJCQkgaW5wdXRUeXBl SWQsIHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKLQkJCQkJCQkgY2NvbnRleHQsIGNmb3Jt YXQsIGxvY2F0aW9uKTsKKwkJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0YXRlLCAo Tm9kZSAqKSBjb2xsLT5hcmcsCisJCQkJCQkJCQkgIGlucHV0VHlwZUlkLCB0YXJnZXRUeXBlSWQs IHRhcmdldFR5cGVNb2QsCisJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwK KwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwogCQlpZiAodHlwZV9pc19jb2xsYXRhYmxlKHRhcmdl dFR5cGVJZCkpCiAJCXsKIAkJCUNvbGxhdGVFeHByICpuZXdjb2xsID0gbWFrZU5vZGUoQ29sbGF0 ZUV4cHIpOwpAQCAtNDMyLDcgKzQ5MCw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqbm9kZSwKIAkJCSAqLwogCQkJcmVzdWx0ID0gYnVpbGRfY29lcmNpb25fZXhwcmVz c2lvbihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJCQkJCQkJCQkgICBiYXNlVHlwZUlkLCBi YXNlVHlwZU1vZCwKLQkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uKTsK KwkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQkJCQkg ICBlc2NvbnRleHQpOwogCiAJCQkvKgogCQkJICogSWYgZG9tYWluLCBjb2VyY2UgdG8gdGhlIGRv bWFpbiB0eXBlIGFuZCByZWxhYmVsIHdpdGggZG9tYWluCkBAIC00NDIsNyArNTAxLDggQEAgY29l cmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCXJlc3VsdCA9IGNv ZXJjZV90b19kb21haW4ocmVzdWx0LCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJ CQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlv biwKLQkJCQkJCQkJCQkgIHRydWUpOworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkgIGVz Y29udGV4dCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC00NTgsNyArNTE4LDkgQEAgY29lcmNlX3R5 cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJcmVzdWx0ID0gY29lcmNlX3Rv X2RvbWFpbihub2RlLCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJCSAgdGFyZ2V0 VHlwZUlkLAogCQkJCQkJCQkJICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJ CQkgIGZhbHNlKTsKKwkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CisK IAkJCWlmIChyZXN1bHQgPT0gbm9kZSkKIAkJCXsKIAkJCQkvKgpAQCAtNjc1LDcgKzczNyw4IEBA IGNhbl9jb2VyY2VfdHlwZShpbnQgbmFyZ3MsIGNvbnN0IE9pZCAqaW5wdXRfdHlwZWlkcywgY29u c3QgT2lkICp0YXJnZXRfdHlwZWlkcywKIE5vZGUgKgogY29lcmNlX3RvX2RvbWFpbihOb2RlICph cmcsIE9pZCBiYXNlVHlwZUlkLCBpbnQzMiBiYXNlVHlwZU1vZCwgT2lkIHR5cGVJZCwKIAkJCQkg Q29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxvY2F0 aW9uLAotCQkJCSBib29sIGhpZGVJbnB1dENvZXJjaW9uKQorCQkJCSBib29sIGhpZGVJbnB1dENv ZXJjaW9uLAorCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJQ29lcmNlVG9Eb21haW4gKnJlc3Vs dDsKIApAQCAtNzA1LDcgKzc2OCwxMCBAQCBjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lk IGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLCBPaWQgdHlwZUlkLAogCSAqLwogCWFyZyA9 IGNvZXJjZV90eXBlX3R5cG1vZChhcmcsIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJ CSBjY29udGV4dCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsIGxvY2F0aW9uLAotCQkJCQkJCSBmYWxz ZSk7CisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBlc2NvbnRleHQpOworCWlmIChhcmcgPT0gTlVM TCkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gY29l cmNlIHR5cGUgbW9kaWZpZXIgYXMgZXhwZWN0ZWQiKTsKIAogCS8qCiAJICogTm93IGJ1aWxkIHRo ZSBkb21haW4gY29lcmNpb24gbm9kZS4gIFRoaXMgcmVwcmVzZW50cyBydW4tdGltZSBjaGVja2lu ZwpAQCAtNzUyLDcgKzgxOCw4IEBAIHN0YXRpYyBOb2RlICoKIGNvZXJjZV90eXBlX3R5cG1vZChO b2RlICpub2RlLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJCQkJICAg Q29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKIAkJCQkgICBp bnQgbG9jYXRpb24sCi0JCQkJICAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbikKKwkJCQkgICBib29s IGhpZGVJbnB1dENvZXJjaW9uLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlDb2VyY2lv blBhdGhUeXBlIHBhdGh0eXBlOwogCU9pZAkJCWZ1bmNJZDsKQEAgLTc3OSw3ICs4NDYsOCBAQCBj b2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFy Z2V0VHlwTW9kLAogCXsKIAkJbm9kZSA9IGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24obm9kZSwg cGF0aHR5cGUsIGZ1bmNJZCwKIAkJCQkJCQkJCQkgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBNb2Qs Ci0JCQkJCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCQkJCQkJCQkJIGNj b250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkgZXNjb250ZXh0KTsKIAl9CiAJ ZWxzZQogCXsKQEAgLTg0MCw3ICs5MDgsOCBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5v ZGUgKm5vZGUsCiAJCQkJCQkgIE9pZCBmdW5jSWQsCiAJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQs IGludDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBD b2VyY2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCSAgaW50IGxvY2F0aW9uKQorCQkJCQkJICBpbnQg bG9jYXRpb24sCisJCQkJCQkgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlpbnQJCQluYXJncyA9IDA7 CiAKQEAgLTkxMyw2ICs5ODIsOSBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5v ZGUsCiAKIAkJZmV4cHIgPSBtYWtlRnVuY0V4cHIoZnVuY0lkLCB0YXJnZXRUeXBlSWQsIGFyZ3Ms CiAJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIGNmb3JtYXQpOworCQlpZiAoZXNjb250 ZXh0KQorCQkJZmV4cHItPmVycm9yc2FmZSA9IHRydWU7CisKIAkJZmV4cHItPmxvY2F0aW9uID0g bG9jYXRpb247CiAJCXJldHVybiAoTm9kZSAqKSBmZXhwcjsKIAl9CkBAIC05NTAsMTQgKzEwMjIs MTUgQEAgYnVpbGRfY29lcmNpb25fZXhwcmVzc2lvbihOb2RlICpub2RlLAogCQl0YXJnZXRFbGVt ZW50VHlwZSA9IGdldF9lbGVtZW50X3R5cGUodGFyZ2V0VHlwZUlkKTsKIAkJQXNzZXJ0KE9pZElz VmFsaWQodGFyZ2V0RWxlbWVudFR5cGUpKTsKIAotCQllbGVtZXhwciA9IGNvZXJjZV90b190YXJn ZXRfdHlwZShOVUxMLAotCQkJCQkJCQkJCSAoTm9kZSAqKSBjdGVzdCwKLQkJCQkJCQkJCQkgY3Rl c3QtPnR5cGVJZCwKLQkJCQkJCQkJCQkgdGFyZ2V0RWxlbWVudFR5cGUsCi0JCQkJCQkJCQkJIHRh cmdldFR5cE1vZCwKLQkJCQkJCQkJCQkgY2NvbnRleHQsCi0JCQkJCQkJCQkJIGNmb3JtYXQsCi0J CQkJCQkJCQkJIGxvY2F0aW9uKTsKKwkJZWxlbWV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGVf ZXh0ZW5kZWQoTlVMTCwKKwkJCQkJCQkJCQkJCSAgKE5vZGUgKikgY3Rlc3QsCisJCQkJCQkJCQkJ CQkgIGN0ZXN0LT50eXBlSWQsCisJCQkJCQkJCQkJCQkgIHRhcmdldEVsZW1lbnRUeXBlLAorCQkJ CQkJCQkJCQkJICB0YXJnZXRUeXBNb2QsCisJCQkJCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJ CQkJCQkJICBjZm9ybWF0LAorCQkJCQkJCQkJCQkJICBsb2NhdGlvbiwKKwkJCQkJCQkJCQkJCSAg ZXNjb250ZXh0KTsKIAkJaWYgKGVsZW1leHByID09IE5VTEwpCS8qIHNob3VsZG4ndCBoYXBwZW4g Ki8KIAkJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gY29lcmNlIGFycmF5IGVsZW1lbnQgdHlwZSBh cyBleHBlY3RlZCIpOwogCkBAIC0xMTQwLDcgKzEyMTMsOCBAQCBjb2VyY2VfcmVjb3JkX3RvX2Nv bXBsZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQliYXNlVHlwZUlk LCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQljY29udGV4dCwg Y2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCWZhbHNlKTsKKwkJCQkJCQkJZmFsc2UsCisJCQkJ CQkJCU5VTEwpOwogCX0KIAogCXJldHVybiAoTm9kZSAqKSByb3dleHByOwpAQCAtMTI5NSw3ICsx MzY5LDggQEAgY29lcmNlX251bGxfdG9fZG9tYWluKE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBP aWQgY29sbGF0aW9uLAogCQkJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAogCQkJCQkJCQkgIENP RVJDRV9JTVBMSUNJVF9DQVNULAogCQkJCQkJCQkgIC0xLAotCQkJCQkJCQkgIGZhbHNlKTsKKwkJ CQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJICBOVUxMKTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzMTJkZmRjMTgyYS4uM2QzOGQ0NjhjNDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNz L2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19jYXN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0z OCw2ICszOSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGls cy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtNjIsNyArNjQsOCBAQCBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtTXVsdGlBc3NpZ25SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBN dWx0aUFzc2lnblJlZiAqbWFyZWYpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNhc2VFeHByKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ2FzZUV4cHIgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVN1 YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1BcnJheUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwK LQkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCk7 CisJCQkJCQkJCU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2Qs CisJCQkJCQkJCWJvb2wgKmlzX2NvZXJjaWJsZSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtUm93 RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIFJvd0V4cHIgKnIsIGJvb2wgYWxsb3dEZWZhdWx0KTsK IHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2FsZXNjZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b2FsZXNjZUV4cHIgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybU1pbk1heEV4cHIoUGFyc2VT dGF0ZSAqcHN0YXRlLCBNaW5NYXhFeHByICptKTsKQEAgLTc4LDYgKzgxLDExIEBAIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAg aW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1J bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBzdGF0 aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAq dGMpOworc3RhdGljIHZvaWQgQ29lcmNpb25FcnJvclNhZmVDaGVjayhQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKmNhc3RleHByLAorCQkJCQkJCQkgICBOb2RlICpzb3VyY2UsIE9pZCBpbnB1dFR5 cGUsIE9pZCB0YXJnZXRUeXBlKTsKK3N0YXRpYyB2b2lkIENvZXJjaW9uRXJyb3JTYWZlX0ludGVy bmFsKE9pZCBpbnB1dFR5cGUsIE9pZCB0YXJnZXRUeXBlLAorCQkJCQkJCQkJICAgYm9vbCAqZXJy b3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkJICAgYm9vbCAqdXNlcmRlZmluZWQpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRl Q2xhdXNlICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3Io UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQlKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0 b3IpOwpAQCAtMTY2LDcgKzE3NCw3IEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqZXhwcikKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CiAJCQlyZXN1bHQg PSB0cmFuc2Zvcm1BcnJheUV4cHIocHN0YXRlLCAoQV9BcnJheUV4cHIgKikgZXhwciwKLQkJCQkJ CQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAtMSk7CisJCQkJCQkJCQkJSW52YWxpZE9pZCwg SW52YWxpZE9pZCwgLTEsIE5VTEwpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX1R5cGVDYXN0OgpA QCAtNTY2LDYgKzU3NCw3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUs IENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJTkdMRToKIAkJY2Fz ZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NI RUNLOgorCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZV TkNUSU9OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CiAJCWNh c2UgRVhQUl9LSU5EX0lOREVYX1BSRURJQ0FURToKQEAgLTE4NDAsNiArMTg0OSw5IEBAIHRyYW5z Zm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQljYXNl IEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5 IGluIGNoZWNrIGNvbnN0cmFpbnQiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNU X0RFRkFVTFQ6CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIENBU1QgREVGQVVM VCBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFV TFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJjYW5u b3QgdXNlIHN1YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwpAQCAtMjAzMCwxMCArMjA0 MiwxNCBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3Vi bGluaykKICAqIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVzIHRoZSB0YXJnZXQgdHlwZSwgdGhlIHJl c3VsdGluZyBhcnJheSB3aWxsCiAgKiBiZSBvZiBleGFjdGx5IHRoYXQgdHlwZS4gIE90aGVyd2lz ZSB3ZSB0cnkgdG8gaW5mZXIgYSBjb21tb24gdHlwZQogICogZm9yIHRoZSBlbGVtZW50cyB1c2lu ZyBzZWxlY3RfY29tbW9uX3R5cGUoKS4KKyAqCisgKiBpc19jb2VyY2libGUgaXMgdHlwaWNhbGx5 IE5VTEwsIGV4Y2VwdCBkdXJpbmcgcGFyc2UgYW5hbHlzaXMgZm9yCisgKiBDQVNUKC4uLiBERUZB VUxUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKS4gV2hlbiBwcm92aWRlZCwgaXQgZGVmYXVsdHMK KyAqIHRvIHRydWUgYnV0IHdpbGwgYmUgc2V0IHRvIGZhbHNlIGlmIGNvZXJjaW5nIGFycmF5IGVs ZW1lbnRzIGZhaWxzLgogICovCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1BcnJheUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKLQkJCQkgICBPaWQgYXJyYXlfdHlwZSwg T2lkIGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kKQorCQkJCSAgIE9pZCBhcnJheV90eXBlLCBP aWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QsIGJvb2wgKmlzX2NvZXJjaWJsZSkKIHsKIAlB cnJheUV4cHIgICpuZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKIAlMaXN0CSAgICpuZXdlbGVt cyA9IE5JTDsKQEAgLTIwNDEsNiArMjA1Nyw3IEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAogCUxpc3RDZWxsICAgKmVsZW1lbnQ7CiAJT2lk CQkJY29lcmNlX3R5cGU7CiAJYm9vbAkJY29lcmNlX2hhcmQ7CisJRXJyb3JTYXZlQ29udGV4dCBl c2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIAogCS8qCiAJICogVHJhbnNmb3JtIHRo ZSBlbGVtZW50IGV4cHJlc3Npb25zCkBAIC0yMDY0LDkgKzIwODEsMTAgQEAgdHJhbnNmb3JtQXJy YXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJCQkJCQkJCQkgIChB X0FycmF5RXhwciAqKSBlLAogCQkJCQkJCQkJICBhcnJheV90eXBlLAogCQkJCQkJCQkJICBlbGVt ZW50X3R5cGUsCi0JCQkJCQkJCQkgIHR5cG1vZCk7CisJCQkJCQkJCQkgIHR5cG1vZCwKKwkJCQkJ CQkJCSAgaXNfY29lcmNpYmxlKTsKIAkJCS8qIHdlIGNlcnRhaW5seSBoYXZlIGFuIGFycmF5IGhl cmUgKi8KLQkJCUFzc2VydChhcnJheV90eXBlID09IEludmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9 PSBleHByVHlwZShuZXdlKSk7CisJCQlBc3NlcnQoaXNfY29lcmNpYmxlIHx8IGFycmF5X3R5cGUg PT0gSW52YWxpZE9pZCB8fCBhcnJheV90eXBlID09IGV4cHJUeXBlKG5ld2UpKTsKIAkJCW5ld2Et Pm11bHRpZGltcyA9IHRydWU7CiAJCX0KIAkJZWxzZQpAQCAtMjEwNyw2ICsyMTI1LDggQEAgdHJh bnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJfQog CWVsc2UKIAl7CisJCUFzc2VydChpc19jb2VyY2libGUgPT0gTlVMTCk7CisKIAkJLyogQ2FuJ3Qg aGFuZGxlIGFuIGVtcHR5IGFycmF5IHdpdGhvdXQgYSB0YXJnZXQgdHlwZSAqLwogCQlpZiAobmV3 ZWxlbXMgPT0gTklMKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIxNTMsMjggKzIxNzMsNTggQEAg dHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJ ICogSWYgdGhlIGFycmF5J3MgdHlwZSB3YXMgbWVyZWx5IGRlcml2ZWQgZnJvbSB0aGUgY29tbW9u IHR5cGUgb2YgaXRzCiAJICogZWxlbWVudHMsIHRoZW4gdGhlIGVsZW1lbnRzIGFyZSBpbXBsaWNp dGx5IGNvZXJjZWQgdG8gdGhlIGNvbW1vbiB0eXBlLgogCSAqIFRoaXMgaXMgY29uc2lzdGVudCB3 aXRoIG90aGVyIHVzZXMgb2Ygc2VsZWN0X2NvbW1vbl90eXBlKCkuCisJICoKKwkgKiBJZiBpc19j b2VyY2libGUgaXMgbm90IE5VTEwsIGNoZWNrIHdoZXRoZXIgZWFjaCBlbGVtZW50IGNhbiBiZSBj b2VyY2VkCisJICogdG8gdGhlIHRhcmdldCB0eXBlLCBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBp biB0cmFuc2Zvcm1UeXBlQ2FzdC4KIAkgKi8KIAlmb3JlYWNoKGVsZW1lbnQsIG5ld2VsZW1zKQog CXsKIAkJTm9kZQkgICAqZSA9IChOb2RlICopIGxmaXJzdChlbGVtZW50KTsKLQkJTm9kZQkgICAq bmV3ZTsKKwkJTm9kZQkgICAqbmV3ZSA9IE5VTEw7CiAKIAkJaWYgKGNvZXJjZV9oYXJkKQogCQl7 Ci0JCQluZXdlID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZSwKLQkJCQkJCQkJCQkg ZXhwclR5cGUoZSksCi0JCQkJCQkJCQkJIGNvZXJjZV90eXBlLAotCQkJCQkJCQkJCSB0eXBtb2Qs Ci0JCQkJCQkJCQkJIENPRVJDSU9OX0VYUExJQ0lULAotCQkJCQkJCQkJCSBDT0VSQ0VfRVhQTElD SVRfQ0FTVCwKLQkJCQkJCQkJCQkgLTEpOwotCQkJaWYgKG5ld2UgPT0gTlVMTCkKLQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKLQkJCQkJ CSBlcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAotCQkJCQkJCQlmb3JtYXRfdHlw ZV9iZShleHByVHlwZShlKSksCi0JCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSks Ci0JCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGUpKSkpOwor CQkJLyoKKwkJCSAqIENhbm5vdCBjb2VyY2UsIGp1c3QgYXBwZW5kIHRoZSB0cmFuc2Zvcm1lZCBl bGVtZW50IGV4cHJlc3Npb24KKwkJCSAqIHRvIHRoZSBsaXN0LgorCQkJICovCisJCQlpZiAoaXNf Y29lcmNpYmxlICYmICghKmlzX2NvZXJjaWJsZSkpCisJCQkJbmV3ZSA9IGU7CisJCQllbHNlCisJ CQl7CisJCQkJTm9kZQkgICAqZWNvcHkgPSBOVUxMOworCisJCQkJaWYgKGlzX2NvZXJjaWJsZSkK KwkJCQkJZWNvcHkgPSBjb3B5T2JqZWN0KGUpOworCisJCQkJbmV3ZSA9IGNvZXJjZV90b190YXJn ZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGUsCisJCQkJCQkJCQkJCQkJICBleHByVHlwZShlKSwK KwkJCQkJCQkJCQkJCQkgIGNvZXJjZV90eXBlLAorCQkJCQkJCQkJCQkJCSAgdHlwbW9kLAorCQkJ CQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJCQkJICBDT0VSQ0VfRVhQ TElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJCQkJCSAgKE5vZGUgKikg JmVzY29udGV4dCk7CisJCQkJaWYgKG5ld2UgPT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJ CSAqIENhbm5vdCBjb2VyY2UuIFJhaXNlIGFuIGVycm9yIG9yIGFwcGVuZCB0aGUgdHJhbnNmb3Jt ZWQKKwkJCQkJICogZWxlbWVudCB0byB0aGUgbGlzdC4KKwkJCQkJICovCisJCQkJCWlmICghaXNf Y29lcmNpYmxlKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0 byAlcyIsCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUoZSkpLAorCQkJCQkJCQkJ CWZvcm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJ bmV3ZSA9IGVjb3B5OworCQkJCQkJKmlzX2NvZXJjaWJsZSA9IGZhbHNlOworCQkJCQl9CisJCQkJ fQorCQkJfQogCQl9CiAJCWVsc2UKIAkJCW5ld2UgPSBjb2VyY2VfdG9fY29tbW9uX3R5cGUocHN0 YXRlLCBlLApAQCAtMjcyMywxNyArMjc3Myw2MyBAQCB0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJz ZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogc3RhdGljIE5vZGUg KgogdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiB7 Ci0JTm9kZQkgICAqcmVzdWx0OworCVNhZmVUeXBlQ2FzdEV4cHIgKnN0YzsKKwlOb2RlCSAgICpj YXN0ZXhwciA9IE5VTEw7CisJTm9kZQkgICAqZGVmZXhwciA9IE5VTEw7CiAJTm9kZQkgICAqYXJn ID0gdGMtPmFyZzsKKwlOb2RlCSAgICpzb3VyY2U7CiAJTm9kZQkgICAqZXhwcjsKIAlPaWQJCQlp bnB1dFR5cGU7CiAJT2lkCQkJdGFyZ2V0VHlwZTsKKwlPaWQJCQl0YXJnZXRUeXBlY29sbDsKIAlp bnQzMgkJdGFyZ2V0VHlwbW9kOwogCWludAkJCWxvY2F0aW9uOworCWJvb2wJCWlzX2NvZXJjaWJs ZSA9IHRydWU7CisJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250 ZXh0fTsKIAogCS8qIExvb2sgdXAgdGhlIHR5cGUgbmFtZSBmaXJzdCAqLwogCXR5cGVuYW1lVHlw ZUlkQW5kTW9kKHBzdGF0ZSwgdGMtPnR5cGVOYW1lLCAmdGFyZ2V0VHlwZSwgJnRhcmdldFR5cG1v ZCk7CiAKKwl0YXJnZXRUeXBlY29sbCA9IGdldF90eXBjb2xsYXRpb24odGFyZ2V0VHlwZSk7CisK KwkvKiBsb29raW5nIGF0IERFRkFVTFQgZXhwcmVzc2lvbiAqLworCWlmICh0Yy0+ZGVmZXhwcikK Kwl7CisJCU9pZAkJCWRlZkNvbGw7CisKKwkJZGVmZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRl LCB0Yy0+ZGVmZXhwciwgRVhQUl9LSU5EX0NBU1RfREVGQVVMVCk7CisKKwkJZGVmZXhwciA9IGNv ZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGRlZmV4cHIsIGV4cHJUeXBlKGRlZmV4cHIpLAor CQkJCQkJCQkJCXRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJCQlDT0VSQ0lPTl9F WFBMSUNJVCwKKwkJCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQlleHBy TG9jYXRpb24oZGVmZXhwcikpOworCQlpZiAoZGVmZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2co ImNhbm5vdCBjb2VyY2UgJXMgZXhwcmVzc2lvbiB0byB0eXBlICVzIiwKKwkJCQkJCSAgICJDQVNU IERFRkFVTFQiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUodGFyZ2V0VHlwZSkpLAorCQkJCQlw YXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24odGMtPmRlZmV4 cHIpLCBkZWZleHByKSk7CisKKwkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGRlZmV4 cHIpOworCisJCS8qCisJCSAqIFRoZSBjb2xsYXRpb24gb2YgREVGQVVMVCBleHByZXNzaW9uIG11 c3QgbWF0Y2ggdGhlIGNvbGxhdGlvbiBvZiB0aGUKKwkJICogdGFyZ2V0IHR5cGUuCisJCSAqLwor CQlkZWZDb2xsID0gZXhwckNvbGxhdGlvbihkZWZleHByKTsKKworCQlpZiAodGFyZ2V0VHlwZWNv bGwgIT0gZGVmQ29sbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCWVycm1zZygiY29sbGF0aW9uIG9mIENBU1QgREVGQVVM VCBleHByZXNzaW9uIGNvbmZsaWN0cyB3aXRoIHRhcmdldCB0eXBlIGNvbGxhdGlvbiIpLAorCQkJ CQllcnJkZXRhaWwoIlwiJXNcIiB2ZXJzdXMgXCIlc1wiIiwKKwkJCQkJCQkgIGdldF9jb2xsYXRp b25fbmFtZShkZWZDb2xsKSwKKwkJCQkJCQkgIGdldF9jb2xsYXRpb25fbmFtZSh0YXJnZXRUeXBl Y29sbCkpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZGVm ZXhwcikpKTsKKwl9CisKIAkvKgogCSAqIElmIHRoZSBzdWJqZWN0IG9mIHRoZSB0eXBlY2FzdCBp cyBhbiBBUlJBWVtdIGNvbnN0cnVjdCBhbmQgdGhlIHRhcmdldAogCSAqIHR5cGUgaXMgYW4gYXJy YXkgdHlwZSwgd2UgaW52b2tlIHRyYW5zZm9ybUFycmF5RXhwcigpIGRpcmVjdGx5IHNvIHRoYXQK QEAgLTI3NjIsNyArMjg1OCw4IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVHlwZUNhc3QgKnRjKQogCQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgYXJnLAogCQkJCQkJ CQkJICB0YXJnZXRCYXNlVHlwZSwKIAkJCQkJCQkJCSAgZWxlbWVudFR5cGUsCi0JCQkJCQkJCQkg IHRhcmdldEJhc2VUeXBtb2QpOworCQkJCQkJCQkJICB0YXJnZXRCYXNlVHlwbW9kLAorCQkJCQkJ CQkJICBkZWZleHByID8gJmlzX2NvZXJjaWJsZSA6IE5VTEwpOwogCQl9CiAJCWVsc2UKIAkJCWV4 cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGFyZyk7CkBAIC0yNzgzLDIwICsyODgw LDIxMCBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0 YykKIAlpZiAobG9jYXRpb24gPCAwKQogCQlsb2NhdGlvbiA9IHRjLT50eXBlTmFtZS0+bG9jYXRp b247CiAKLQlyZXN1bHQgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBleHByLCBpbnB1 dFR5cGUsCi0JCQkJCQkJCSAgIHRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKLQkJCQkJCQkJICAg Q09FUkNJT05fRVhQTElDSVQsCi0JCQkJCQkJCSAgIENPRVJDRV9FWFBMSUNJVF9DQVNULAotCQkJ CQkJCQkgICBsb2NhdGlvbik7Ci0JaWYgKHJlc3VsdCA9PSBOVUxMKQorCS8qCisJICogY29lcmNl X3RvX3RhcmdldF90eXBlX2V4dGVuZGVkIGlzIHVubGlrZWx5IHRvIG1vZGlmeSB0aGUgc291cmNl CisJICogZXhwcmVzc2lvbiwgYnV0IHdlIHN0aWxsIGNyZWF0ZSBhIGNvcHkgYmVmb3JlaGFuZC4g VGhpcyBhbGxvd3MKKwkgKiBTYWZlVHlwZUNhc3RFeHByIHRvIHJlY2VpdmUgdGhlIHRyYW5zZm9y bWVkIHNvdXJjZSBleHByZXNzaW9uCisJICogdW5jaGFuZ2VkLgorCSAqLworCXNvdXJjZSA9IGRl ZmV4cHIgPyBleHByIDogY29weU9iamVjdChleHByKTsKKworCWlmIChpc19jb2VyY2libGUpCisJ eworCQljYXN0ZXhwciA9IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGV4 cHIsIGlucHV0VHlwZSwKKwkJCQkJCQkJCQkJCSAgdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAor CQkJCQkJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJCSAgQ09FUkNFX0VY UExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJCQkgIGxvY2F0aW9uLAorCQkJCQkJCQkJCQkJICBkZWZl eHByID8gKE5vZGUgKikgJmVzY29udGV4dCA6IE5VTEwpOworCisJCS8qIENhbm5vdCBjb2VyY2Uu IFNldCBpc19jb2VyY2libGUgdG8gZmFsc2Ugb3IgcmFpc2UgYW4gZXJyb3IgKi8KKwkJaWYgKCFj YXN0ZXhwcikKKwkJeworCQkJaXNfY29lcmNpYmxlID0gZmFsc2U7CisKKwkJCWlmICghZGVmZXhw cikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VS Q0UpLAorCQkJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKKwkJCQkJCQkg ICBmb3JtYXRfdHlwZV9iZShpbnB1dFR5cGUpLAorCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRh cmdldFR5cGUpKSwKKwkJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxv Y2F0aW9uLCBleHByKSk7CisJCX0KKworCQkvKiBObyBERUZBVUxUIC4uLiBPTiBDT05WRVJTSU9O IEVSUk9SLCBleGl0IG5vdyAqLworCQlpZiAoIWRlZmV4cHIpCisJCQlyZXR1cm4gY2FzdGV4cHI7 CisJfQorCisJLyogRnVydGhlciBjaGVjayBmb3IgQ0FTVCguLi4gREVGQVVMVCAuLi4gT04gQ09O VkVSU0lPTiBFUlJPUikgKi8KKwlDb2VyY2lvbkVycm9yU2FmZUNoZWNrKHBzdGF0ZSwgY2FzdGV4 cHIsIHNvdXJjZSwgaW5wdXRUeXBlLAorCQkJCQkJICAgdGFyZ2V0VHlwZSk7CisKKwlBc3NlcnQo aXNfY29lcmNpYmxlIHx8IGNhc3RleHByID09IE5VTEwpOworCisJc3RjID0gbWFrZU5vZGUoU2Fm ZVR5cGVDYXN0RXhwcik7CisJc3RjLT5zb3VyY2UgPSAoRXhwciAqKSBzb3VyY2U7CisJc3RjLT5j YXN0ZXhwciA9IChFeHByICopIGNhc3RleHByOworCXN0Yy0+ZGVmZXhwciA9IChFeHByICopIGRl ZmV4cHI7CisJc3RjLT5yZXN1bHR0eXBlID0gdGFyZ2V0VHlwZTsKKwlzdGMtPnJlc3VsdHR5cG1v ZCA9IHRhcmdldFR5cG1vZDsKKwlzdGMtPnJlc3VsdGNvbGxpZCA9IHRhcmdldFR5cGVjb2xsOwor CXN0Yy0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBzdGM7Cit9CisK Ky8qCisgKiBDaGVjayB0eXBlIGNvZXJjaW9uIGlzIGVycm9yIHNhZmUgb3Igbm90LiAgSWYgbm90 IHRoZW4gcmVwb3J0IGVycm9yCisgKi8KK3N0YXRpYyB2b2lkCitDb2VyY2lvbkVycm9yU2FmZUNo ZWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqY2FzdGV4cHIsIE5vZGUgKnNvdXJjZSwKKwkJ CQkJICAgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUpCit7CisJYm9vbAkJZXJyb3JzYWZl X2NvZXJjaW9uID0gdHJ1ZTsKKwlib29sCQl1c2VyZGVmaW5lZCA9IGZhbHNlOworCisJLyoKKwkg KiBCaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcnJvci1zYWZlLCBDb2VyY2VWaWFJTyBjYW4gYWxz byBiZSBldmFsdWF0ZWQKKwkgKiBpbiBhbiBlcnJvci1zYWZlIG1hbm5lci4gU2tpcCB0aGVzZSBj YXNlcy4KKwkgKi8KKwlpZiAoY2FzdGV4cHIgPT0gTlVMTCB8fAorCQlJc0JpbmFyeUNvZXJjaWJs ZShpbnB1dFR5cGUsIHRhcmdldFR5cGUpIHx8CisJCUlzQShjYXN0ZXhwciwgQ29lcmNlVmlhSU8p KQorCQlyZXR1cm47CisKKwlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1dFR5cGUsIHRh cmdldFR5cGUsCisJCQkJCQkJICAgJmVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkgICAmdXNl cmRlZmluZWQpOworCisJaWYgKCFlcnJvcnNhZmVfY29lcmNpb24pCiAJCWVyZXBvcnQoRVJST1Is Ci0JCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKLQkJCQkgZXJybXNnKCJjYW5u b3QgY2FzdCB0eXBlICVzIHRvICVzIiwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKGlucHV0VHlwZSks Ci0JCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlKSksCi0JCQkJIHBhcnNlcl9jb2VyY2lv bl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCBleHByKSkpOworCQkJCWVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlw ZSAlcyB0byAlcyB3aGVuICVzIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluICVzIiwKKwkJCQkJ ICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJCQkJICAgZm9ybWF0X3R5cGVfYmUodGFy Z2V0VHlwZSksCisJCQkJCSAgICJERUZBVUxUIiwKKwkJCQkJICAgIkNBU1QgLi4uIE9OIENPTlZF UlNJT04gRVJST1IiKSwKKwkJCQl1c2VyZGVmaW5lZAorCQkJCT8gZXJyaGludCgiU2FmZSB0eXBl IGNhc3QgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuIikKKwkJ CQk6IGVycmhpbnQoIkV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBu b3QgZXJyb3Igc2FmZS4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9j YXRpb24oc291cmNlKSkpOworfQogCi0JcmV0dXJuIHJlc3VsdDsKK3N0YXRpYyB2b2lkCitDb2Vy Y2lvbkVycm9yU2FmZV9JbnRlcm5hbChPaWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSwKKwkJ CQkJCSAgIGJvb2wgKmVycm9yc2FmZV9jb2VyY2lvbiwgYm9vbCAqdXNlcmRlZmluZWQpCit7CisJ SGVhcFR1cGxlCXR1cGxlOworCisJY2hhcgkJaW5wdXRfdHlwdHlwZSA9IGdldF90eXB0eXBlKGlu cHV0VHlwZSk7CisJY2hhcgkJdGFyZ2V0X3R5cHR5cGUgPSBnZXRfdHlwdHlwZSh0YXJnZXRUeXBl KTsKKworCS8qIHNpbmNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMsIGl0IGNvdWxkIGJlIGRyaXZl biB0byBzdGFjayBvdmVyZmxvdyAqLworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlBc3NlcnQo ZXJyb3JzYWZlX2NvZXJjaW9uICE9IE5VTEwpOworCUFzc2VydCh1c2VyZGVmaW5lZCAhPSBOVUxM KTsKKworCWlmICghKCplcnJvcnNhZmVfY29lcmNpb24pKQorCQlyZXR1cm47CisKKwlpZiAoaW5w dXRfdHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTiAmJgorCQl0YXJnZXRfdHlwdHlwZSA9PSBUWVBU WVBFX0RPTUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGdldEJhc2VUeXBl KGlucHV0VHlwZSksCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJ CQkgICBlcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0 dXJuOworCX0KKwllbHNlIGlmIChpbnB1dF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCXsK KwkJQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoZ2V0QmFzZVR5cGUoaW5wdXRUeXBlKSwKKwkJ CQkJCQkJICAgdGFyZ2V0VHlwZSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJ CQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAodGFyZ2V0X3R5 cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5h bChpbnB1dFR5cGUsCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJ CQkgICBlcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0 dXJuOworCX0KKwllbHNlIGlmICgoaW5wdXRfdHlwdHlwZSAhPSBUWVBUWVBFX0JBU0UgJiYgaW5w dXRUeXBlID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJIHx8ICh0YXJnZXRfdHlwdHlwZSAh PSBUWVBUWVBFX0JBU0UgJiYgdGFyZ2V0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkpCisJ eworCQkvKgorCQkgKiBJbnB1dCBleHByZXNzaW9uIGNhbiBiZSBVTktOT1dOIENvbnN0LCBhbmQg VU5LTk9XTiB0eXB0eXBlIGlzCisJCSAqIFRZUFRZUEVfUFNFVURPLgorCQkgKi8KKworCQkvKgor CQkgKiBDb21wb3NpdGUtdG8tY29tcG9zaXRlIGNhc3RpbmcgaXMgbm90IGltcGxlbWVudGVkLCBz byBlcnJvci1zYWZlCisJCSAqIGNhc3QgYmV0d2VlbiB0aGVtIHNob3VsZCBub3QgYmUgcG9zc2li bGU7IHdlIGZvcmJpZCBpdCBoZXJlLgorCQkgKgorCQkgKiBPdXIgdHlwZSBzeXN0ZW0gZG9lcyBu b3QgYXV0b21hdGljYWxseSBjYXN0IGEgdXNlci1kZWZpbmVkIHJhbmdlCisJCSAqIHR5cGUgdG8g YW4gYnVpbHQtaW4gcmFuZ2UgdHlwZSwgZXZlbiBpZiB0aGVpciBiYXNlIGVsZW1lbnQgdHlwZXMK KwkJICogYXJlIHRoZSBzYW1lLiBUaGVyZSBtYXkgYmUgY29tcGxleCBlZGdlIGNhc2VzIHRvIGNv bnNpZGVyLCBzYWZlciB0bworCQkgKiBzaW1wbHkgZGlzYWxsb3cgZXJyb3Itc2FmZSBjYXN0aW5n IGZvciB0aGVtIG5vdy4KKwkJICovCisJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsKKwor CQlyZXR1cm47CisJfQorCWVsc2UKKwl7CisJCU9pZAkJCWlucHV0X3R5cGVsZW0gPSBnZXRfZWxl bWVudF90eXBlKGlucHV0VHlwZSk7CisJCU9pZAkJCXRhcmdldF90eXBlbGVtID0gZ2V0X2VsZW1l bnRfdHlwZSh0YXJnZXRUeXBlKTsKKworCQlpZiAoT2lkSXNWYWxpZChpbnB1dF90eXBlbGVtKSAm JiBPaWRJc1ZhbGlkKHRhcmdldF90eXBlbGVtKSkKKwkJeworCQkJLyogcmVjdXJzZSBpbnRvIGFy cmF5IGVsZW1lbnQgdHlwZSAqLworCQkJQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoaW5wdXRf dHlwZWxlbSwKKwkJCQkJCQkJCSAgIHRhcmdldF90eXBlbGVtLAorCQkJCQkJCQkJICAgZXJyb3Jz YWZlX2NvZXJjaW9uLAorCQkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQkJcmV0dXJuOworCQl9 CisJfQorCisJLyoKKwkgKiBDYXN0cyBzb3VyY2UgZGF0YSB0eXBlIGFzIE1PTkVZIGFyZSBub3Qg ZXJyb3Igc2FmZS4KKwkgKi8KKwlpZiAoaW5wdXRUeXBlID09IE1PTkVZT0lEKQorCXsKKwkJKmVy cm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOworCQlyZXR1cm47CisJfQorCisJaWYgKGlucHV0VHlw ZSAhPSB0YXJnZXRUeXBlKQorCXsKKwkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQ0FTVFNPVVJD RVRBUkdFVCwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShpbnB1dFR5cGUpLAorCQkJCQkJCQlP YmplY3RJZEdldERhdHVtKHRhcmdldFR5cGUpKTsKKworCQkvKgorCQkgKiBBIHBnX2Nhc3QgZW50 cnkgbWlnaHQgbm90IGV4aXN0IGZvciB0aGlzIHNwZWNpZmljIGNhc3Q7IGZvcgorCQkgKiBleGFt cGxlLCB3aGVuIHVzaW5nIENvZXJjZVZpYUlPLgorCQkgKi8KKwkJaWYgKEhlYXBUdXBsZUlzVmFs aWQodHVwbGUpKQorCQl7CisJCQlGb3JtX3BnX2Nhc3QgY2FzdEZvcm0gPSAoRm9ybV9wZ19jYXN0 KSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQlpZiAoY2FzdEZvcm0tPmNhc3RmdW5jID4gRmlyc3RV bnBpbm5lZE9iamVjdElkKQorCQkJeworCQkJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsK KwkJCQkqdXNlcmRlZmluZWQgPSB0cnVlOworCQkJfQorCQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxl KTsKKwkJfQorCQllbHNlIGlmIChpbnB1dFR5cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQgfHwg dGFyZ2V0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkKKwkJCSplcnJvcnNhZmVfY29lcmNp b24gPSBmYWxzZTsKKwl9CiB9CiAKIC8qCkBAIC0zMjEyLDYgKzM0OTksOCBAQCBQYXJzZUV4cHJL aW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQljYXNlIEVYUFJfS0lORF9DSEVDS19D T05TVFJBSU5UOgogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQlyZXR1cm4gIkNI RUNLIjsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJcmV0dXJuICJDQVNUIERF RkFVTFQiOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJ TkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCXJldHVybiAiREVGQVVMVCI7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwppbmRleCA4ZGJkNDFhMzU0OC4uODFhNGQ1YzU4ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwpAQCAtNzY4LDYgKzc2OCw3IEBAIFBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCQlmdW5jZXhwci0+ZnVuY2Zv cm1hdCA9IGZ1bmNmb3JtYXQ7CiAJCS8qIGZ1bmNjb2xsaWQgYW5kIGlucHV0Y29sbGlkIHdpbGwg YmUgc2V0IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLwogCQlmdW5jZXhwci0+YXJncyA9IGZhcmdzOwor CQlmdW5jZXhwci0+ZXJyb3JzYWZlID0gZmFsc2U7CiAJCWZ1bmNleHByLT5sb2NhdGlvbiA9IGxv Y2F0aW9uOwogCiAJCXJldHZhbCA9IChOb2RlICopIGZ1bmNleHByOwpAQCAtMjc0Myw2ICsyNzQ0 LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgog CQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNo ZWNrIGNvbnN0cmFpbnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZB VUxUOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9L SU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgog CQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERF RkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA1NDFm ZWY1ZjE4My4uN2NkMTk3MGJjOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTg0 NSw3ICs4NDUsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQkJCUNPRVJDSU9OX0lNUExJQ0lULAogCQkJCQkJCQkJCUNPRVJDRV9J TVBMSUNJVF9DQVNULAogCQkJCQkJCQkJCWxvY2F0aW9uLAotCQkJCQkJCQkJCWZhbHNlKTsKKwkJ CQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlOVUxMKTsKIAogCQkJcmV0dXJuIChOb2RlICopIGZz dG9yZTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKaW5kZXggYmI3ZWNjZGU5ZmQuLjI4M2Rm YzJlZTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKQEAgLTY2MCw2ICs2NjAsMjQgQEAgc3Ry aW5nVHlwZURhdHVtKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kKQogCXJl dHVybiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCh0eXBpbnB1dCwgc3RyaW5nLCB0eXBpb3BhcmFtLCBh dHR0eXBtb2QpOwogfQogCisvKgorICogRXJyb3Itc2FmZSB2ZXJzaW9uIG9mIHN0cmluZ1R5cGVE YXR1bS4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgInN0cmluZyIgaXMgYSB2YWxpZCByZXByZXNl bnRhdGlvbiBvZiB0eXBlICJ0cCIuCisgKiBPbiBzdWNjZXNzLCB0aGUgaW50ZXJuYWwgRGF0dW0g cmVwcmVzZW50YXRpb24gaXMgd3JpdHRlbiB0byAicmVzdWx0Ii4KKyAqLworYm9vbAorc3RyaW5n VHlwZURhdHVtU2FmZShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCwKKwkJ CQkJTm9kZSAqZXNjb250ZXh0LCBEYXR1bSAqcmVzdWx0KQoreworCUZvcm1fcGdfdHlwZSB0eXBm b3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHRwKTsKKwlPaWQJCQl0eXBpbnB1dCA9IHR5 cGZvcm0tPnR5cGlucHV0OworCU9pZAkJCXR5cGlvcGFyYW0gPSBnZXRUeXBlSU9QYXJhbSh0cCk7 CisKKwlyZXR1cm4gT2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKHR5cGlucHV0LCBzdHJpbmcsIHR5 cGlvcGFyYW0sIGF0dHR5cG1vZCwKKwkJCQkJCQkJCWVzY29udGV4dCwgcmVzdWx0KTsKK30KKwog LyoKICAqIEdpdmVuIGEgdHlwZWlkLCByZXR1cm4gdGhlIHR5cGUncyB0eXByZWxpZCAoYXNzb2Np YXRlZCByZWxhdGlvbiksIGlmIGFueS4KICAqIFJldHVybnMgSW52YWxpZE9pZCBpZiB0eXBlIGlz IG5vdCBhIGNvbXBvc2l0ZSB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXgg OWE5MThlMTRhYTcuLjEwMzE4ZmM0OTkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK QEAgLTQ5NTEsNyArNDk1MSw3IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kVmFsdWUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICp2YWwsCiAJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRl LCB2YWx1ZSk7CiAJCXZhbHVlID0gKE5vZGUgKikgZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICop IHZhbHVlKTsKIAkJdmFsdWUgPSAoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIHZhbHVl LCBjb2xUeXBlLCBjb2xUeXBtb2QsCi0JCQkJCQkJCQkgICBwYXJ0Q29sbGF0aW9uKTsKKwkJCQkJ CQkJCSAgIHBhcnRDb2xsYXRpb24sIE5VTEwpOwogCQlpZiAoIUlzQSh2YWx1ZSwgQ29uc3QpKQog CQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBldmFsdWF0ZSBwYXJ0aXRpb24gYm91bmQgZXhwcmVz c2lvbiIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IDczNGU1ZmVhNDVl Li5kYmZlNWY0YTc5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCkBAIC0zMjk0LDYg KzMyOTQsMTUgQEAgYXJyYXlfbWFwKERhdHVtIGFycmF5ZCwKIAkJLyogQXBwbHkgdGhlIGdpdmVu IGV4cHJlc3Npb24gdG8gc291cmNlIGVsZW1lbnQgKi8KIAkJdmFsdWVzW2ldID0gRXhlY0V2YWxF eHByKGV4cHJzdGF0ZSwgZWNvbnRleHQsICZudWxsc1tpXSk7CiAKKwkJLyogRXhpdCBlYXJseSBp ZiBldmFsdWF0aW9uIGZhaWxlZCAqLworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChleHByc3Rh dGUtPmVzY29udGV4dCkpCisJCXsKKwkJCXBmcmVlKHZhbHVlcyk7CisJCQlwZnJlZShudWxscyk7 CisKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJCX0KKwogCQlpZiAobnVsbHNbaV0pCiAJCQloYXNu dWxscyA9IHRydWU7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA3YmMx MjU4OWU0MC4uNzQ4NTg2YWM2N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEx MTA2LDYgKzExMTA2LDMxIEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4 cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVU eXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJLyoKKwkJCQkgKiBXZSBjYW5ub3QgZGVwYXJzZSBj YXN0ZXhwciBkaXJlY3RseSwgc2luY2UKKwkJCQkgKiB0cmFuc2Zvcm1UeXBlQ2FzdCBtYXkgaGF2 ZSBhbHJlYWR5IGNvbnN0YW50LWZvbGRlZCBpdCBpbnRvCisJCQkJICogYSBDb25zdCBub2RlLiBJ bnN0ZWFkLCB3ZSBjYW4gdXNlICJzb3VyY2UiIGFuZCAiZGVmZXhwciIgdG8KKwkJCQkgKiByZWNv bnN0cnVjdCB0aGUgQ0FTVCBERUZBVUxUIGNsYXVzZS4KKwkJCQkgKi8KKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIkNBU1QoIik7CisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBz dGNleHByLT5zb3VyY2UsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiBBUyAlcyAiLAorCQkJCQkJCQkgZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9k KHN0Y2V4cHItPnJlc3VsdHR5cGUsCisJCQkJCQkJCQkJCQkJCSAgc3RjZXhwci0+cmVzdWx0dHlw bW9kKSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkRFRkFVTFQgIik7CisK KwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIHN0Y2V4cHItPmRlZmV4cHIsIGNvbnRleHQsIHNo b3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBPTiBDT05W RVJTSU9OIEVSUk9SKSIpOworCQkJfQorCQkJYnJlYWs7CisKIAkJY2FzZSBUX0pzb25FeHByOgog CQkJewogCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Zt Z3IvZm1nci5jCmluZGV4IGJmZWNlYjdhOTJmLi45MDY4NmFlMjBmOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9m bWdyLmMKQEAgLTE3NjAsNiArMTc2MCwxOSBAQCBPaWRJbnB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVu Y3Rpb25JZCwgY2hhciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwgaW50MzIgdHlwbW9kKQogCXJldHVy biBJbnB1dEZ1bmN0aW9uQ2FsbCgmZmxpbmZvLCBzdHIsIHR5cGlvcGFyYW0sIHR5cG1vZCk7CiB9 CiAKKy8qIGVycm9yLXNhZmUgdmVyc2lvbiBvZiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCAqLworYm9v bAorT2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9p ZCB0eXBpb3BhcmFtLAorCQkJCQkJIGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJ CQkJIERhdHVtICpyZXN1bHQpCit7CisJRm1nckluZm8JZmxpbmZvOworCisJZm1ncl9pbmZvKGZ1 bmN0aW9uSWQsICZmbGluZm8pOworCXJldHVybiBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmZsaW5m bywgc3RyLCB0eXBpb3BhcmFtLCB0eXBtb2QsCisJCQkJCQkJCSBlc2NvbnRleHQsIHJlc3VsdCk7 Cit9CisKIGNoYXIgKgogT2lkT3V0cHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBEYXR1 bSB2YWwpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBhYTliMzYxZmEzMS4uZmE5ZGI4 ZmQ2ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjY1LDYgKzI2NSw3IEBAIHR5cGVk ZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9DT05TVFJVQ1RP UiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9TQUZFVFlQRV9DQVNULAogCUVFT1BfSlNPTkVYUFJf UEFUSCwKIAlFRU9QX0pTT05FWFBSX0NPRVJDSU9OLAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT05f RklOSVNILApAQCAtNzUwLDYgKzc1MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAK IAkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZDsJLyogb3JpZ2luYWwgZXhwcmVzc2lvbiBub2RlICov CiAJCX0JCQlpc19qc29uOwogCisJCS8qIGZvciBFRU9QX1NBRkVUWVBFX0NBU1QgKi8KKwkJc3Ry dWN0CisJCXsKKwkJCXN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGU7CisJCX0JCQlz dGNleHByOworCiAJCS8qIGZvciBFRU9QX0pTT05FWFBSX1BBVEggKi8KIAkJc3RydWN0CiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2ZtZ3IuaCBiL3NyYy9pbmNsdWRlL2ZtZ3IuaAppbmRl eCAxMGQwMmJkYjc5Zi4uOGUzZTUxZGMyMjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZtZ3Iu aAorKysgYi9zcmMvaW5jbHVkZS9mbWdyLmgKQEAgLTc1Miw2ICs3NTIsOSBAQCBleHRlcm4gYm9v bCBEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoUEdGdW5jdGlvbiBmdW5jLCBjaGFyICpzdHIs CiAJCQkJCQkJCQkJRGF0dW0gKnJlc3VsdCk7CiBleHRlcm4gRGF0dW0gT2lkSW5wdXRGdW5jdGlv bkNhbGwoT2lkIGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwKIAkJCQkJCQkJICBPaWQgdHlwaW9wYXJh bSwgaW50MzIgdHlwbW9kKTsKK2V4dGVybiBib29sIE9pZElucHV0RnVuY3Rpb25DYWxsU2FmZShP aWQgZnVuY3Rpb25JZCwgY2hhciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwKKwkJCQkJCQkJCSBpbnQz MiB0eXBtb2QsIE5vZGUgKmVzY29udGV4dCwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdWx0KTsKIGV4 dGVybiBjaGFyICpPdXRwdXRGdW5jdGlvbkNhbGwoRm1nckluZm8gKmZsaW5mbywgRGF0dW0gdmFs KTsKIGV4dGVybiBjaGFyICpPaWRPdXRwdXRGdW5jdGlvbkNhbGwoT2lkIGZ1bmN0aW9uSWQsIERh dHVtIHZhbCk7CiBleHRlcm4gRGF0dW0gUmVjZWl2ZUZ1bmN0aW9uQ2FsbChGbWdySW5mbyAqZmxp bmZvLCBTdHJpbmdJbmZvIGJ1ZiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjg0ZTM5OGY4MjQu LjNlZTAzOWRhY2Q0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTA3MSw2ICsxMDcxLDI3IEBA IHR5cGVkZWYgc3RydWN0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZQogCUV4cHJTdGF0ZSAgKmNoZWNr X2V4cHJzdGF0ZTsJLyogY2hlY2tfZXhwcidzIGV2YWwgc3RhdGUsIG9yIE5VTEwgKi8KIH0gRG9t YWluQ29uc3RyYWludFN0YXRlOwogCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZQor eworCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHI7CisKKwkvKgorCSAqIEFkZHJlc3MgdG8ganVt cCB0byB3aGVuIHNraXBwaW5nIGFsbCB0aGUgc3RlcHMgdG8gZXZhbHVhdGUgdGhlIGRlZmF1bHQK KwkgKiBleHByZXNzaW9uLgorCSAqLworCWludAkJCWp1bXBfZW5kOworCisJLyoKKwkgKiBGb3Ig ZXJyb3Itc2FmZSBldmFsdWF0aW9uIG9mIGNvZXJjaW9ucy4gQSBwb2ludGVyIHRvIHRoaXMgaXMg cGFzc2VkIHRvCisJICogRXhlY0luaXRFeHByUmVjKCkgd2hlbiBpbml0aWFsaXppbmcgdGhlIGNv ZXJjaW9uIGV4cHJlc3Npb25zLCBzZWUKKwkgKiBFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIuCisJ ICoKKwkgKiBSZXNldCBmb3IgZWFjaCBldmFsdWF0aW9uIG9mIEVFT1BfU0FGRVRZUEVfQ0FTVC4K KwkgKi8KKwlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dDsKKworfSBTYWZlVHlwZUNhc3RTdGF0 ZTsKKwogLyoKICAqIFN0YXRlIGZvciBKc29uRXhwciBldmFsdWF0aW9uLCB0b28gYmlnIHRvIGlu bGluZS4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZGY0MzEyMjBhYzUuLmJhMjdlMGE3 MTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zOTcsNiArMzk3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgVHlwZUNhc3QKIAlOb2RlVGFnCQl0eXBlOwogCU5vZGUJICAgKmFyZzsJCQkvKiB0aGUg ZXhwcmVzc2lvbiBiZWluZyBjYXN0ZWQgKi8KIAlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHRo ZSB0YXJnZXQgdHlwZSAqLworCU5vZGUJICAgKmRlZmV4cHI7CQkvKiBERUZBVUxUIGV4cHJlc3Np b24gKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiB9IFR5cGVDYXN0OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGI2N2U1NmU2 YzVhLi4yYTg5NTJhNTBjOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTc3MCw2ICs3NzAsNDIg QEAgdHlwZWRlZiBlbnVtIENvZXJjaW9uRm9ybQogCUNPRVJDRV9TUUxfU1lOVEFYLAkJCS8qIGRp c3BsYXkgd2l0aCBTUUwtbWFuZGF0ZWQgc3BlY2lhbCBzeW50YXggKi8KIH0gQ29lcmNpb25Gb3Jt OwogCisvKgorICogU2FmZVR5cGVDYXN0RXhwciAtCisgKgkJVHJhbnNmb3JtZWQgcmVwcmVzZW50 YXRpb24gb2YKKyAqIAkJQ0FTVChleHByIEFTIHR5cGVuYW1lIERFRkFVTFQgZXhwciBPTiBDT05W RVJTSU9OIEVSUk9SKQorICogCQlDQVNUKGV4cHIgQVMgdHlwZW5hbWUgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKQorICovCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNhc3RFeHByCit7CisJRXhw cgkJeHByOworCisJLyoKKwkgKiBUcmFuc2Zvcm1lZCBzb3VyY2UgZXhwcmVzc2lvbiBmcm9tIHRo ZSBwYXJzZXIuIENvbnN0YW50IGZvbGRpbmcKKwkgKiAoZXZhbF9jb25zdF9leHByZXNzaW9ucykg aXMgc2tpcHBlZCBiZWNhdXNlIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcgorCSAqIGRvZXMgbm90 IHVzZSB0aGlzIG5vZGUuIFRoZXJlZm9yZSwgaXQgbWF5IGNvbnRhaW4gYSBDb2xsYXRlRXhwciBu b2RlLAorCSAqIHdoaWNoIEV4ZWNJbml0RXhwclJlYyBjYW5ub3QgaGFuZGxlLiBIb3dldmVyLCB0 aGlzIGlzIHN0aWxsIHJlcXVpcmVkCisJICogZm9yIGRlcGFyc2luZyBwdXJwb3Nlcy4KKwkgKgor CSAqIEZvciBleGFtcGxlLCAiQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIiwgdGhlCisJICogY2FzdGV4cHIgaXMgbm93IE5VTEwuIFRvIGRlcGFyc2UgaXQs IHdlIG5lZWQgdGhpcyB0cmFuc2Zvcm1lZCAic291cmNlIgorCSAqIGV4cHJlc3Npb24uCisJICov CisJRXhwcgkgICAqc291cmNlOworCS8qIHRyYW5zZm9ybWVkIGNhc3QgZXhwcmVzc2lvbiwgTlVM TCBtZWFucyBjYW5ub3QgY29lcmNlIHRvIHRhcmdldCB0eXBlICovCisJRXhwcgkgICAqY2FzdGV4 cHIgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIEZhbGwtYmFjayB0byB0 aGUgZGVmYXVsdCBleHByZXNzaW9uIGlmIGNhc3QgZXZhbHVhdGlvbiBmYWlscyAqLworCUV4cHIJ ICAgKmRlZmV4cHI7CisJLyogdGFyZ2V0IHR5cGUgT2lkICovCisJT2lkCQkJcmVzdWx0dHlwZTsK KwkvKiB0YXJnZXQgdHlwZSBtb2RpZmllciAqLworCWludDMyCQlyZXN1bHR0eXBtb2Q7CisJLyog T0lEIG9mIGNvbGxhdGlvbiwgb3IgSW52YWxpZE9pZCBpZiBub25lICovCisJT2lkCQkJcmVzdWx0 Y29sbGlkOworCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCisJUGFyc2VM b2MJbG9jYXRpb247Cit9IFNhZmVUeXBlQ2FzdEV4cHI7CisKIC8qCiAgKiBGdW5jRXhwciAtIGV4 cHJlc3Npb24gbm9kZSBmb3IgYSBmdW5jdGlvbiBjYWxsCiAgKgpAQCAtNzk5LDYgKzgzNSw4IEBA IHR5cGVkZWYgc3RydWN0IEZ1bmNFeHByCiAJT2lkCQkJaW5wdXRjb2xsaWQgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gKi8K IAlMaXN0CSAgICphcmdzOworCS8qIFRydWUgaWYgdGhlIGZ1bmN0aW9uIHN1cHBvcnRzIHNvZnQt ZXJyb3IgZXZhbHVhdGlvbiAqLworCWJvb2wJCWVycm9yc2FmZTsKIAkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwogfSBGdW5jRXhwcjsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3NyYy9pbmNs dWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAppbmRleCBlOGI0MDlhZmI3Zi4uYjY4NmJlMDQ5Yjkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBleHRlcm4g dm9pZCBjb252ZXJ0X3Nhb3BfdG9faGFzaGVkX3Nhb3AoTm9kZSAqbm9kZSk7CiBleHRlcm4gTm9k ZSAqZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9k ZSk7CiAKIGV4dGVybiBFeHByICpldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRf dHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKLQkJCQkJCSAgIE9pZCByZXN1bHRfY29sbGF0aW9u KTsKKwkJCQkJCSAgIE9pZCByZXN1bHRfY29sbGF0aW9uLCBOb2RlICplc2NvbnRleHQpOwogCiBl eHRlcm4gYm9vbCB2YXJfaXNfbm9ubnVsbGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFy LAogCQkJCQkJCSAgIE5vdE51bGxTb3VyY2Ugc291cmNlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jb2VyY2UuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jb2Vy Y2UuaAppbmRleCBhYWJhY2Q0OWI2NS4uMTI2NDRmMTQ2YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jb2VyY2UuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf Y29lcmNlLmgKQEAgLTQzLDE1ICs0MywyOSBAQCBleHRlcm4gTm9kZSAqY29lcmNlX3RvX3Rhcmdl dF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJICAgQ29lcmNpb25Db250ZXh0IGNj b250ZXh0LAogCQkJCQkJCQkgICBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKIAkJCQkJCQkJICAgaW50 IGxvY2F0aW9uKTsKK2V4dGVybiBOb2RlICpjb2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQo UGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJCQlOb2RlICpleHByLAorCQkJCQkJCQkJCQlP aWQgZXhwcnR5cGUsCisJCQkJCQkJCQkJCU9pZCB0YXJnZXR0eXBlLAorCQkJCQkJCQkJCQlpbnQz MiB0YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJCUNvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKKwkJ CQkJCQkJCQkJQ29lcmNpb25Gb3JtIGNmb3JtYXQsCisJCQkJCQkJCQkJCWludCBsb2NhdGlvbiwK KwkJCQkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIGNhbl9jb2VyY2VfdHlw ZShpbnQgbmFyZ3MsIGNvbnN0IE9pZCAqaW5wdXRfdHlwZWlkcywgY29uc3QgT2lkICp0YXJnZXRf dHlwZWlkcywKIAkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQpOwogZXh0ZXJuIE5vZGUg KmNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCSBPaWQg aW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQkJ CQkgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxv Y2F0aW9uKTsKK2V4dGVybiBOb2RlICpjb2VyY2VfdHlwZV9leHRlbmRlZChQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCQkJCSAgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0 VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAorCQkJCQkJCQkgIENvZXJjaW9uQ29udGV4dCBj Y29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbiwKKwkJCQkJCQkJICBO b2RlICplc2NvbnRleHQpOwogZXh0ZXJuIE5vZGUgKmNvZXJjZV90b19kb21haW4oTm9kZSAqYXJn LCBPaWQgYmFzZVR5cGVJZCwgaW50MzIgYmFzZVR5cGVNb2QsCiAJCQkJCQkJICBPaWQgdHlwZUlk LAogCQkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1h dCwgaW50IGxvY2F0aW9uLAotCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbik7CisJCQkJ CQkJICBib29sIGhpZGVJbnB1dENvZXJjaW9uLAorCQkJCQkJCSAgTm9kZSAqZXNjb250ZXh0KTsK IAogZXh0ZXJuIE5vZGUgKmNvZXJjZV90b19ib29sZWFuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqbm9kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oCmluZGV4IGZjMmNiZWIyMDgzLi43MjZjMWZjZDBlMiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5k CiAJRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEUsCS8qIHNpbmdsZS1yb3cgVkFMVUVTIChpbiBJTlNF UlQgb25seSkgKi8KIAlFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVCwgLyogQ0hFQ0sgY29uc3Ry YWludCBmb3IgYSB0YWJsZSAqLwogCUVYUFJfS0lORF9ET01BSU5fQ0hFQ0ssCQkvKiBDSEVDSyBj b25zdHJhaW50IGZvciBhIGRvbWFpbiAqLworCUVYUFJfS0lORF9DQVNUX0RFRkFVTFQsCQkvKiBk ZWZhdWx0IGV4cHJlc3Npb24gaW4gQ0FTVCBERUZBVUxUIE9OCisJCQkJCQkJCSAqIENPTlZFUlNJ T04gRVJST1IgKi8KIAlFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQsCS8qIGRlZmF1bHQgdmFsdWUg Zm9yIGEgdGFibGUgY29sdW1uICovCiAJRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQsIC8qIGRl ZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGZvciBmdW5jdGlvbiAqLwogCUVYUFJfS0lORF9JTkRFWF9F WFBSRVNTSU9OLCAvKiBpbmRleCBleHByZXNzaW9uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfdHlwZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaApp bmRleCBhMzM1ODA3YjBiMC4uZTMwM2ExMDczYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV90eXBlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaApA QCAtNDcsNiArNDcsOCBAQCBleHRlcm4gY2hhciAqdHlwZVR5cGVOYW1lKFR5cGUgdCk7CiBleHRl cm4gT2lkCXR5cGVUeXBlUmVsaWQoVHlwZSB0eXApOwogZXh0ZXJuIE9pZAl0eXBlVHlwZUNvbGxh dGlvbihUeXBlIHR5cCk7CiBleHRlcm4gRGF0dW0gc3RyaW5nVHlwZURhdHVtKFR5cGUgdHAsIGNo YXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kKTsKK2V4dGVybiBib29sIHN0cmluZ1R5cGVEYXR1 bVNhZmUoVHlwZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBhdHR0eXBtb2QsCisJCQkJCQkJCU5v ZGUgKmVzY29udGV4dCwgRGF0dW0gKnJlc3VsdCk7CiAKIGV4dGVybiBPaWQJdHlwZWlkVHlwZVJl bGlkKE9pZCB0eXBlX2lkKTsKIGV4dGVybiBPaWQJdHlwZU9yRG9tYWluVHlwZVJlbGlkKE9pZCB0 eXBlX2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi43Y2ZlYzg2NDQ0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQKQEAgLTAsMCArMSw5ODkgQEAKK1NFVCBleHRy YV9mbG9hdF9kaWdpdHMgPSAwOworU0VUIGxjX21vbmV0YXJ5IFRPICJDIjsKKy0tIENBU1QgREVG QVVMVCBPTiBDT05WRVJTSU9OIEVSUk9SCitTRUxFQ1QgQ0FTVChCJzAxJyBBUyBkYXRlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKEJJVCcwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChUUlVF IEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMS4xIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IENBU1QoMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRl IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDExMTEgQVMgImNoYXIiIERFRkFV TFQgJ0EnIE9OIENPTlZFUlNJT04gRVJST1IpOworIGNoYXIgCistLS0tLS0KKyBBCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCcyJzo6anNvbmIgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgdGV4dCAKKy0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEn IENPTExBVEUgIkMiIHx8ICdoJyBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyB0ZXh0IAorLS0tLS0tCisgMWgKKygxIHJvdykKKworU0VMRUNUIENBU1Qo Y29uY2F0KCcxJyBjb2xsYXRlICJDIiwgJ2gnKSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworIGNvbmNhdCAKKy0tLS0tLS0tCisgICAgICAgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKDY1NTM2IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGludDIgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGludDgoNjU1 MzYpIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCist LS0tLS0KKyAgICAgCisoMSByb3cpCisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGlzIGEgdW5rbm93 biBjb25zdAorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBPTiBDT05WRVJT SU9OIEVSUk9SKSk7IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0 eXBlIGludGVnZXI6ICJlcnJvciIKK0xJTkUgMTogVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50 ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgICAgICAgICAgICAgICAgICAgICBe CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAgICAgICAgCisoMSByb3cpCisKK1ZBTFVFUyAo Q0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7 CisgY29sdW1uMSAKKy0tLS0tLS0tLQorICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1Qo J2EnIGFzIGludCBERUZBVUxUIDE4IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0t LS0KKyAgIDE4CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0o MSkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucworTElORSAx OiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENB U1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBFUlJPUik7 IC0tIGVycm9yCitFUlJPUjogIHdpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENB U1QgREVGQVVMVCBleHByZXNzaW9ucworTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERF RkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEUuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAo U0VMRUNUIE5VTEwpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5u b3QgdXNlIHN1YnF1ZXJ5IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9uCitMSU5FIDE6IFNFTEVD VCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAoU0VMRUNUIE5VTEwpIE9OIENPTlZFUlNJT04gRS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1Qo J2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImIiCitMSU5FIDE6 IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgn YSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK0xJ TkUgMTogU0VMRUNUIENBU1QoJ2EnOjppbnQgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SLi4uCisgICAgICAgICAgICAgICAgICAgIF4KKy0tIHRoZSBkZWZhdWx0IGV4cHJl c3Npb27igJlzIGNvbGxhdGlvbiBzaG91bGQgbWF0Y2ggdGFyZ2V0IHR5cGUgY29sbGF0aW9uCitW QUxVRVMgKENBU1QoJ2Vycm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMiIE9OIENP TlZFUlNJT04gRVJST1IpKTsKK0VSUk9SOiAgY29sbGF0aW9uIG9mIENBU1QgREVGQVVMVCBleHBy ZXNzaW9uIGNvbmZsaWN0cyB3aXRoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorTElORSAxOiBWQUxV RVMgKENBU1QoJ2Vycm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMiIE9OIENPTlYu Li4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJ TDogICJDIiB2ZXJzdXMgImRlZmF1bHQiCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnQydmVj dG9yIERFRkFVTFQgJzEgMycgIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0t LS0tLS0tCisgMSAzCisoMSByb3cpCisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0 b3JbXSBERUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAor LS0tLS0tLS0tCisgeyIxIDMifQorKDEgcm93KQorCistLSBzb3VyY2UgZXhwcmVzc2lvbiBjb250 YWluIHN1YnF1ZXJ5CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMSksIChWQUxVRVMoJ0gnKSkgcyhiKSkKKyAgICAgICAgICAgIEFTIGludDJ2ZWN0b3JbXSBE RUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgIGIgICAgCistLS0tLS0t LS0KKyB7IjEgMyJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKChTRUxFQ1QgQVJSQVkoKFNFTEVD VCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGcsIChWQUxVRVMoJ0gnKSkgcyhiKSkpKQor ICAgICAgICAgICAgQVMgSU5UW10KKyAgICAgICAgICAgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIEZVTkNU SU9OIHJldF9pbnQ4KCkgUkVUVVJOUyBCSUdJTlQgQVMKKyQkCitCRUdJTiBSRVRVUk4gMjE0NzQ4 MzY0ODsgRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFOworU0VMRUNUIENBU1Qo J2EnIGFzIGludCBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVy cm9yCitFUlJPUjogIGludGVnZXIgb3V0IG9mIHJhbmdlCitTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0 ZSBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJP UjogIGNhbm5vdCBjb2VyY2UgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gdG8gdHlwZSBkYXRlCitM SU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05W RVJTSU9OIEVSUi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIERFRkFVTFQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgc2V0LXJldHVybmluZworQ1JFQVRFIEZV TkNUSU9OIHJldF9zZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQkCitCRUdJTiBS RVRVUk4gUVVFUlkgRVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsgRU5EOwor JCQKK0xBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFOworQ1JFQVRFIFRBQkxFIHRjYXN0MChhIElO VCwgYiBpbnQpOworSU5TRVJUIElOVE8gdGNhc3QwIFZBTFVFUygxLDIpLCAoNjU1MzYsMyk7CitT RVQgaml0X2Fib3ZlX2Nvc3QgPSAwOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKKyBhIAorLS0tCisgMQorICAKKygy IHJvd3MpCisKK1NFVCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxUOworU0VMRUNUIENBU1QoYSBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKKyBh IAorLS0tCisgMQorICAKKygyIHJvd3MpCisKK1NFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0 MCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDAgYXMgdDsKK0VS Uk9SOiAgY2Fubm90IGNhc3QgdHlwZSByZWNvcmQgdG8gdGNhc3QwIHdoZW4gREVGQVVMVCBleHBy ZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5F IDE6IFNFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUi4uLgorICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRXhwbGljaXQgY2FzdCBp cyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLgorRFJPUCBUQUJMRSB0 Y2FzdDA7CitTRUxFQ1QgQ0FTVCgxMi4xMTEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZTsKKyB0b19udW1lcmljX3Nj YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTIuMQorKDEgcm93KQorCitD UkVBVEUgVEFCTEUgdGNhc3QoYSB0ZXh0W10sIGIgaW50IEdFTkVSQVRFRCBCWSBERUZBVUxUIEFT IElERU5USVRZKTsKK0lOU0VSVCBJTlRPIHRjYXN0IFZBTFVFUyAoJ3sxMn0nKSwgKCd7MSxhLCBi fScpLCAoJ3t7MSwyfSwge2MsZH19JyksICgnezEzfScpOworU0VMRUNUIENBU1QoJ2EnIGFzIGlu dCBERUZBVUxUIHJldF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0OyAt LSBlcnJvcgorRVJST1I6ICBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQg aW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBp bnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09OVkVSU0lPTiBFUi4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QodCBBUyB0ZXh0W10gREVG QVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNh c3QgYXMgdDsKKyAgICAgdCAgICAgCistLS0tLS0tLS0tLQorIHsyMSwyMiwxfQorIHsyMSwyMiwy fQorIHsyMSwyMiwzfQorIHsyMSwyMiw0fQorKDQgcm93cykKKworU0VMRUNUIENBU1QodC5hIEFT IGludFtdIERFRkFVTFQgJ3syMSwyMn0nOjppbnRbXSB8fCBiIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QgYXMgdDsKKyAgICAgYSAgICAgCistLS0tLS0tLS0tLQorIHsxMn0KKyB7MjEs MjIsMn0KKyB7MjEsMjIsM30KKyB7MTN9CisoNCByb3dzKQorCistLSB0ZXN0IHdpdGggdXNlci1k ZWZpbmVkIHR5cGUsIGRvbWFpbiwgYXJyYXkgb3ZlciBkb21haW4sIGRvbWFpbiBvdmVyIGFycmF5 CitDUkVBVEUgRE9NQUlOIGRfaW50NDIgYXMgaW50IGNoZWNrICh2YWx1ZSA9IDQyKSBOT1QgTlVM TDsKK0NSRUFURSBET01BSU4gZF9pbnQ0MmFyciBhcyBkX2ludDQyW107CitDUkVBVEUgRE9NQUlO IGRfaW50NDJhcnIxIGFzIGRfaW50NDJhcnI7CitDUkVBVEUgRE9NQUlOIGRfaW50OCBhcyBpbnQ4 IGNoZWNrICh2YWx1ZSA+IDApOworQ1JFQVRFIERPTUFJTiBkX2ludDhhcnIgYXMgZF9pbnQ4W107 CitDUkVBVEUgRE9NQUlOIGRfY2hhcjNfbm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NS RUFURSBET01BSU4gZF92YXJjaGFyIGFzIHZhcmNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9N QUlOIGRfaW50X2FyciBhcyBpbnRbXSBjaGVjayAodmFsdWUgPSAnezQxLCA0M30nKSBOT1QgTlVM TDsKK0NSRUFURSBUWVBFIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90 X251bGwsIGIgaW50KTsKK0NSRUFURSBUWVBFIGNvbXAyIEFTIChhIGRfdmFyY2hhcik7CitDUkVB VEUgRE9NQUlOIGRfbnVtZXJpYyBhcyBudW1lcmljKDQsNCk7CitTRUxFQ1QgQ0FTVCgxLjA6OmZs b2F0NCBBUyBkX251bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRf bnVtZXJpYyAKKy0tLS0tLS0tLS0tCisgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCd7MS4wfScgQVMgbnVtZXJpYyg0LDEpW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIG51bWVyaWMgCistLS0tLS0tLS0KKyB7MS4wfQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgnezAuMSwgMS4wfScgQVMgZF9udW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworIGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJy b3IKK0VSUk9SOiAgdmFsdWUgZm9yIGRvbWFpbiBkX2ludDQyIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgImRfaW50NDJfY2hlY2siCitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBkb21haW4gZF9p bnQ0MiBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIENBU1QoMTEgQVMgZF9pbnQ0 MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRfaW50NDIgCistLS0tLS0tLS0K KyAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxU IDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRfaW50NDIgCistLS0tLS0tLS0KKyAgICAgIDQy CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4 IERFRkFVTFQgJzEnIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorICAg ICAxCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9p bnQ4W10gREVGQVVMVCAnezF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0t LS0KKyB7NDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEg QVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkg CistLS0tLS0tCisgezQyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50 NDJhcnIxIEFTIGRfaW50OGFycltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFd IEFTIGRfaW50NDJbXSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg IGFycmF5ICAKKy0tLS0tLS0tLQorIHs0Miw0Mn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJS QVlbNDIsNDFdIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsIDQzfScgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHs0MSw0M30KKygxIHJvdykKKworU0VMRUNU IENBU1QoQVJSQVlbNDIsIDQxXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sx LDIsM30nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7MSwy LDN9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0MV0gQVMgZF9pbnQ0MmFycjEg REVGQVVMVCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0t LS0tLS0KKyB7NDIsNDJ9CisoMSByb3cpCisKK1NFTEVDVAorICAgIENBU1QoQ0FTVChBUlJBWVtD QVNUKEFSUkFZWzQyLCA0Ml0gQVMgZF9pbnQ0MmFycildIEFTIGRfaW50NDJhcnIxW10pIEFTIGRf aW50OGFycltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICBhcnJheSAg ICAKKy0tLS0tLS0tLS0tLS0KKyB7Ins0Miw0Mn0ifQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIzMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAt LSBlcnJvcgorRVJST1I6ICB2YWx1ZSB0b28gbG9uZyBmb3IgdHlwZSBjaGFyYWN0ZXIgdmFyeWlu ZygzKQorTElORSAxOiBTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIz MiknIE9OIENPTlZFUlNJT04uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIz KScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29tcDIgCistLS0tLS0tCisgKDEyMykKKygxIHJv dykKKworU0VMRUNUIENBU1QoJygsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29tcF9kb21haW5fd2l0aF90eXBtb2Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCco TlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgJygxLDIpJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAoIjEgICIsMikKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxM LDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEyMzQsMiknIE9OIENP TlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICB2YWx1ZSB0b28gbG9uZyBmb3IgdHlw ZSBjaGFyYWN0ZXIoMykKK0xJTkUgMTogLi4uU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5f d2l0aF90eXBtb2QgREVGQVVMVCAnKDEyMzQsMiknLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoUk9X KE5VTEwsNDIpIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSByZWNvcmQg dG8gY29tcF9kb21haW5fd2l0aF90eXBtb2Qgd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3Bl Y2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENB U1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgLi4uCisg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0 IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCistLSB0ZXN0IGFycmF5IGNvZXJjZQorU0VM RUNUIENBU1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KGFycmF5WydhJ10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlb MTEuMTJdIEFTIGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJy YXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5WzExMTExMTExMTEx MTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJy YXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1 Nl1dIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAK Ky0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGlu dFtdIERFRkFVTFQgJ3stNzg5fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgIAorLS0t LS0tLS0KKyB7LTc4OX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3syMzQsZGVmLDU2N30nOjp0 ZXh0W10gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJT04gRVJST1Ip OworICBpbnQ0ICAgCistLS0tLS0tLS0KKyB7LTEwMTF9CisoMSByb3cpCisKK1NFTEVDVCBDQVNU KEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MSwyfQorKDEgcm93KQor CitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50W10g REVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0t LS0tLQorIHsyMSwyMn0KKygxIHJvdykKKworLS0gZXJyb3I6IGB0aHJlZSc6OmludGAgd2lsbCBm YWlsIGVhcmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQs ICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOwor RVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUiCitM SU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQsICdhJ11d IEFTIGludFtdIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor U0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBpbnRbXSBERUZBVUxUICd7MjEs MjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXgg Zm9yIHR5cGUgaW50ZWdlcjogInRocmVlIgorTElORSAxOiBTRUxFQ1QgQ0FTVChBUlJBWVsxLCAn dGhyZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0uLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gc2FmZSBjYXN0IHdpdGggZ2VvbWV0cnkgZGF0YSB0eXBlCitT RUxFQ1QgQ0FTVCgnKDEsMiknOjpwb2ludCBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgxLDIpLCgxLDIpCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5KV0nOjpsc2VnIEFT IHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnWygxZSszMDAsSW5maW5pdHkpLCgxZSszMDAsSW5maW5pdHkpXSc6OmxzZWcgQVMgcG9p bnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIHBvaW50ICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxZSszMDAsSW5maW5pdHkpCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKCdbKDEsMiksKDMsNCldJzo6cGF0aCBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29uIAorLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCcoTmFOLDEuMCxOYU4saW5maW5pdHkpJzo6Ym94IEFTIHBvaW50IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKDIuMCwy LjAsMC4wLDAuMCknOjpib3ggQVMgbHNlZyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgICAgIGxzZWcgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorIFsoMiwyKSwoMCwwKV0KKygx IHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBvbHlnb24g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgIHBvbHlnb24gICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoKDAsMCksKDAsMiksKDIsMiks KDIsMCkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBB UyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwYXRoIAorLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLGluZmluaXR5LE5hTixpbmZpbml0eSkn Ojpib3ggQVMgY2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAg ICAgY2lyY2xlICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0 eSksTmFOPgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5hTiwwLjApLCgyLjAsNC4wKSwoMC4w LGluZmluaXR5KSc6OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5p dHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4w KSc6OnBvbHlnb24gQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg ICAgICAgIHBhdGggICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgoMiwwKSwoMiw0 KSwoMCwwKSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAu MCwwLjApJzo6cG9seWdvbiBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgyLDQpLCgwLDApCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCcoTmFOLGluZmluaXR5KSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpw b2x5Z29uIEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAg ICAgIGNpcmNsZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgPChOYU4sSW5maW5p dHkpLE5hTj4KKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoNSwxKSwzPic6OmNpcmNsZSBBUyBw b2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9pbnQgCistLS0tLS0t CisgKDUsMSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBi b3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAgIAorLS0t LS0tLS0tLS0tLQorICgzLDUpLCgzLDUpCisoMSByb3cpCisKKy0tIGNhc3QgZnJvbSB0eXBlIGNp cmNsZSB0byB0eXBlIHBvbHlnb24gaXMgaW1wbGVtZW50ZWQgYXMgYW4gU1FMIGZ1bmN0aW9uLCB3 aGljaCBjYW5ub3QgYmUgZXJyb3Itc2FmZQorU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNs ZSBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29u IAorLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIFNhZmUgdHlwZSBjYXN0IHN1cHBvcnRzIG1v bmV5IGFzIGEgdGFyZ2V0IHR5cGUsIGJ1dCBub3QgYXMgYSBzb3VyY2UgdHlwZS4KK1NFTEVDVCBD QVNUKCcxMjM0NTY3ODkwMTIzNDU2NzgnOjpudW1lcmljIEFTIE1PTkVZIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBtb25leSAKKy0tLS0tLS0KKyAgICAgIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6aW50OCBBUyBNT05FWSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkgCistLS0tLS0tCisgICAgICAKKygx IHJvdykKKworU0VMRUNUIENBU1QoJzIxNDc0ODM2NDcnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICBtb25leSAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyAkMiwxNDcsNDgzLDY0Ny4wMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn LTIxNDc0ODM2NDgnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyAgICAgICBtb25leSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0kMiwx NDcsNDgzLDY0OC4wMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnLTAnOjppbnQ0IEFTIE1PTkVZ IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBtb25leSAKKy0tLS0tLS0KKyAk MC4wMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1lcmljIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBt b25leSB0byBudW1lcmljIHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBD QVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6Om1v bmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJTy4uLgorICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9u IGlzIG5vdCBlcnJvciBzYWZlLgorU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlbXSBBUyBudW1lcmlj W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2Fz dCB0eXBlIG1vbmV5W10gdG8gbnVtZXJpY1tdIHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNw ZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBD QVNUKE5VTEw6Om1vbmV5W10gQVMgbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRS4uLgor ICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1 dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLgorLS0gc2FmZSBjYXN0IGZyb20gYnl0ZWEg dHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCAoJ1x4MTEyMjMzNDQ1NTY2Nzc4 ODk5Jzo6Ynl0ZWEgQVMgaW50OCBERUZBVUxUIDE5IE9OIENPTlZFUlNJT04gRVJST1IpOworIGlu dDggCistLS0tLS0KKyAgIDE5CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OUEn OjpieXRlYSBBUyBpbnQ0IERFRkFVTFQgMjAgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAK Ky0tLS0tLQorICAgMjAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6Ynl0ZWEg QVMgaW50MiBERUZBVUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDIgCistLS0tLS0K KyAgIDIxCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OTBhYmNkZWYnOjpieXRl YSBBUyB1dWlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB1dWlkIAorLS0t LS0tCisgCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBmcm9tIHV1aWQgdHlwZSB0byBvdGhlciBk YXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnNWIzNTM4MGEtNzE0My00OTEyLTliNTUtZjMyMjY5OWM2 NzcwJzo6dXVpZCBBUyBieXRlYSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg ICAgICAgICAgICAgICBieXRlYSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFx4NWIzNTM4MGE3MTQzNDkxMjliNTVmMzIyNjk5YzY3NzAKKygx IHJvdykKKworLS0gc2FmZSBjYXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcwor U0VMRUNUIENBU1QoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIy IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDIyCisoMSByb3cpCisK K1NFTEVDVCBDQVNUICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxU IDIzIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgIDIzCisoMSByb3cp CisKKy0tIHNhZmUgY2FzdCBmcm9tIHRleHQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitzZWxl Y3QgQ0FTVCgnYS5iLmMuZCc6OnRleHQgYXMgcmVnY2xhc3MgZGVmYXVsdCBOVUxMIG9uIGNvbnZl cnNpb24gZXJyb3IpOworIHJlZ2NsYXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVB VEUgVEFCTEUgdGVzdF9zYWZlY2FzdChjb2wwIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdChjb2wwKSBWQUxVRVMgKCc8dmFsdWU+b25lPC92YWx1ZScpOworU0VMRUNUIGNvbDAgYXMg dGV4dCwKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3JlZ2NsYXNzLAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFz cyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTlVMTCBhcyBleHBlY3RfdHJ1 ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgImNoYXIiICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fY2hhciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbmFtZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbmFtZSwKKyAgICAgICBDQVNUKGNvbDAgQVMg eG1sIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b194bWwKK0ZST00gdGVz dF9zYWZlY2FzdDsKKyAgICAgICB0ZXh0ICAgICAgICB8IHRvX3JlZ2NsYXNzIHwgZXhwZWN0X3Ry dWUgfCB0b19jaGFyIHwgICAgICB0b19uYW1lICAgICAgfCB0b194bWwgCistLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLQorIDx2YWx1ZT5vbmU8L3ZhbHVlIHwgICAgICAgICAgICAgfCB0ICAg ICAgICAgICB8IDwgICAgICAgfCA8dmFsdWU+b25lPC92YWx1ZSB8IAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnMTkyLjE2OC4xLngnIGFzIGluZXQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworIGluZXQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzE5Mi4x NjguMS4yLzMwJyBhcyBjaWRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBj aWRyIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcyMjowMDo1YzowODo1NTow ODowMTowMic6Om1hY2FkZHI4IGFzIG1hY2FkZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworIG1hY2FkZHIgCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gc2FmZSBjYXN0 IGJldHdlZWVuIHJhbmdlIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDRyYW5n ZSBBUyBpbnQ0bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50NG11bHRpcmFuZ2UgCistLS0tLS0tLS0tLS0tLS0tCisge1sxLDMpfQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnWzEsMl0nOjppbnQ4cmFuZ2UgQVMgaW50OG11bHRpcmFuZ2UgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDhtdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0t LS0tLQorIHtbMSwzKX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1sxLDJdJzo6bnVtcmFuZ2Ug IEFTIG51bW11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG51 bW11bHRpcmFuZ2UgCistLS0tLS0tLS0tLS0tLS0KKyB7WzEsMl19CisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OmRhdGVyYW5nZSBBUyBkYXRlbXVsdGlyYW5n ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGRhdGVtdWx0aXJhbmdl ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbLWluZmluaXR5LGluZmluaXR5XX0K KygxIHJvdykKKworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6dHNyYW5nZSBB UyB0c211bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAg dHNtdWx0aXJhbmdlICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0 eSxpbmZpbml0eV19CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5 XSc6OnRzdHpyYW5nZSBBUyB0c3R6bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgICAgIHRzdHptdWx0aXJhbmdlICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHtbLWluZmluaXR5LGluZmluaXR5XX0KKygxIHJvdykKKworLS0gc2FmZSBjYXN0IGJl dHdlZWVuIG51bWVyaWMgZGF0YSB0eXBlcworQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QxKAor ICBjb2wxIGZsb2F0NCwgY29sMiBmbG9hdDgsIGNvbDMgbnVtZXJpYywgY29sNCBudW1lcmljW10s CisgIGNvbDUgaW50MiBkZWZhdWx0IDMyNzY3LAorICBjb2w2IGludDQgZGVmYXVsdCAzMjc2OCwK KyAgY29sNyBpbnQ4IGRlZmF1bHQgNDI5NDk2NzI5Nik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVj YXN0MSBWQUxVRVMoJzExLjEyMzQnLCAnMTEuMTIzNCcsICc5MjIzMzcyMDM2ODU0Nzc1ODA4Jywg J3sxMS4xMjM0fSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxV RVMoJ2luZicsICdpbmYnLCAnaW5mJywgJ3sxMS4xMjM0LCAxMiwgaW5mLCBOYU59Jzo6bnVtZXJp Y1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnLWluZicsICctaW5mJywg Jy1pbmYnLCAnezExLjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJ TlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnTmFOJywgJ05hTicsICdOYU4nLCAnezExLjEyMzQs IDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK1NFTEVDVCBjb2w1IGFzIGludDIsCisgICAg ICAgQ0FTVChjb2w1IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w1IEFTIG9pZCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNSBh cyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAg ICAgIENBU1QoY29sNSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w1IGFzIG51 bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisg ICAgICAgQ0FTVChjb2w1IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgaW50 MiAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0 b19mbG9hdDggfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3 NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2 NyB8ICAgICAgICAgIDMyNzY3LjAKKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3 IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAg ICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3Njcg fCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAor IDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3 IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyg0IHJvd3MpCisK K1NFTEVDVCBjb2w2IGFzIGludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIGludDIgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w2IEFT IGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAg ICAgQ0FTVChjb2w2IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fb2lkLAorICAgICAgIENBU1QoY29sNiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNv bDYgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDgsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMoMTAs MSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDE7CisgaW50NCAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29p ZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1lcmljIHwgdG9fbnVt ZXJpY19zY2FsZSAKKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIDMyNzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMy NzY4IHwgICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8 ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAz Mjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwg ICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAg IDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAg MzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAg ICAgICAgIDMyNzY4LjAKKyg0IHJvd3MpCisKK1NFTEVDVCBjb2w3IGFzIGludDgsCisgICAgICAg Q0FTVChjb2w3IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDIsCisgICAgICAgQ0FTVChjb2w3IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w3IEFTIG9pZCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNyBhcyBp bnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAg IENBU1QoY29sNyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w3IGFzIG51bWVy aWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAg ICAgQ0FTVChjb2w3IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgICAgaW50 OCAgICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgIHRvX2ludDggICB8ICB0b19mbG9h dDQgIHwgdG9fZmxvYXQ4ICB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyA0Mjk0 OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2IHwgNC4yOTQ5 N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAgICAKKyA0Mjk0 OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2IHwgNC4yOTQ5 N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAgICAKKyA0Mjk0 OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2IHwgNC4yOTQ5 N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAgICAKKyA0Mjk0 OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2IHwgNC4yOTQ5 N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAgICAKKyg0IHJv d3MpCisKK1NFTEVDVCBjb2wzIGFzIG51bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FT VChjb2wzIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDQsCisgICAgICAgQ0FTVChjb2wzIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9h dDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAg ICBDQVNUKGNvbDMgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIGFzIG51 bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgICAgICAgbnVtZXJpYyAgICAgICB8IHRv X2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8ICB0b19mbG9hdDQgIHwgICAgICB0 b19mbG9hdDggICAgICAgfCAgICAgdG9fbnVtZXJpYyAgICAgIHwgdG9fbnVtZXJpY19zY2FsZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDkyMjMzNzIwMzY4NTQ3NzU4MDggfCAgICAgICAg IHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCA5LjIyMzM3ZSsxOCB8IDkuMjIzMzcyMDM2 ODU0NzhlKzE4IHwgOTIyMzM3MjAzNjg1NDc3NTgwOCB8ICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgIEluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwg ICAgSW5maW5pdHkgfCAgICAgICAgICAgICBJbmZpbml0eSB8ICAgICAgICAgICAgSW5maW5pdHkg fCAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIC1JbmZpbml0eSB8ICAgICAgICAgfCAgICAg ICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgLUluZmluaXR5IHwgICAgICAgICAgICAtSW5maW5p dHkgfCAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICBOYU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAg IE5hTiB8ICAgICAgICAgICAgICAgICAgTmFOIHwgICAgICAgICAgICAgICAgIE5hTiB8ICAgICAg ICAgICAgICBOYU4KKyg0IHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIsCisgICAgICAg Q0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg aW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBpbnQ4W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAgICAgQ0FTVChj b2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBmNGFy ciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmljKDEwLDEpW10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKyAgICAgICAgICBudW1fYXJyICAgICAgICAgICB8IGludDJhcnIgfCBpbnQ0YXJy IHwgaW50OGFyciB8ICAgICAgICAgICBmNGFyciAgICAgICAgICAgIHwgICAgICAgICAgIGY4YXJy ICAgICAgICAgICAgfCBudW1hcnIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHsxMS4xMjM0fSAgICAgICAgICAg ICAgICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTF9ICAgIHwgezExLjEyMzR9ICAgICAgICAg ICAgICAgICAgfCB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsxMS4xfQorIHsxMS4xMjM0 LDEyLEluZmluaXR5LE5hTn0gIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgezExLjEy MzQsMTIsSW5maW5pdHksTmFOfSAgfCB7MTEuMTIzNCwxMixJbmZpbml0eSxOYU59ICB8IAorIHsx MS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwg ezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8 IAorIHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAgICAgfCAgICAg ICAgIHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwtSW5maW5pdHks TmFOfSB8IAorKDQgcm93cykKKworU0VMRUNUIGNvbDEgYXMgZmxvYXQ0LAorICAgICAgIENBU1Qo Y29sMSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQy LAorICAgICAgIENBU1QoY29sMSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMSBBUyBvaWQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDEgYXMgaW50OCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNU KGNvbDEgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19m bG9hdDQsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENB U1QoY29sMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICBmbG9hdDQgICB8 IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8ICAgIHRv X2Zsb2F0OCAgICAgfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxMS4xMjM0 IHwgICAgICAxMSB8ICAgICAgMTEgfCAgICAgICAgfCAgICAgIDExIHwgICAxMS4xMjM0IHwgMTEu MTIzMzk5NzM0NDk3MSB8ICAgIDExLjEyMzQgfCAgICAgICAgICAgICAxMS4xCisgIEluZmluaXR5 IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgIEluZmluaXR5IHwgICAg ICAgICBJbmZpbml0eSB8ICAgSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgLUluZmluaXR5 IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgLUluZmluaXR5IHwgICAg ICAgIC1JbmZpbml0eSB8ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAgTmFO IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgTmFOIHwgICAg ICAgICAgICAgIE5hTiB8ICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCisoNCByb3dzKQor CitTRUxFQ1QgY29sMiBhcyBmbG9hdDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDIgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wy IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisg ICAgICAgQ0FTVChjb2wyIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNU KGNvbDIgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19m bG9hdDgsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMo MTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2Nh bGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgIGZsb2F0OCAgIHwgdG9faW50MiB8IHRvX2ludDQg fCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fbnVtZXJpYyB8 IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAxMS4xMjM0IHwgICAgICAxMSB8ICAgICAgMTEgfCAgICAgICAgfCAg ICAgIDExIHwgICAxMS4xMjM0IHwgICAxMS4xMjM0IHwgICAgMTEuMTIzNCB8ICAgICAgICAgICAg IDExLjEKKyAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAg fCAgSW5maW5pdHkgfCAgSW5maW5pdHkgfCAgIEluZmluaXR5IHwgICAgICAgICAgICAgICAgIAor IC1JbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8IC1JbmZp bml0eSB8IC1JbmZpbml0eSB8ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAg TmFOIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgTmFOIHwg ICAgICAgTmFOIHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJvd3MpCisKKy0t IHNhZmUgdHlwZSBjYXN0IGZvciB0eXBlIGRhdGUvdGltZXN0YW1wL3RpbWVzdGFtcHR6L2ludGVy dmFsCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDIoCisgIGNvbDAgZGF0ZSwgY29sMSB0aW1l c3RhbXAsIGNvbDIgdGltZXN0YW1wdHosCisgIGNvbDMgaW50ZXJ2YWwsIGNvbDQgdGltZSwgY29s NSB0aW1ldHopOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDIgVkFMVUVTCisoJy1pbmZpbml0 eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsCisgICcyMDAzLTAzLTA3 IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnLCAnMjAwMy0wNy0wNyAxNTozNjozOSBBbWVyaWNh L05ld19Zb3JrJyksCisoJy1pbmZpbml0eScsICdpbmZpbml0eScsICdpbmZpbml0eScsICdpbmZp bml0eScsICcxMTo1OTo1OS45OSBQTScsICcxMTo1OTo1OS45OSBQTSBQRFQnKTsKK1NFTEVDVCBj b2wwIGFzIGRhdGUsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNv bDAgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwK KyAgICAgICBDQVNUKGNvbDAgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMCBBUyB0 aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVz dGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyAgIGRhdGUgICAgfCB0b190aW1lc3Rh bXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3Nj YWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLWluZmluaXR5IHwgLWluZmluaXR5 ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAgICB8IC1pbmZpbml0eQorIC1p bmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAgICAgfCAgICAgICAg ICAgfCAtaW5maW5pdHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2wxIGFzIHRpbWVzdGFtcCwKKyAg ICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMSBBUyBkYXRlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29s MSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywK KyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcCgyKSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9N IHRlc3Rfc2FmZWNhc3QyOworIHRpbWVzdGFtcCB8IHRvX3RpbWVzdGFtcHR6IHwgIHRvX2RhdGUg IHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgfCAtaW5maW5pdHkgICAgICB8IC1pbmZpbml0 eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisgaW5maW5pdHkgIHwgaW5maW5p dHkgICAgICAgfCBpbmZpbml0eSAgfCAgICAgICAgICB8ICAgICAgICAgICB8IGluZmluaXR5Ciso MiByb3dzKQorCitTRUxFQ1QgY29sMiBhcyB0aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDIg QVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMiBBUyB0aW1lIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNv bDIgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1l dHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3Qy OworIHRpbWVzdGFtcHR6IHwgdG9fdGltZXN0YW1wdHogfCAgdG9fZGF0ZSAgfCB0b190aW1lcyB8 IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tCisgLWluZmluaXR5ICAgfCAtaW5maW5pdHkgICAgICB8IC1pbmZpbml0eSB8ICAgICAg ICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisgaW5maW5pdHkgICAgfCBpbmZpbml0eSAgICAg ICB8IGluZmluaXR5ICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgaW5maW5pdHkKKygyIHJvd3Mp CisKK1NFTEVDVCBjb2wzIGFzIGludGVydmFsLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lc3Rh bXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHos CisgICAgICAgQ0FTVChjb2wzIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1l dHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAg ICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUsCisgICAgICAgQ0FTVChjb2wzIEFTIGludGVydmFs KDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyBpbnRlcnZhbCAgfCB0b190aW1lc3RhbXB0eiB8IHRv X2RhdGUgfCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSB8IHRvX2lu dGVydmFsX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tCisgLWluZmluaXR5IHwgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfCAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgfCAg ICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8IGluZmluaXR5CisoMiByb3dzKQorCitTRUxFQ1QgY29sNCBhcyB0aW1lLAor ICAgICAgIENBU1QoY29sNCBBUyB0aW1lKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDQgQVMgdGltZXR6IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBJUyBOT1QgTlVMTCBhcyB0b190aW1ldHosCisgICAgICAg Q0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRl c3Rfc2FmZWNhc3QyOworICAgIHRpbWUgICAgIHwgIHRvX3RpbWVzICAgfCB0b190aW1ldHogfCAg ICAgICAgICB0b19pbnRlcnZhbCAgICAgICAgICB8ICAgICAgIHRvX2ludGVydmFsX3NjYWxlICAg ICAgIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDE1 OjM2OjM5ICAgIHwgMTU6MzY6MzkgICAgfCB0ICAgICAgICAgfCBAIDE1IGhvdXJzIDM2IG1pbnMg Mzkgc2VjcyAgICB8IEAgMTUgaG91cnMgMzYgbWlucyAzOSBzZWNzCisgMjM6NTk6NTkuOTkgfCAy Mzo1OTo1OS45OSB8IHQgICAgICAgICB8IEAgMjMgaG91cnMgNTkgbWlucyA1OS45OSBzZWNzIHwg QCAyMyBob3VycyA1OSBtaW5zIDU5Ljk5IHNlY3MKKygyIHJvd3MpCisKK1NFTEVDVCBjb2w1IGFz IHRpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSgyKSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZV9zY2FsZSwKKyAgICAgICBD QVNUKGNvbDUgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1ldHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWV0eig2KSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6X3NjYWxlLAorICAgICAgIENBU1QoY29sNSBB UyBpbnRlcnZhbCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2 YWwsCisgICAgICAgQ0FTVChjb2w1IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsK KyAgICAgdGltZXR6ICAgICB8ICAgdG9fdGltZSAgIHwgdG9fdGltZV9zY2FsZSB8ICAgdG9fdGlt ZXR6ICAgIHwgdG9fdGltZXR6X3NjYWxlIHwgdG9faW50ZXJ2YWwgfCB0b19pbnRlcnZhbF9zY2Fs ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyAxNTozNjozOS0wNCAgICB8IDE1OjM2OjM5ICAgIHwgMTU6MzY6MzkgICAgICB8IDE1 OjM2OjM5LTA0ICAgIHwgMTU6MzY6MzktMDQgICAgIHwgICAgICAgICAgICAgfCAKKyAyMzo1OTo1 OS45OS0wNyB8IDIzOjU5OjU5Ljk5IHwgMjM6NTk6NTkuOTkgICB8IDIzOjU5OjU5Ljk5LTA3IHwg MjM6NTk6NTkuOTktMDcgIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0NSRUFURSBUQUJM RSB0ZXN0X3NhZmVjYXN0Myhjb2wwIGpzb25iKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3Qz KGNvbDApIFZBTFVFUyAoJyJ0ZXN0IicpOworU0VMRUNUIGNvbDAgYXMganNvbmIsCisgICAgICAg Q0FTVChjb2wwIEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludGVnZXIsCisgICAgICAgQ0FTVChjb2wwIEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wwIEFTIGJp Z2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAg ICBDQVNUKGNvbDAgQVMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wwIEFTIGZsb2F0OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMCBBUyBib29s ZWFuIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19ib29sLAorICAgICAg IENBU1QoY29sMCBBUyBzbWFsbGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fc21hbGxpbnQKK0ZST00gdGVzdF9zYWZlY2FzdDM7CisganNvbmIgIHwgdG9faW50ZWdl ciB8IHRvX251bWVyaWMgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fYm9v bCB8IHRvX3NtYWxsaW50IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyAi dGVzdCIgfCAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAg ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAKKygxIHJvdykKKworLS0gdGVzdCBkZXBh cnNlCitTRVQgZGF0ZXN0eWxlIFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3 IEFTCitTRUxFQ1QgQ0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZF UlNJT04gRVJST1IpLAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMt MDYnOjpkYXRlICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgY2FzdDAsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSdd XSBBUyBpbnRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEs CisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtd IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNU KEFSUkFZWyd0aHJlZSddIEFTIElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBjYXN0MzsKK1xzdiBzYWZlY2FzdHZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcg cHVibGljLnNhZmVjYXN0dmlldyBBUworIFNFTEVDVCBDQVNUKCcxMjM0JyBBUyBjaGFyYWN0ZXIo MykgREVGQVVMVCAnLTExMTEnOjppbnRlZ2VyOjpjaGFyYWN0ZXIoMykgT04gQ09OVkVSU0lPTiBF UlJPUikgQVMgYnBjaGFyLAorICAgIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgJzIwMjUtMTItMDYn OjpkYXRlICsgcmFuZG9tKG1pbiA9PiAxLCBtYXggPT4gMSkgT04gQ09OVkVSU0lPTiBFUlJPUikg QVMgY2FzdDAsCisgICAgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlbJ3RocmVlJ10sIEFSUkFZ WydhJ11dIEFTIGludGVnZXJbXSBERUZBVUxUICd7MSwyfSc6OmludGVnZXJbXSBPTiBDT05WRVJT SU9OIEVSUk9SKSBBUyBjYXN0MSwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWycxJywgJzInXSwgQVJS QVlbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTDo6ZGF0ZVtdIE9OIENPTlZF UlNJT04gRVJST1IpIEFTIGNhc3QyLAorICAgIENBU1QoQVJSQVlbJ3RocmVlJ10gQVMgaW50ZWdl cltdIERFRkFVTFQgJ3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNh c3QzCitTRUxFQ1QgKiBGUk9NIHNhZmVjYXN0dmlldzsKKyBicGNoYXIgfCAgIGNhc3QwICAgIHwg Y2FzdDEgfCBjYXN0MiB8IGNhc3QzIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLSstLS0tLS0tCisgMTIzICAgIHwgMjAyNS0xMi0wNyB8IHsxLDJ9IHwgICAgICAgfCB7MSwy fQorKDEgcm93KQorCitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChB UlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERF RkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENB U1QoQVJSQVlbWycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2lu dF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIGNhc3QyOworXHN2IHNhZmVjYXN0dmlldzEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVi bGljLnNhZmVjYXN0dmlldzEgQVMKKyBTRUxFQ1QgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlb J3RocmVlJ10sIEFSUkFZWydhJ11dIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50 ZWdlcltdOjpkX2ludF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDEsCisgICAgQ0FT VChBUlJBWVtBUlJBWVsxLCAyLCAxLjE6OmludGVnZXJdLCBBUlJBWVsndGhyZWUnLCB0cnVlLCAn MDEnOjoiYml0Il1dIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50ZWdlcltdOjpk X2ludF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDIKK1NFTEVDVCAqIEZST00gc2Fm ZWNhc3R2aWV3MTsKKyAgY2FzdDEgIHwgIGNhc3QyICAKKy0tLS0tLS0tLSstLS0tLS0tLS0KKyB7 NDEsNDN9IHwgezQxLDQzfQorKDEgcm93KQorCitSRVNFVCBkYXRlc3R5bGU7CistLSB0ZXN0IENB U1QgREVGQVVMVCBleHByZXNzaW9uIG11dGFiaWxpdHkKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9y X2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChjb2wwIGFzIGludCBERUZBVUxUIHJhbmRvbSht aW49PjEsIG1heD0+MSkgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJyb3IKK0VSUk9SOiAg ZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitM SU5FIDE6IENSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FT VChjb2wwIGFzIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNh c3QzKChDQVNUKGNvbDAgYXMgeGlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkp OyAtLSBlcnJvcgorRVJST1I6ICBkYXRhIHR5cGUgeGlkIGhhcyBubyBkZWZhdWx0IG9wZXJhdG9y IGNsYXNzIGZvciBhY2Nlc3MgbWV0aG9kICJidHJlZSIKK0hJTlQ6ICBZb3UgbXVzdCBzcGVjaWZ5 IGFuIG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5kZXggb3IgZGVmaW5lIGEgZGVmYXVsdCBvcGVy YXRvciBjbGFzcyBmb3IgdGhlIGRhdGEgdHlwZS4KK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lk eCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChjb2wwIGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikpKTsgLS1vaworU0VMRUNUIHBnX2dldF9pbmRleGRlZignY2FzdF9lcnJv cl9pZHgnOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gcHVibGljLnRlc3Rfc2FmZWNh c3QzIFVTSU5HIGJ0cmVlICgoQ0FTVChjb2wwIEFTIGludGVnZXIgREVGQVVMVCBOVUxMOjppbnRl Z2VyIE9OIENPTlZFUlNJT04gRVJST1IpKSkKKygxIHJvdykKKworRFJPUCBWSUVXIHNhZmVjYXN0 dmlldzsKK0RST1AgVklFVyBzYWZlY2FzdHZpZXcxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0 OworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MTsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDI7 CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QzOworRFJPUCBUQUJMRSB0Y2FzdDsKK0RST1AgRlVO Q1RJT04gcmV0X2ludDg7CitEUk9QIEZVTkNUSU9OIHJldF9zZXRpbnQ7CitEUk9QIFRZUEUgY29t cF9kb21haW5fd2l0aF90eXBtb2Q7CitEUk9QIFRZUEUgY29tcDI7CitEUk9QIERPTUFJTiBkX3Zh cmNoYXI7CitEUk9QIERPTUFJTiBkX2ludDhhcnI7CitEUk9QIERPTUFJTiBkX2ludDg7CitEUk9Q IERPTUFJTiBkX2ludDQyYXJyMTsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnI7CitEUk9QIERPTUFJ TiBkX2ludDQyOworRFJPUCBET01BSU4gZF9jaGFyM19ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRf bnVtZXJpYzsKK1JFU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5Owpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dAppbmRleCAwZTY5NjQ0YmNh Mi4uNjhlNjlkMWM1ODQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3Jl YXRlX2Nhc3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qu b3V0CkBAIC04OCw2ICs4OCwxMSBAQCBTRUxFQ1QgMTIzNDo6aW50NDo6Y2FzdHRlc3R0eXBlOyAt LSBTaG91bGQgd29yayBub3cKICBiYXIxMjM0CiAoMSByb3cpCiAKK1NFTEVDVCBDQVNUKDEyMzQ6 OmludDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsg LS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBpbnRlZ2VyIHRvIGNhc3R0ZXN0dHlw ZSB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09O VkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0 dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIFNhZmUgdHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkLgogLS0gY2hlY2sgZGVwZW5kZW5jaWVzIGdlbmVyYXRlZCBmb3IgdGhhdAogU0VMRUNU IHBnX2Rlc2NyaWJlX29iamVjdChjbGFzc2lkLCBvYmppZCwgb2Jqc3ViaWQpIGFzIG9iaiwKICAg ICAgICBwZ19kZXNjcmliZV9vYmplY3QocmVmY2xhc3NpZCwgcmVmb2JqaWQsIHJlZm9ianN1Ymlk KSBhcyBvYmpyZWYsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2 Y2xhc3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dAppbmRl eCBhZDhhYjI5NGZmNi4uZTNmOGEyODA3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l cXVpdmNsYXNzLm91dApAQCAtOTUsNiArOTUsMTMgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlh czFjbXAoaW50OCwgaW50OGFsaWFzMSkgcmV0dXJucyBpbnQKICAgc3RyaWN0IGltbXV0YWJsZSBs YW5ndWFnZSBpbnRlcm5hbCBhcyAnYnRpbnQ4Y21wJzsKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBp bnRlZ2VyX29wcyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChp bnQ4LCBpbnQ4YWxpYXMxKTsKKy0tIGludDhhbGlhczIgYmluYXJ5LWNvZXJjaWJsZSB0byBpbnQ4 LCB0aGlzIHNob3VsZCBub3QgZmFpbAorc2VsZWN0IGNhc3QoJzEnOjppbnQ4IGFzIGludDhhbGlh czIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlhczIgCistLS0t LS0tLS0tLS0KKyAxCisoMSByb3cpCisKIGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFy eSBrZXksIGYxIGludDgsIGYyIGludDgpOwogY3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmlt YXJ5IGtleSwgZjEgaW50OGFsaWFzMSwgZjIgaW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMy ICh4ZiBpbnQ4IHByaW1hcnkga2V5LCB4MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDczNGRhMDU3YzM0Li5jODJiNGIzMTQyMyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC04MSw3ICs4MSw3IEBAIHRlc3Q6IGNy ZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBk YnNpemUgbWVyZ2UgbWlzCiAjIGNvbGxhdGUubGludXgudXRmOCBhbmQgY29sbGF0ZS5pY3UudXRm OCB0ZXN0cyBjYW5ub3QgYmUgcnVuIGluIHBhcmFsbGVsIHdpdGggZWFjaCBvdGhlcgogIyBwc3Fs IGRlcGVuZHMgb24gY3JlYXRlX2FtCiAjIGFtdXRpbHMgZGVwZW5kcyBvbiBnZW9tZXRyeSwgY3Jl YXRlX2luZGV4X3NwZ2lzdCwgaGFzaF9pbmRleCwgYnJpbgotdGVzdDogcnVsZXMgcHNxbCBwc3Fs X2Nyb3NzdGFiIHBzcWxfcGlwZWxpbmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51 dGY4IGNvbGxhdGUud2luZG93cy53aW4xMjUyCit0ZXN0OiBydWxlcyBwc3FsIHBzcWxfY3Jvc3N0 YWIgcHNxbF9waXBlbGluZSBhbXV0aWxzIHN0YXRzX2V4dCBjb2xsYXRlLmxpbnV4LnV0ZjggY29s bGF0ZS53aW5kb3dzLndpbjEyNTIgY2FzdAogCiAjIC0tLS0tLS0tLS0KICMgUnVuIHRoZXNlIGFs b25lIHNvIHRoZXkgZG9uJ3QgcnVuIG91dCBvZiBwYXJhbGxlbCB3b3JrZXJzCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nh c3Quc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMWMxYzVjM2Nl MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsCkBAIC0w LDAgKzEsNDAxIEBACitTRVQgZXh0cmFfZmxvYXRfZGlnaXRzID0gMDsKK1NFVCBsY19tb25ldGFy eSBUTyAiQyI7CisKKy0tIENBU1QgREVGQVVMVCBPTiBDT05WRVJTSU9OIEVSUk9SCitTRUxFQ1Qg Q0FTVChCJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKEJJVCcwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVChUUlVFIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoMS4xIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDExMTEgQVMgImNoYXIiIERFRkFVTFQgJ0EnIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ2RlZic6OnRleHQgQVMgaW50ZWdlciBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMic6Ompzb25iIEFT IHRleHQgREVGQVVMVCAnZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoJzEnIENPTExBVEUgIkMiIHx8ICdoJyBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGNvbmNhdCgnMScgY29sbGF0ZSAiQyIsICdo JykgQVMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KDY1NTM2IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoaW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGlzIGEgdW5rbm93biBjb25zdAorVkFMVUVTIChD QVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7IC0tIGVy cm9yCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikpOworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDQyIE9OIENP TlZFUlNJT04gRVJST1IpKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAxOCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERF RkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVD VCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAoU0VMRUNUIE5VTEwpIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05W RVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCisKKy0tIHRoZSBkZWZhdWx0 IGV4cHJlc3Npb27igJlzIGNvbGxhdGlvbiBzaG91bGQgbWF0Y2ggdGFyZ2V0IHR5cGUgY29sbGF0 aW9uCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMi IE9OIENPTlZFUlNJT04gRVJST1IpKTsKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZl Y3RvciBERUZBVUxUICcxIDMnICBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitWQUxVRVMgKENBU1Qo J2Vycm9yJyBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30nICBPTiBDT05WRVJTSU9OIEVS Uk9SKSk7CisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGNvbnRhaW4gc3VicXVlcnkKK1NFTEVDVCBD QVNUKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSwgKFZBTFVFUygnSCcpKSBz KGIpKQorICAgICAgICAgICAgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIEFSUkFZKChTRUxFQ1QgYiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyKSBnLCAoVkFMVUVTKCdIJykpIHMoYikpKSkKKyAgICAgICAg ICAgIEFTIElOVFtdCisgICAgICAgICAgICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisKK0NSRUFURSBGVU5DVElPTiByZXRfaW50OCgpIFJFVFVSTlMgQklHSU5UIEFTCiskJAor QkVHSU4gUkVUVVJOIDIxNDc0ODM2NDg7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVU QUJMRTsKKworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0ZSBERUZBVUxU IHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCisKKy0tIERFRkFVTFQg ZXhwcmVzc2lvbiBjYW5ub3QgYmUgc2V0LXJldHVybmluZworQ1JFQVRFIEZVTkNUSU9OIHJldF9z ZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQkCitCRUdJTiBSRVRVUk4gUVVFUlkg RVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsgRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWwgSU1NVVRBQkxFOworCitDUkVBVEUgVEFCTEUgdGNhc3QwKGEgSU5ULCBiIGludCk7 CitJTlNFUlQgSU5UTyB0Y2FzdDAgVkFMVUVTKDEsMiksICg2NTUzNiwzKTsKK1NFVCBqaXRfYWJv dmVfY29zdCA9IDA7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3QwOworU0VUIGppdF9hYm92ZV9jb3N0IFRPIERFRkFVTFQ7 CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QwOworU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBhcyB0OworRFJPUCBUQUJMRSB0Y2Fz dDA7CisKK1NFTEVDVCBDQVNUKDEyLjExMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlOworCitDUkVBVEUgVEFCTEUg dGNhc3QoYSB0ZXh0W10sIGIgaW50IEdFTkVSQVRFRCBCWSBERUZBVUxUIEFTIElERU5USVRZKTsK K0lOU0VSVCBJTlRPIHRjYXN0IFZBTFVFUyAoJ3sxMn0nKSwgKCd7MSxhLCBifScpLCAoJ3t7MSwy fSwge2MsZH19JyksICgnezEzfScpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJl dF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0OyAtLSBlcnJvcgorU0VM RUNUIENBU1QodCBBUyB0ZXh0W10gREVGQVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKK1NFTEVDVCBDQVNUKHQuYSBBUyBpbnRb XSBERUZBVUxUICd7MjEsMjJ9Jzo6aW50W10gfHwgYiBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9N IHRjYXN0IGFzIHQ7CisKKy0tIHRlc3Qgd2l0aCB1c2VyLWRlZmluZWQgdHlwZSwgZG9tYWluLCBh cnJheSBvdmVyIGRvbWFpbiwgZG9tYWluIG92ZXIgYXJyYXkKK0NSRUFURSBET01BSU4gZF9pbnQ0 MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2lu dDQyYXJyIGFzIGRfaW50NDJbXTsKK0NSRUFURSBET01BSU4gZF9pbnQ0MmFycjEgYXMgZF9pbnQ0 MmFycjsKK0NSRUFURSBET01BSU4gZF9pbnQ4IGFzIGludDggY2hlY2sgKHZhbHVlID4gMCk7CitD UkVBVEUgRE9NQUlOIGRfaW50OGFyciBhcyBkX2ludDhbXTsKK0NSRUFURSBET01BSU4gZF9jaGFy M19ub3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIg YXMgdmFyY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtd IGNoZWNrICh2YWx1ZSA9ICd7NDEsIDQzfScpIE5PVCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9k b21haW5fd2l0aF90eXBtb2QgQVMgKGEgZF9jaGFyM19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRF IFRZUEUgY29tcDIgQVMgKGEgZF92YXJjaGFyKTsKK0NSRUFURSBET01BSU4gZF9udW1lcmljIGFz IG51bWVyaWMoNCw0KTsKKworU0VMRUNUIENBU1QoMS4wOjpmbG9hdDQgQVMgZF9udW1lcmljIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MS4wfScgQVMg bnVtZXJpYyg0LDEpW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoJ3swLjEsIDEuMH0nIEFTIGRfbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQxIE9OIENP TlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKDEx IEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxF Q1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OCBERUZBVUxUICcxJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMg ZF9pbnQ4W10gREVGQVVMVCAnezF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxfScgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRf aW50OGFycltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENB U1QoQVJSQVlbNDIsNDFdIEFTIGRfaW50NDJbXSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFV TFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQy LCA0MV06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFyciBERUZBVUxUICd7MSwyLDN9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0MV0gQVMgZF9pbnQ0MmFycjEg REVGQVVMVCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUCisgICAgQ0FT VChDQVNUKEFSUkFZW0NBU1QoQVJSQVlbNDIsIDQyXSBBUyBkX2ludDQyYXJyKV0gQVMgZF9pbnQ0 MmFycjFbXSkgQVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIzMiknIE9OIENP TlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIg REVGQVVMVCAnKDEyMyknIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygsNDIp JyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1v ZCBERUZBVUxUICcoMSwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5V TEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScgT04g Q09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMg Y29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OyAtLSBlcnJvcgorCistLSB0ZXN0IGFycmF5IGNvZXJjZQorU0VMRUNUIENBU1QoYXJyYXlbJ2En Ojp0ZXh0XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVChhcnJheVsnYSddIEFTIGludFtdIERFRkFVTFQgQVJSQVlbMV0gT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsxMS4xMl0gQVMgZGF0ZVtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGFycmF5WzExMTExMTExMTExMTEx MTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVChhcnJheVtbJ2FiYyddLFs0NTZdXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnezEyMyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVM VCAney03ODl9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MjM0LGRlZiw1 Njd9Jzo6dGV4dFtdIEFTIGludGVnZXJbXSBERUZBVUxUICd7LTEwMTF9JyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGlu dFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFS UkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9 JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKy0tIGVycm9yOiBgdGhyZWUnOjppbnRgIHdpbGwgZmFp bCBlYXJsaWVyCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJzo6aW50LCAn YSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10gREVGQVVMVCAnezIxLDIy fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCB3aXRoIGdlb21ldHJ5IGRh dGEgdHlwZQorU0VMRUNUIENBU1QoJygxLDIpJzo6cG9pbnQgQVMgYm94IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5 KV0nOjpsc2VnIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZpbml0eSksKDFlKzMwMCxJbmZpbml0eSldJzo6bHNlZyBB UyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn WygxLDIpLCgzLDQpXSc6OnBhdGggYXMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTiwxLjAsTmFOLGluZmluaXR5KSc6OmJveCBBUyBw b2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIu MCwyLjAsMC4wLDAuMCknOjpib3ggQVMgbHNlZyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAs MC4wLDAuMCknOjpib3ggQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CitTRUxFQ1QgQ0FTVCgnKDIuMCxpbmZpbml0eSxOYU4saW5maW5pdHkpJzo6Ym94IEFTIGNpcmNs ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTiww LjApLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQu MCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBv bHlnb24gQVMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKCcoTmFOLGluZmluaXR5KSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFT IGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn PCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCc8KDMsNSksMD4nOjpjaXJjbGUgYXMgYm94IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gY2FzdCBmcm9tIHR5cGUgY2lyY2xlIHRvIHR5 cGUgcG9seWdvbiBpcyBpbXBsZW1lbnRlZCBhcyBhbiBTUUwgZnVuY3Rpb24sIHdoaWNoIGNhbm5v dCBiZSBlcnJvci1zYWZlCitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHln b24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBTYWZlIHR5cGUgY2Fz dCBzdXBwb3J0cyBtb25leSBhcyBhIHRhcmdldCB0eXBlLCBidXQgbm90IGFzIGEgc291cmNlIHR5 cGUuCitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05FWSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5 MDEyMzQ1Njc4Jzo6aW50OCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgnMjE0NzQ4MzY0Nyc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50NCBB UyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn LTAnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKE5VTEw6Om1vbmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlbXSBBUyBudW1lcmljW10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSBieXRlYSB0 eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUICgnXHgxMTIyMzM0NDU1NjY3Nzg4 OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnXHgxMjM0NTY3ODlBJzo6Ynl0ZWEgQVMgaW50NCBERUZBVUxUIDIwIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6Ynl0ZWEgQVMgaW50MiBERUZB VUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5MGFi Y2RlZic6OmJ5dGVhIEFTIHV1aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor CistLSBzYWZlIGNhc3QgZnJvbSB1dWlkIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNU IENBU1QoJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2OTljNjc3MCc6OnV1aWQgQVMgYnl0 ZWEgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJv bSBiaXQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnMTExMTExMTExMTAw MDAxJzo6Yml0KDEwMCkgQVMgSU5UIERFRkFVTFQgMjIgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVCAoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVDggREVGQVVMVCAy MyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGZyb20gdGV4dCB0eXBlIHRv IG90aGVyIGRhdGEgdHlwZXMKK3NlbGVjdCBDQVNUKCdhLmIuYy5kJzo6dGV4dCBhcyByZWdjbGFz cyBkZWZhdWx0IE5VTEwgb24gY29udmVyc2lvbiBlcnJvcik7CisKK0NSRUFURSBUQUJMRSB0ZXN0 X3NhZmVjYXN0KGNvbDAgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0KGNvbDApIFZB TFVFUyAoJzx2YWx1ZT5vbmU8L3ZhbHVlJyk7CisKK1NFTEVDVCBjb2wwIGFzIHRleHQsCisgICAg ICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19yZWdjbGFzcywKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5VTEwgYXMgZXhwZWN0X3RydWUsCisgICAgICAg Q0FTVChjb2wwIEFTICJjaGFyIiAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2NoYXIsCisgICAgICAgQ0FTVChjb2wwIEFTIG5hbWUgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX25hbWUsCisgICAgICAgQ0FTVChjb2wwIEFTIHhtbCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9feG1sCitGUk9NIHRlc3Rfc2FmZWNhc3Q7 CisKK1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLjIvMzAnIGFzIGNpZHIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzIyOjAwOjVjOjA4 OjU1OjA4OjAxOjAyJzo6bWFjYWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBiZXR3ZWVlbiByYW5nZSBkYXRhIHR5cGVzCitT RUxFQ1QgQ0FTVCgnWzEsMl0nOjppbnQ0cmFuZ2UgQVMgaW50NG11bHRpcmFuZ2UgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50OHJhbmdl IEFTIGludDhtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKCdbMSwyXSc6Om51bXJhbmdlICBBUyBudW1tdWx0aXJhbmdlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5 XSc6OmRhdGVyYW5nZSBBUyBkYXRlbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3JhbmdlIEFT IHRzbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3R6cmFuZ2UgQVMgdHN0em11bHRpcmFuZ2Ug REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgYmV0d2Vl ZW4gbnVtZXJpYyBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDEoCisgIGNv bDEgZmxvYXQ0LCBjb2wyIGZsb2F0OCwgY29sMyBudW1lcmljLCBjb2w0IG51bWVyaWNbXSwKKyAg Y29sNSBpbnQyIGRlZmF1bHQgMzI3NjcsCisgIGNvbDYgaW50NCBkZWZhdWx0IDMyNzY4LAorICBj b2w3IGludDggZGVmYXVsdCA0Mjk0OTY3Mjk2KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3Qx IFZBTFVFUygnMTEuMTIzNCcsICcxMS4xMjM0JywgJzkyMjMzNzIwMzY4NTQ3NzU4MDgnLCAnezEx LjEyMzR9Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygn aW5mJywgJ2luZicsICdpbmYnLCAnezExLjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpudW1lcmljW10p OworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCctaW5mJywgJy1pbmYnLCAnLWlu ZicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8g dGVzdF9zYWZlY2FzdDEgVkFMVUVTKCdOYU4nLCAnTmFOJywgJ05hTicsICd7MTEuMTIzNCwgMTIs IC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworCitTRUxFQ1QgY29sNSBhcyBpbnQyLAorICAgICAg IENBU1QoY29sNSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQyLAorICAgICAgIENBU1QoY29sNSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNSBBUyBvaWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDUgYXMg aW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAg ICBDQVNUKGNvbDUgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w1IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNSBhcyBudW1l cmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAg ICAgIENBU1QoY29sNSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxF Q1QgY29sNiBhcyBpbnQ0LAorICAgICAgIENBU1QoY29sNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNiBBUyBpbnQ0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENB U1QoY29sNiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29p ZCwKKyAgICAgICBDQVNUKGNvbDYgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgZmxvYXQ0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w2IGFz IGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAor ICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljKDEwLDEpIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9N IHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sNyBhcyBpbnQ4LAorICAgICAgIENBU1QoY29s NyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAor ICAgICAgIENBU1QoY29sNyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDcgYXMgaW50OCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNv bDcgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDQsCisgICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmljIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1Qo Y29sNyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMyBh cyBudW1lcmljLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQ0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29s MyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAg ICAgICBDQVNUKGNvbDMgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0 OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAg IENBU1QoY29sMyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rf c2FmZWNhc3QxOworCitTRUxFQ1QgY29sNCBhcyBudW1fYXJyLAorICAgICAgIENBU1QoY29sNCBB UyBpbnQyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDJhcnIsCisg ICAgICAgQ0FTVChjb2w0IEFTIGludDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgaW50NGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgaW50OFtdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9h dDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjRhcnIsCisgICAgICAg Q0FTVChjb2w0IGFzIGZsb2F0OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBmOGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgbnVtZXJpYygxMCwxKVtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBudW1hcnIKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisK K1NFTEVDVCBjb2wxIGFzIGZsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDEg QVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAg ICAgICBDQVNUKGNvbDEgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wxIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0NCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1Qo Y29sMSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zs b2F0OCwKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYygx MCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDIgYXMgZmxvYXQ4LAorICAgICAg IENBU1QoY29sMiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQyLAorICAgICAgIENBU1QoY29sMiBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMiBBUyBvaWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDIgYXMg aW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAg ICBDQVNUKGNvbDIgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBhcyBudW1l cmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAg ICAgIENBU1QoY29sMiBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCistLSBz YWZlIHR5cGUgY2FzdCBmb3IgdHlwZSBkYXRlL3RpbWVzdGFtcC90aW1lc3RhbXB0ei9pbnRlcnZh bAorQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QyKAorICBjb2wwIGRhdGUsIGNvbDEgdGltZXN0 YW1wLCBjb2wyIHRpbWVzdGFtcHR6LAorICBjb2wzIGludGVydmFsLCBjb2w0IHRpbWUsIGNvbDUg dGltZXR6KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QyIFZBTFVFUworKCctaW5maW5pdHkn LCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLAorICAnMjAwMy0wMy0wNyAx NTozNjozOSBBbWVyaWNhL05ld19Zb3JrJywgJzIwMDMtMDctMDcgMTU6MzY6MzkgQW1lcmljYS9O ZXdfWW9yaycpLAorKCctaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5p dHknLCAnMTE6NTk6NTkuOTkgUE0nLCAnMTE6NTk6NTkuOTkgUE0gUERUJyk7CisKK1NFTEVDVCBj b2wwIGFzIGRhdGUsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNv bDAgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwK KyAgICAgICBDQVNUKGNvbDAgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMCBBUyB0 aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVz dGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0 YW1wLAorICAgICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRh dGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAg Q0FTVChjb2wxIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWVzLAorICAgICAgIENBU1QoY29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1w KDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2Nh bGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAor ICAgICAgIENBU1QoY29sMiBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChj b2wyIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVz LAorICAgICAgIENBU1QoY29sMiBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZS T00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2wzIGFzIGludGVydmFsLAorICAgICAgIENB U1QoY29sMyBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wzIEFTIGRhdGUgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wzIEFTIHRp bWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAg IENBU1QoY29sMyBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUsCisgICAgICAgQ0FT VChjb2wzIEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDQg YXMgdGltZSwKKyAgICAgICBDQVNUKGNvbDQgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWV0eiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTk9UIE5VTEwgYXMgdG9fdGltZXR6 LAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFs KDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDUgYXMgdGltZXR6LAorICAgICAg IENBU1QoY29sNSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1lLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lX3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1l dHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAg ICBDQVNUKGNvbDUgQVMgdGltZXR6KDYpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1ldHpfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFTIGludGVydmFsIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBDQVNU KGNvbDUgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitDUkVBVEUgVEFCTEUg dGVzdF9zYWZlY2FzdDMoY29sMCBqc29uYik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0Myhj b2wwKSBWQUxVRVMgKCcidGVzdCInKTsKK1NFTEVDVCBjb2wwIGFzIGpzb25iLAorICAgICAgIENB U1QoY29sMCBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnRlZ2VyLAorICAgICAgIENBU1QoY29sMCBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMCBBUyBiaWdp bnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAg Q0FTVChjb2wwIEFTIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMCBBUyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDAgQVMgYm9vbGVh biBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fYm9vbCwKKyAgICAgICBD QVNUKGNvbDAgQVMgc21hbGxpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX3NtYWxsaW50CitGUk9NIHRlc3Rfc2FmZWNhc3QzOworCistLSB0ZXN0IGRlcGFyc2UKK1NF VCBkYXRlc3R5bGUgVE8gSVNPLCBZTUQ7CitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcgQVMKK1NF TEVDVCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04gQ09OVkVSU0lPTiBF UlJPUiksCisgICAgICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKCcyMDI1LURlYy0wNic6OmRh dGUgKyByYW5kb20obWluPT4xLCBtYXg9PjE6OmludCkpKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBjYXN0MCwKKyAgICAgICBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGlu dFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAg ICBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyLAorICAgICAgIENBU1QoQVJSQVlb J3RocmVlJ10gQVMgSU5UW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IGNhc3QzOworXHN2IHNhZmVjYXN0dmlldworU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXc7CisK K0NSRUFURSBWSUVXIHNhZmVjYXN0dmlldzEgQVMKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBb J3RocmVlJ10sWydhJ11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQz fScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJBWVtbJzEn LCAnMicsIDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FycgorICAgICAg ICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDI7Citc c3Ygc2FmZWNhc3R2aWV3MQorU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXcxOworCitSRVNFVCBk YXRlc3R5bGU7CisKKy0tIHRlc3QgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gbXV0YWJpbGl0eQor Q1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QzKChDQVNUKGNvbDAg YXMgaW50IERFRkFVTFQgcmFuZG9tKG1pbj0+MSwgbWF4PT4xKSBPTiBDT05WRVJTSU9OIEVSUk9S KSkpOyAtLSBlcnJvcgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNh c3QzKChDQVNUKGNvbDAgYXMgeGlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkp OyAtLSBlcnJvcgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3Qz KChDQVNUKGNvbDAgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAt LW9rCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdjYXN0X2Vycm9yX2lkeCc6OnJlZ2NsYXNzKTsK KworRFJPUCBWSUVXIHNhZmVjYXN0dmlldzsKK0RST1AgVklFVyBzYWZlY2FzdHZpZXcxOworRFJP UCBUQUJMRSB0ZXN0X3NhZmVjYXN0OworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MTsKK0RST1Ag VEFCTEUgdGVzdF9zYWZlY2FzdDI7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QzOworRFJPUCBU QUJMRSB0Y2FzdDsKK0RST1AgRlVOQ1RJT04gcmV0X2ludDg7CitEUk9QIEZVTkNUSU9OIHJldF9z ZXRpbnQ7CitEUk9QIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7CitEUk9QIFRZUEUgY29t cDI7CitEUk9QIERPTUFJTiBkX3ZhcmNoYXI7CitEUk9QIERPTUFJTiBkX2ludDhhcnI7CitEUk9Q IERPTUFJTiBkX2ludDg7CitEUk9QIERPTUFJTiBkX2ludDQyYXJyMTsKK0RST1AgRE9NQUlOIGRf aW50NDJhcnI7CitEUk9QIERPTUFJTiBkX2ludDQyOworRFJPUCBET01BSU4gZF9jaGFyM19ub3Rf bnVsbDsKK0RST1AgRE9NQUlOIGRfbnVtZXJpYzsKK1JFU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0czsK K1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX2Nhc3Quc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCmluZGV4 IDMyMTg3ODUzY2M3Li4wYTE1YTc5NWQ4NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2Nhc3Quc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0 LnNxbApAQCAtNjIsNiArNjIsNyBAQCAkJCBTRUxFQ1QgKCdiYXInOjp0ZXh0IHx8ICQxOjp0ZXh0 KTsgJCQ7CiAKIENSRUFURSBDQVNUIChpbnQ0IEFTIGNhc3R0ZXN0dHlwZSkgV0lUSCBGVU5DVElP TiBiYXJfaW50NF90ZXh0KGludDQpIEFTIElNUExJQ0lUOwogU0VMRUNUIDEyMzQ6OmludDQ6OmNh c3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdvcmsgbm93CitTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFT IGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9y CiAKIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5lcmF0ZWQgZm9yIHRoYXQKIFNFTEVDVCBwZ19k ZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkKSBhcyBvYmosCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNsYXNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCmluZGV4IDdmYzIxNTkzNDliLi43YWRhNGJiNTUwNCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKQEAgLTk4LDYgKzk4LDkgQEAgY3JlYXRlIGZ1 bmN0aW9uIGludDhhbGlhczFjbXAoaW50OCwgaW50OGFsaWFzMSkgcmV0dXJucyBpbnQKIGFsdGVy IG9wZXJhdG9yIGZhbWlseSBpbnRlZ2VyX29wcyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24g MSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBpbnQ4YWxpYXMxKTsKIAorLS0gaW50OGFsaWFzMiBiaW5h cnktY29lcmNpYmxlIHRvIGludDgsIHRoaXMgc2hvdWxkIG5vdCBmYWlsCitzZWxlY3QgY2FzdCgn MSc6OmludDggYXMgaW50OGFsaWFzMiBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7 CisKIGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDgsIGYyIGlu dDgpOwogY3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEgaW50OGFsaWFz MSwgZjIgaW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMyICh4ZiBpbnQ4IHByaW1hcnkga2V5 LCB4MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggZGJiZWM4NGIyMjIuLmRkZmJkODRjOGQ2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMjczOCw2ICsyNzM4LDggQEAgU1RSTEVOCiBTVgogU1lOQ0hST05JWkFUSU9OX0JBUlJJ RVIKIFNZU1RFTV9JTkZPCitTYWZlVHlwZUNhc3RFeHByCitTYWZlVHlwZUNhc3RTdGF0ZQogU2Ft cGxlU2NhbgogU2FtcGxlU2NhbkdldFNhbXBsZVNpemVfZnVuY3Rpb24KIFNhbXBsZVNjYW5TdGF0 ZQotLSAKMi4zNC4xCgo= --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0004-introduce-float8-safe-function.patch" Content-Disposition: attachment; filename="v24-0004-introduce-float8-safe-function.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxch5 RnJvbSA1NWNjOWIzNzIyNzI5YTU3OWNhZTg4MDgwMWI3NTdjYWE2MmE5NzYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MjY6MzAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA0LzldIGludHJvZHVjZSBmbG9hdDggc2FmZSBmdW5jdGlvbgoKdGhpcyBwYXRjaCBpbnRyb2R1 Y2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKZmxvYXQ4X3BsX3NhZmUKZmxvYXQ4X21pX3NhZmUK ZmxvYXQ4X211bF9zYWZlCmZsb2F0OF9kaXZfc2FmZQoKcmVmYWN0b3JpbmcgZXhpc3RpbmcgZnVu Y3Rpb24gaXMgYmUgdG9vIGludmFzaXZlLiAgdGh1cyBhZGQgdGhlc2UgbmV3IGZ1bmN0aW9ucy4K SXQncyB2ZXJ5IHNpbWlsYXIgdG8gZXhpc3Rpbmcgbm9uLXNhZmUgdmVyc2lvbiBmdW5jdGlvbnMu CgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5r ZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBt YWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5v cmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmggfCA2NiArKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNl cnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9mbG9hdC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaAppbmRleCA1ODQwYmJmN2RjOC4u ZmZhNzQzZDYyNzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaApAQCAtMTEyLDE2ICsxMTIsMjIgQEAgZmxvYXQ0X3Bs KGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIAlyZXR1cm4gcmVzdWx0Owog fQogCitzdGF0aWMgaW5saW5lIGZsb2F0OAorZmxvYXQ4X3BsX3NhZmUoY29uc3QgZmxvYXQ4IHZh bDEsIGNvbnN0IGZsb2F0OCB2YWwyLCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQoreworCWZsb2F0 OAkJcmVzdWx0OworCisJcmVzdWx0ID0gdmFsMSArIHZhbDI7CisJaWYgKHVubGlrZWx5KGlzaW5m KHJlc3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNpbmYodmFsMikpCisJCXJldHVybiBmbG9h dF9vdmVyZmxvd19lcnJvcl9leHQoZXNjb250ZXh0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK IHN0YXRpYyBpbmxpbmUgZmxvYXQ4CiBmbG9hdDhfcGwoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0 IGZsb2F0OCB2YWwyKQogewotCWZsb2F0OAkJcmVzdWx0OwotCi0JcmVzdWx0ID0gdmFsMSArIHZh bDI7Ci0JaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNp bmYodmFsMikpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7Ci0KLQlyZXR1cm4gcmVzdWx0Owor CXJldHVybiBmbG9hdDhfcGxfc2FmZSh2YWwxLCB2YWwyLCBOVUxMKTsKIH0KIAogc3RhdGljIGlu bGluZSBmbG9hdDQKQEAgLTEzNiwxNiArMTQyLDIyIEBAIGZsb2F0NF9taShjb25zdCBmbG9hdDQg dmFsMSwgY29uc3QgZmxvYXQ0IHZhbDIpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlu bGluZSBmbG9hdDgKK2Zsb2F0OF9taV9zYWZlKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9h dDggdmFsMiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwlmbG9hdDgJCXJlc3VsdDsKKwor CXJlc3VsdCA9IHZhbDEgLSB2YWwyOworCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAh aXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQorCQlyZXR1cm4gZmxvYXRfb3ZlcmZsb3dfZXJy b3JfZXh0KGVzY29udGV4dCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgaW5saW5l IGZsb2F0OAogZmxvYXQ4X21pKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFsMikK IHsKLQlmbG9hdDgJCXJlc3VsdDsKLQotCXJlc3VsdCA9IHZhbDEgLSB2YWwyOwotCWlmICh1bmxp a2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQotCQlm bG9hdF9vdmVyZmxvd19lcnJvcigpOwotCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gZmxvYXQ4 X21pX3NhZmUodmFsMSwgdmFsMiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQ0CkBA IC0xNjMsMTkgKzE3NSwyNSBAQCBmbG9hdDRfbXVsKGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBm bG9hdDQgdmFsMikKIH0KIAogc3RhdGljIGlubGluZSBmbG9hdDgKLWZsb2F0OF9tdWwoY29uc3Qg ZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwyKQorZmxvYXQ4X211bF9zYWZlKGNvbnN0IGZs b2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFsMiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsK IAlmbG9hdDgJCXJlc3VsdDsKIAogCXJlc3VsdCA9IHZhbDEgKiB2YWwyOwogCWlmICh1bmxpa2Vs eShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQotCQlmbG9h dF9vdmVyZmxvd19lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfb3ZlcmZsb3dfZXJyb3JfZXh0KGVz Y29udGV4dCk7CiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYmIHZhbDEgIT0gMC4wICYm IHZhbDIgIT0gMC4wKQotCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsKKwkJcmV0dXJuIGZsb2F0 X3VuZGVyZmxvd19lcnJvcl9leHQoZXNjb250ZXh0KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CiAK K3N0YXRpYyBpbmxpbmUgZmxvYXQ4CitmbG9hdDhfbXVsKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25z dCBmbG9hdDggdmFsMikKK3sKKwlyZXR1cm4gZmxvYXQ4X211bF9zYWZlKHZhbDEsIHZhbDIsIE5V TEwpOworfQorCiBzdGF0aWMgaW5saW5lIGZsb2F0NAogZmxvYXQ0X2Rpdihjb25zdCBmbG9hdDQg dmFsMSwgY29uc3QgZmxvYXQ0IHZhbDIpCiB7CkBAIC0xOTMsMjEgKzIxMSwyNyBAQCBmbG9hdDRf ZGl2KGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIH0KIAogc3RhdGljIGlu bGluZSBmbG9hdDgKLWZsb2F0OF9kaXYoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2 YWwyKQorZmxvYXQ4X2Rpdl9zYWZlKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFs Miwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsKIAlmbG9hdDgJCXJlc3VsdDsKIAogCWlmICh1 bmxpa2VseSh2YWwyID09IDAuMCkgJiYgIWlzbmFuKHZhbDEpKQotCQlmbG9hdF96ZXJvX2Rpdmlk ZV9lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfemVyb19kaXZpZGVfZXJyb3JfZXh0KGVzY29udGV4 dCk7CiAJcmVzdWx0ID0gdmFsMSAvIHZhbDI7CiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkp ICYmICFpc2luZih2YWwxKSkKLQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJcmV0dXJuIGZs b2F0X292ZXJmbG93X2Vycm9yX2V4dChlc2NvbnRleHQpOwogCWlmICh1bmxpa2VseShyZXN1bHQg PT0gMC4wKSAmJiB2YWwxICE9IDAuMCAmJiAhaXNpbmYodmFsMikpCi0JCWZsb2F0X3VuZGVyZmxv d19lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfdW5kZXJmbG93X2Vycm9yX2V4dChlc2NvbnRleHQp OwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBmbG9hdDgKK2Zsb2F0OF9k aXYoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwyKQoreworCXJldHVybiBmbG9h dDhfZGl2X3NhZmUodmFsMSwgdmFsMiwgTlVMTCk7Cit9CisKIC8qCiAgKiBSb3V0aW5lcyBmb3Ig TmFOLWF3YXJlIGNvbXBhcmlzb25zCiAgKgotLSAKMi4zNC4xCgo= --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0007-error-safe-for-casting-circle-to-polygon.patch" Content-Disposition: attachment; filename="v24-0007-error-safe-for-casting-circle-to-polygon.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxck6 RnJvbSA2MTM3ZTllOWJmMzA0OWY4MDhlNDYzN2FjZWM0OGZjZTI4N2IzODMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTc6MTk6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCA3LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgY2lyY2xlIHRvIHBvbHlnb24KClByZXZpb3Vz bHk6CkZ1bmN0aW9uIHRoYXQgY2FzdGluZyB0eXBlIGNpcmNsZSB0byB0eXBlIHBvbHlnb24gY2Fu bm90IGJlIGVycm9yIHNhZmUsIGJlY2F1c2UKaXQncyBhIFNRTCBsYW5ndWFnZSBmdW5jdGlvbi4K Ck5vdyByZWZhY3RvciBpdCBhcyBhIEMvaW50ZXJuYWwgZnVuY3Rpb24sIHNvIGl0IGNhbiBlcnJv ci1zYWZlLgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBDb3Jl eSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9wNjU2 aV80aFFAbWFpbC5nbWFpbC5jb20KQ29tbWl0ZmVzdDogaHR0cHM6Ly9jb21taXRmZXN0LnBvc3Rn cmVzcWwub3JnL3BhdGNoLzU5NDEKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5j dGlvbnMuc3FsIHwgIDYgLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5jICAgICAg ICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgIHwgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9u cygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fZnVuY3Rpb25zLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9u cy5zcWwKaW5kZXggMWM1YjZkNmRmMDUuLmMzYzBhNmU4NGVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKQEAgLTk5LDEyICs5OSw2IEBAIENSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHBhdGhfY29udGFpbl9wdChwYXRoLCBwb2ludCkKICBJTU1VVEFCTEUgUEFS QUxMRUwgU0FGRSBTVFJJQ1QgQ09TVCAxCiBSRVRVUk4gb25fcHBhdGgoJDIsICQxKTsKIAotQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcG9seWdvbihjaXJjbGUpCi0gUkVUVVJOUyBwb2x5Z29u Ci0gTEFOR1VBR0Ugc3FsCi0gSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkUgU1RSSUNUIENPU1QgMQot UkVUVVJOIHBvbHlnb24oMTIsICQxKTsKLQogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWdl KHRpbWVzdGFtcHR6KQogIFJFVFVSTlMgaW50ZXJ2YWwKICBMQU5HVUFHRSBzcWwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCmluZGV4IGE1OWYxY2FiYzQ0Li40ODQ2ZmUxMGY5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCkBAIC0xNDcsNiArMTQ3LDcgQEAgc3RhdGljIGJvb2wgcGF0aF9kZWNvZGUo Y2hhciAqc3RyLCBib29sIG9wZW50eXBlLCBpbnQgbnB0cywgUG9pbnQgKnAsCiAJCQkJCQljb25z dCBjaGFyICp0eXBlX25hbWUsIGNvbnN0IGNoYXIgKm9yaWdfc3RyaW5nLAogCQkJCQkJTm9kZSAq ZXNjb250ZXh0KTsKIHN0YXRpYyBjaGFyICpwYXRoX2VuY29kZShlbnVtIHBhdGhfZGVsaW0gcGF0 aF9kZWxpbSwgaW50IG5wdHMsIFBvaW50ICpwdCk7CitzdGF0aWMgRGF0dW0gY2lyY2xlX3BvbHlf aW50ZXJuYWwoaW50MzIgbnB0cywgQ0lSQ0xFICpjaXJjbGUsIEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvKTsKIAogCiAvKgpAQCAtNTMxOSwyNiArNTMyMCwzMyBAQCBmYWlsOgogCVBHX1JFVFVSTl9O VUxMKCk7CiB9CiAKLQogRGF0dW0KIGNpcmNsZV9wb2x5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJ aW50MzIJCW5wdHMgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQ R19HRVRBUkdfQ0lSQ0xFX1AoMSk7CisKKwlQR19SRVRVUk5fREFUVU0oY2lyY2xlX3BvbHlfaW50 ZXJuYWwobnB0cywgY2lyY2xlLCBmY2luZm8pKTsKK30KKworRGF0dW0KK2NpcmNsZV9wb2x5X2lu dGVybmFsKGludDMyIG5wdHMsIENJUkNMRSAqY2lyY2xlLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bykKK3sKIAlQT0xZR09OICAgICpwb2x5OwogCWludAkJCWJhc2Vfc2l6ZSwKIAkJCQlzaXplOwog CWludAkJCWk7CiAJZmxvYXQ4CQlhbmdsZTsKIAlmbG9hdDgJCWFuZ2xlc3RlcDsKKwlmbG9hdDgJ CXRlbXA7CiAKIAlpZiAoRlB6ZXJvKGNpcmNsZS0+cmFkaXVzKSkKLQkJZXJlcG9ydChFUlJPUiwK KwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiY2Fubm90IGNvbnZlcnQg Y2lyY2xlIHdpdGggcmFkaXVzIHplcm8gdG8gcG9seWdvbiIpKSk7CiAKIAlpZiAobnB0cyA8IDIp Ci0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAs CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVy cm1zZygibXVzdCByZXF1ZXN0IGF0IGxlYXN0IDIgcG9pbnRzIikpKTsKIApAQCAtNTM0Nyw3ICs1 MzU1LDcgQEAgY2lyY2xlX3BvbHkoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIENoZWNrIGZvciBp bnRlZ2VyIG92ZXJmbG93ICovCiAJaWYgKGJhc2Vfc2l6ZSAvIG5wdHMgIT0gc2l6ZW9mKHBvbHkt PnBbMF0pIHx8IHNpemUgPD0gYmFzZV9zaXplKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJu KGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JB TV9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygidG9vIG1hbnkgcG9pbnRzIHJlcXVlc3Rl ZCIpKSk7CiAKQEAgLTUzNTksMTcgKzUzNjcsNDMgQEAgY2lyY2xlX3BvbHkoUEdfRlVOQ1RJT05f QVJHUykKIAogCWZvciAoaSA9IDA7IGkgPCBucHRzOyBpKyspCiAJewotCQlhbmdsZSA9IGZsb2F0 OF9tdWwoYW5nbGVzdGVwLCBpKTsKKwkJYW5nbGUgPSBmbG9hdDhfbXVsX3NhZmUoYW5nbGVzdGVw LCBpLCBmY2luZm8tPmNvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8t PmNvbnRleHQpKQorCQkJZ290byBmYWlsOwogCi0JCXBvbHktPnBbaV0ueCA9IGZsb2F0OF9taShj aXJjbGUtPmNlbnRlci54LAotCQkJCQkJCQkgZmxvYXQ4X211bChjaXJjbGUtPnJhZGl1cywgY29z KGFuZ2xlKSkpOwotCQlwb2x5LT5wW2ldLnkgPSBmbG9hdDhfcGwoY2lyY2xlLT5jZW50ZXIueSwK LQkJCQkJCQkJIGZsb2F0OF9tdWwoY2lyY2xlLT5yYWRpdXMsIHNpbihhbmdsZSkpKTsKKwkJdGVt cCA9IGZsb2F0OF9tdWxfc2FmZShjaXJjbGUtPnJhZGl1cywgY29zKGFuZ2xlKSwgZmNpbmZvLT5j b250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJ CWdvdG8gZmFpbDsKKworCQlwb2x5LT5wW2ldLnggPSBmbG9hdDhfbWlfc2FmZShjaXJjbGUtPmNl bnRlci54LCB0ZW1wLCBmY2luZm8tPmNvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQkJZ290byBmYWlsOworCisJCXRlbXAgPSBmbG9hdDhfbXVs X3NhZmUoY2lyY2xlLT5yYWRpdXMsIHNpbihhbmdsZSksIGZjaW5mby0+Y29udGV4dCk7CisJCWlm IChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCQlnb3RvIGZhaWw7CisK KwkJcG9seS0+cFtpXS55ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueSwgdGVtcCwg ZmNpbmZvLT5jb250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250 ZXh0KSkKKwkJCWdvdG8gZmFpbDsKIAl9CiAKIAltYWtlX2JvdW5kX2JveChwb2x5KTsKIAogCVBH X1JFVFVSTl9QT0xZR09OX1AocG9seSk7CisKK2ZhaWw6CisJUEdfUkVUVVJOX05VTEwoKTsKK30K KworLyogY29udmVydCBjaXJjbGUgdG8gMTItdmVydGV4IHBvbHlnb24gKi8KK0RhdHVtCitjaXJj bGVfdG9fcG9seShQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQlucHRzID0gMTI7CisJQ0lS Q0xFCSAgICpjaXJjbGUgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMCk7CisKKwlQR19SRVRVUk5fREFU VU0oY2lyY2xlX3BvbHlfaW50ZXJuYWwobnB0cywgY2lyY2xlLCBmY2luZm8pKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDAxMThlOTcwZGRhLi4zNTc5Y2VjNTc0NCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zMzkwLDggKzMzOTAsOCBAQAogICBwcm9uYW1lID0+ ICdjZW50ZXInLCBwcm9yZXR0eXBlID0+ICdwb2ludCcsIHByb2FyZ3R5cGVzID0+ICdjaXJjbGUn LAogICBwcm9zcmMgPT4gJ2NpcmNsZV9jZW50ZXInIH0sCiB7IG9pZCA9PiAnMTU0NCcsIGRlc2Ny ID0+ICdjb252ZXJ0IGNpcmNsZSB0byAxMi12ZXJ0ZXggcG9seWdvbicsCi0gIHByb25hbWUgPT4g J3BvbHlnb24nLCBwcm9sYW5nID0+ICdzcWwnLCBwcm9yZXR0eXBlID0+ICdwb2x5Z29uJywKLSAg cHJvYXJndHlwZXMgPT4gJ2NpcmNsZScsIHByb3NyYyA9PiAnc2VlIHN5c3RlbV9mdW5jdGlvbnMu c3FsJyB9LAorICBwcm9uYW1lID0+ICdwb2x5Z29uJywgcHJvcmV0dHlwZSA9PiAncG9seWdvbics CisgIHByb2FyZ3R5cGVzID0+ICdjaXJjbGUnLCBwcm9zcmMgPT4gJ2NpcmNsZV90b19wb2x5JyB9 LAogeyBvaWQgPT4gJzE1NDUnLCBkZXNjciA9PiAnbnVtYmVyIG9mIHBvaW50cycsCiAgIHByb25h bWUgPT4gJ25wb2ludHMnLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ3Bh dGgnLAogICBwcm9zcmMgPT4gJ3BhdGhfbnBvaW50cycgfSwKLS0gCjIuMzQuMQoK --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0003-extended-function-for-float-overflow-underflow-zero_divide.patch" Content-Disposition: attachment; filename="v24-0003-extended-function-for-float-overflow-underflow-zero_divide.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxcn7 RnJvbSBjNmY0ZTMyNzI3YTc0MmEyMWVhZWUzZTU0NmM5MmY5MmZlNWJkYTU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MTk6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCAzLzldIGV4dGVuZGVkIGZ1bmN0aW9uIGZvciBmbG9hdAogb3ZlcmZsb3cvdW5kZXJmbG93L3pl cm9fZGl2aWRlCgpmbG9hdF9vdmVyZmxvd19lcnJvcl9leHQsIGZsb2F0X3VuZGVyZmxvd19lcnJv cl9leHQsCmZsb2F0X3plcm9fZGl2aWRlX2Vycm9yX2V4dC4KCkF1dGhvcjogamlhbiBoZSA8amlh bi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWls LmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcv cGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jIHwgMjQgKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oICAgICB8ICAzICsr KwogMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYwpp bmRleCBhMDZmZWY0MjkwMS4uN2IxYmRmMWU1NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9mbG9hdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCkBAIC0x MjMsNiArMTIzLDMwIEBAIGZsb2F0X3plcm9fZGl2aWRlX2Vycm9yKHZvaWQpCiAJCQkgZXJybXNn KCJkaXZpc2lvbiBieSB6ZXJvIikpKTsKIH0KIAorZmxvYXQ4CitmbG9hdF9vdmVyZmxvd19lcnJv cl9leHQoc3RydWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwllcmV0dXJuKGVzY29udGV4dCwgMC4w LAorCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCWVy cm1zZygidmFsdWUgb3V0IG9mIHJhbmdlOiBvdmVyZmxvdyIpKTsKK30KKworZmxvYXQ4CitmbG9h dF91bmRlcmZsb3dfZXJyb3JfZXh0KHN0cnVjdCBOb2RlICplc2NvbnRleHQpCit7CisJZXJldHVy bihlc2NvbnRleHQsIDAuMCwKKwkJCWVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9P Rl9SQU5HRSksCisJCQllcnJtc2coInZhbHVlIG91dCBvZiByYW5nZTogdW5kZXJmbG93IikpOwor fQorCitmbG9hdDgKK2Zsb2F0X3plcm9fZGl2aWRlX2Vycm9yX2V4dChzdHJ1Y3QgTm9kZSAqZXNj b250ZXh0KQoreworCWVyZXR1cm4oZXNjb250ZXh0LCAwLjAsCisJCQkoZXJyY29kZShFUlJDT0RF X0RJVklTSU9OX0JZX1pFUk8pLAorCQkJIGVycm1zZygiZGl2aXNpb24gYnkgemVybyIpKSk7Cit9 CisKIAogLyoKICAqIFJldHVybnMgLTEgaWYgJ3ZhbCcgcmVwcmVzZW50cyBuZWdhdGl2ZSBpbmZp bml0eSwgMSBpZiAndmFsJwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmgKaW5kZXggYjM0MDY3OGNhOTIuLjU4NDBiYmY3ZGM4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2Zsb2F0LmgKQEAgLTMzLDYgKzMzLDkgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBl eHRyYV9mbG9hdF9kaWdpdHM7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBmbG9hdF9vdmVyZmxv d19lcnJvcih2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIGZsb2F0X3VuZGVyZmxvd19l cnJvcih2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIGZsb2F0X3plcm9fZGl2aWRlX2Vy cm9yKHZvaWQpOworZXh0ZXJuIGZsb2F0OCBmbG9hdF9vdmVyZmxvd19lcnJvcl9leHQoc3RydWN0 IE5vZGUgKmVzY29udGV4dCk7CitleHRlcm4gZmxvYXQ4IGZsb2F0X3VuZGVyZmxvd19lcnJvcl9l eHQoc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CitleHRlcm4gZmxvYXQ4IGZsb2F0X3plcm9fZGl2 aWRlX2Vycm9yX2V4dChzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBpbnQJaXNfaW5m aW5pdGUoZmxvYXQ4IHZhbCk7CiBleHRlcm4gZmxvYXQ4IGZsb2F0OGluX2ludGVybmFsKGNoYXIg Km51bSwgY2hhciAqKmVuZHB0cl9wLAogCQkJCQkJCQljb25zdCBjaGFyICp0eXBlX25hbWUsIGNv bnN0IGNoYXIgKm9yaWdfc3RyaW5nLAotLSAKMi4zNC4xCgo= --0000000000002d5ce0064dd90c3e Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v24-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn62cxcq8 RnJvbSA4MDhkYzBkYmFkODI4ODk3ZTE1YzdlNzg0ZjliMzg1YjZiOGVlMzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMDk6NTU6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCAxLzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA2NiArKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggfCAgNiArKysKIHNyYy9pbmNsdWRlL3V0aWxz L3ZhcmxlbmEuaCAgICAgfCAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyks IDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IDU2Yjg3ZDg3OGU4 Li4wNjEwODlmMDRjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC00NDIsNiArNDQyLDE2 IEBAIE9pZAogUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlv biwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkgdWludDMyIGZsYWdzLAogCQkJCQkJIFJhbmdl VmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnKQoreworCXJl dHVybiBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKHJlbGF0aW9uLCBsb2NrbW9kZSwgZmxh Z3MsCisJCQkJCQkJCQkJY2FsbGJhY2ssIGNhbGxiYWNrX2FyZywKKwkJCQkJCQkJCQlOVUxMKTsK K30KKworT2lkCitSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKGNvbnN0IFJhbmdlVmFyICpy ZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkgUmFuZ2VW YXJHZXRSZWxpZENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19hcmcsCisJCQkJCQkJ IE5vZGUgKmVzY29udGV4dCkKIHsKIAl1aW50NjQJCWludmFsX2NvdW50OwogCU9pZAkJCXJlbElk OwpAQCAtNDU4LDcgKzQ2OCw3IEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCWlmIChyZWxhdGlvbi0+Y2F0YWxv Z25hbWUpCiAJewogCQlpZiAoc3RyY21wKHJlbGF0aW9uLT5jYXRhbG9nbmFtZSwgZ2V0X2RhdGFi YXNlX25hbWUoTXlEYXRhYmFzZUlkKSkgIT0gMCkKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcmV0 dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2Vz IGFyZSBub3QgaW1wbGVtZW50ZWQ6IFwiJXMuJXMuJXNcIiIsCiAJCQkJCQkJcmVsYXRpb24tPmNh dGFsb2duYW1lLCByZWxhdGlvbi0+c2NoZW1hbmFtZSwKQEAgLTUxNSw3ICs1MjUsNyBAQCBSYW5n ZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBs b2NrbW9kZSwKIAkJCQkJICogcmV0dXJuIEludmFsaWRPaWQuCiAJCQkJCSAqLwogCQkJCQlpZiAo bmFtZXNwYWNlSWQgIT0gbXlUZW1wTmFtZXNwYWNlKQotCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCWVyZXR1cm4oZXNjb250ZXh0LCBJbnZhbGlkT2lkLAogCQkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEFCTEVfREVGSU5JVElPTiksCiAJCQkJCQkJCSBlcnJtc2coInRlbXBvcmFy eSB0YWJsZXMgY2Fubm90IHNwZWNpZnkgYSBzY2hlbWEgbmFtZSIpKSk7CiAJCQkJfQpAQCAtNTk1 LDE2ICs2MDUsMjIgQEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpy ZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCXsKIAkJCWludAkJCWVsZXZlbCA9IChmbGFn cyAmIFJWUl9TS0lQX0xPQ0tFRCkgPyBERUJVRzEgOiBFUlJPUjsKIAotCQkJaWYgKHJlbGF0aW9u LT5zY2hlbWFuYW1lKQorCQkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJCWVyZXBvcnQoZWxl dmVsLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAotCQkJCQkJ IGVycm1zZygiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXMuJXNcIiIsCi0J CQkJCQkJCXJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+cmVsbmFtZSkpKTsKKwkJCQkJ CWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUgPworCQkJCQkJZXJybXNnKCJjb3VsZCBub3Qgb2J0YWluIGxvY2sgb24gcmVsYXRp b24gXCIlcy4lc1wiIiwKKwkJCQkJCQkgICByZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24t PnJlbG5hbWUpIDoKKwkJCQkJCWVycm1zZygiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsYXRpb24tPnJlbG5hbWUpKTsKIAkJCWVsc2UKLQkJ CQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxB QkxFKSwKLQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRhaW4gbG9jayBvbiByZWxhdGlvbiBc IiVzXCIiLAotCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKKwkJCQllcmV0dXJuKGVzY29u dGV4dCwgSW52YWxpZE9pZCwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFC TEUpLAorCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUgPworCQkJCQkJZXJybXNnKCJjb3VsZCBu b3Qgb2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkgICByZWxhdGlv bi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCWVycm1zZygiY291bGQg bm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsYXRpb24t PnJlbG5hbWUpKTsKIAogCQkJcmV0dXJuIEludmFsaWRPaWQ7CiAJCX0KQEAgLTYyOCwxNiArNjQ0 LDIyIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24s IExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJZWxldmVsID0gbWlzc2luZ19vayA/IERF QlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29u dGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX1RBQkxFKSwKLQkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMg bm90IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5h bWUpKSk7CisJCQkJCWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQly ZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRv ZXMgbm90IGV4aXN0IiwKKwkJCQkJCSAgIHJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+ cmVsbmFtZSkgOgorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQkgICByZWxhdGlvbi0+cmVsbmFtZSkpOwogCQllbHNlCi0JCQllcmVwb3J0KGVsZXZl bCwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAotCQkJCQkgZXJybXNn KCJyZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAotCQkJCQkJCXJlbGF0aW9uLT5yZWxu YW1lKSkpOworCQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSA/ CisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJ CSAgIHJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+cmVsbmFtZSkgOgorCQkJCQllcnJt c2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkgICByZWxhdGlvbi0+ cmVsbmFtZSkpOwogCX0KIAlyZXR1cm4gcmVsSWQ7CiB9CkBAIC0zNjI0LDYgKzM2NDYsMTIgQEAg Z2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwgYm9vbCBtaXNzaW5nX29rKQog ICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3QoY29uc3QgTGlzdCAqbmFt ZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdFNhZmUobmFtZXMsIE5VTEwp OworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKGNvbnN0IExp c3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VWYXIgICAqcmVsID0gbWFrZVJh bmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICszNjcwLDcgQEAgbWFrZVJhbmdl VmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJcmVsLT5yZWxuYW1lID0gc3Ry VmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcmVwb3J0KEVS Uk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIgcmVsYXRpb24gbmFtZSAodG9v IG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMp KSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZWUzNGQxZDg1ZjguLjYwNGUxOWExY2I5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJvYy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIgKzE5MDEsMTkgQEAgdGV4dF9y ZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJlbG5hbWUgPSBQR19HRVRBUkdf VEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIgICAqcnY7CisJTGlzdAkgICAq bmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdCh0ZXh0VG9RdWFsaWZp ZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0VG9RdWFsaWZpZWROYW1lTGlz dFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJcnYgPSBtYWtlUmFu Z2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChT T0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7 CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Npb25zIG9uIHRoaXMgcmVsYXRp b247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VWYXJHZXRSZWxpZChydiwgTm9M b2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKHJ2 LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBmY2luZm8tPmNvbnRleHQpOwog CVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXgg N2IxZWU2MWJkZTYuLjU2ZGEzZDdiNDQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTI3 MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKICAqLwogTGlzdCAq CiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKQoreworCXJldHVybiB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7Cit9CisKK0xpc3QgKgordGV4 dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWwsIE5vZGUgKmVzY29udGV4dCkK IHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKQEAgLTI3Mjgs MTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3QodGV4dCAqdGV4dHZhbCkKIAly YXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJaWYgKCFTcGxpdElkZW50aWZp ZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQllcmVwb3J0KEVSUk9SLAorCQll cmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9OQU1F KSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4IikpKTsKIAogCWlmIChuYW1lbGlz dCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZXNjb250ZXh0LCBOSUwsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJCSBlcnJtc2coImludmFsaWQg bmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVz cGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAppbmRleCA5NDUzYTNlNDkz Mi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNl LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtMTAzLDYgKzEwMywx MSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKIAkJ CQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssCiAJCQkJCQkJCQkgdm9p ZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2Fm ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJCQkJCQkJCU5vZGUgKmVzY29u dGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2UoY29uc3QgUmFu Z2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0 aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSBMT0NLTU9ERSBs b2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lkCUxvb2t1cENyZWF0aW9uTmFt ZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTZXROYW1lc3Bh Y2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4gT2lkCVF1YWxpZmllZE5hbWVH ZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywgY2hhciAqKm9iam5hbWVfcCk7 CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1lTGlzdChjb25zdCBMaXN0ICpu YW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1lTGlzdFNhZmUoY29u c3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gY2hhciAqTmFtZUxpc3RU b1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hhciAqTmFtZUxpc3RUb1F1b3Rl ZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaAppbmRleCA0YjMyNTc0 YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAgLTI3LDYgKzI3LDcgQEAgZXh0 ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChjb25zdCBjaGFyICpzb3VyY2Us IGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQgZGVsX2MsIGludCBzdWJfYywK IAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsKIGV4dGVybiBMaXN0ICp0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4dGVybiBMaXN0ICp0ZXh0VG9R dWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9kZSAqZXNjb250ZXh0KTsKIGV4 dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpyYXdzdHJpbmcsIGNoYXIgc2Vw YXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBleHRlcm4gYm9vbCBTcGxpdERp cmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBzZXBhcmF0b3IsCi0tIAoyLjM0 LjEKCg== --0000000000002d5ce0064dd90c3e--