Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ofc1s-0001fn-Qd for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Oct 2022 07:07:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ofc1r-00032P-MP for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Oct 2022 07:07:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ofc1q-00030o-C2 for pgsql-hackers@lists.postgresql.org; Tue, 04 Oct 2022 07:07:47 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ofc1m-0003KL-2J for pgsql-hackers@postgresql.org; Tue, 04 Oct 2022 07:07:45 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 02D29320030E for ; Tue, 4 Oct 2022 03:07:38 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Tue, 04 Oct 2022 03:07:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1664867258; x= 1664953658; bh=/2UoQVxSipCxQtdmlN6488YWtRYCTR4KpzLLQUX9WD8=; b=y rV7d6qYSkOAYtmtZqXtsbV3lT5cC1Nd5na3eOlyAxi5OB3f6gT8Sdg2dHYn8lF65 p/yogvxkRltSpNmbjGi5W/V0mwturOBCcyKtoAB+dC0Nltil8wZvTR5bcBL635EI ILAl7xFFOjUsKy3fAWxaK76Qw+GsBE53BpZ0oJAqyU1qlcG9JkV9D5bD09MB1sks OXBDKeGMct706BJAdfG7bxNHWRjGuoTqQYOeWcV/POvVRibyf3khFmSihTmOZQ/Y VH9D+cMNnBOHVP9WqFQC6Pb+l4cC0lW/PG6UFyVP1B8eAApshGCzAxCM+kZYyV81 cL4p+Eh/5F3sayTBw3I8A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeeitddguddujecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeetveeuvdeikeeigefhveffhffhvdejveelleefieekieekvdffgeetkedutdef leenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvg htvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 4 Oct 2022 03:07:37 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------OXgMRUhO60C95PLHuXUvNd1Z" Message-ID: <4beb42b5-216b-bce8-d452-d924d5794c63@enterprisedb.com> Date: Tue, 4 Oct 2022 09:07:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Content-Language: en-US From: Peter Eisentraut Subject: get rid of Abs() To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------OXgMRUhO60C95PLHuXUvNd1Z Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I was wondering why we have a definition of Abs() in c.h when there are more standard functions such as abs() and fabs() in widespread use. I think this one is left over from pre-ANSI-C days. The attached patches replace all uses of Abs() with more standard functions. The first patch installs uses of abs() and fabs(). These are already in use in the tree and should be straightforward. The next two patches install uses of llabs() and fabsf(), which are not in use yet. But they are in C99. The last patch removes the definition of Abs(). Fun fact: The current definition #define Abs(x) ((x) >= 0 ? (x) : -(x)) is slightly wrong for floating-point values. Abs(-0.0) returns -0.0, but fabs(-0.0) returns +0.0. --------------OXgMRUhO60C95PLHuXUvNd1Z Content-Type: text/plain; charset=UTF-8; name="0001-Remove-unnecessary-uses-of-Abs.patch" Content-Disposition: attachment; filename="0001-Remove-unnecessary-uses-of-Abs.patch" Content-Transfer-Encoding: base64 RnJvbSA1OTU2NjQ3NjVjNTNiMGZmZTA5NThiYmMyNzdiZmNjZjEwZWEwNmUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA0IE9jdCAyMDIyIDA4OjE1OjEzICswMjAwClN1YmplY3Q6 IFtQQVRDSCAxLzRdIFJlbW92ZSB1bm5lY2Vzc2FyeSB1c2VzIG9mIEFicygpCgpVc2UgYWJz KCkgb3IgZmFicygpIGluc3RlYWQuCi0tLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Rh dGUuYyAgICAgICAgICAgfCAgNCArKy0tCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxv YXQ4LmMgICAgICAgICB8ICA0ICsrLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQy LmMgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMg ICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5j ICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMgICAgICAg ICAgIHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jICAgICAgICAgICAg IHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uaCAgICAgIHwg IDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYyAgICAgIHwgIDIg Ky0KIGNvbnRyaWIvY3ViZS9jdWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGNvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMgICAgICAgICAgICAgIHwgIDMgKystCiBj b250cmliL2ludGFycmF5L19pbnRiaWdfZ2lzdC5jICAgICAgICAgICB8ICA0ICsrKy0KIGNv bnRyaWIvbHRyZWUvX2x0cmVlX2dpc3QuYyAgICAgICAgICAgICAgIHwgIDQgKysrLQogY29u dHJpYi9zZWcvc2VnLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0cHJvYy5jICAgICAgICB8ICA0ICsrLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXJ4LmMgICAgIHwgIDggKysrKy0tLS0KIHNy Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgIHwgIDQgKystLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMgICAgICAgICAgfCAgOCArKysrLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyAgICAgICAgICAgfCAyMCArKysrKysr KysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5j ICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICAgICB8 ICA0ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpc3RpZHguYyAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3JhbmsuYyAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9pbnRlcmZhY2VzL2VjcGcvcGd0eXBlc2xpYi9pbnRlcnZhbC5jIHwgIDQgKystLQog MjYgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMKaW5kZXggNDU1YTI2NWE0OTc1Li42OGE0MTA3ZGJm MDggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwpAQCAtOTUsNyArOTUsNyBAQCBnZGJf ZGF0ZV9kaXN0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGlu Zm8pCiAJCQkJCQkJCQkJICAgRGF0ZUFEVEdldERhdHVtKCooKGNvbnN0IERhdGVBRFQgKikg YSkpLAogCQkJCQkJCQkJCSAgIERhdGVBRFRHZXREYXR1bSgqKChjb25zdCBEYXRlQURUICop IGIpKSk7CiAKLQlyZXR1cm4gKGZsb2F0OCkgQWJzKERhdHVtR2V0SW50MzIoZGlmZikpOwor CXJldHVybiAoZmxvYXQ4KSBhYnMoRGF0dW1HZXRJbnQzMihkaWZmKSk7CiB9CiAKIApAQCAt MTIzLDcgKzEyMyw3IEBAIGRhdGVfZGlzdChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJ CSAgIFBHX0dFVEFSR19EQVRVTSgwKSwKIAkJCQkJCQkJCQkgICBQR19HRVRBUkdfREFUVU0o MSkpOwogCi0JUEdfUkVUVVJOX0lOVDMyKEFicyhEYXR1bUdldEludDMyKGRpZmYpKSk7CisJ UEdfUkVUVVJOX0lOVDMyKGFicyhEYXR1bUdldEludDMyKGRpZmYpKSk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jCmluZGV4IGI5NWEwOGUyMjhiYi4uMDgxYTcxOWIw MDYxIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMKKysr IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jCkBAIC03OSw3ICs3OSw3IEBA IGdidF9mbG9hdDhfZGlzdChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5m byAqZmxpbmZvKQogCXIgPSBhcmcxIC0gYXJnMjsKIAlpZiAodW5saWtlbHkoaXNpbmYocikp ICYmICFpc2luZihhcmcxKSAmJiAhaXNpbmYoYXJnMikpCiAJCWZsb2F0X292ZXJmbG93X2Vy cm9yKCk7Ci0JcmV0dXJuIEFicyhyKTsKKwlyZXR1cm4gZmFicyhyKTsKIH0KIAogCkBAIC0x MTAsNyArMTEwLDcgQEAgZmxvYXQ4X2Rpc3QoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAodW5s aWtlbHkoaXNpbmYocikpICYmICFpc2luZihhKSAmJiAhaXNpbmYoYikpCiAJCWZsb2F0X292 ZXJmbG93X2Vycm9yKCk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KEFicyhyKSk7CisJUEdfUkVU VVJOX0ZMT0FUOChmYWJzKHIpKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfaW50Mi5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwppbmRl eCBhOTFiOTVmZjM5ODUuLmZkYmYxNTY1ODZjOSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDIuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 Mi5jCkBAIC0xMDUsNyArMTA1LDcgQEAgaW50Ml9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJ IGVycm1zZygic21hbGxpbnQgb3V0IG9mIHJhbmdlIikpKTsKIAotCXJhID0gQWJzKHIpOwor CXJhID0gYWJzKHIpOwogCiAJUEdfUkVUVVJOX0lOVDE2KHJhKTsKIH0KZGlmZiAtLWdpdCBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfaW50NC5jCmluZGV4IDdlYTk4YzQ3OGM3My4uODkxNWZiNWQwODc3IDEwMDY0NAot LS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9pbnQ0LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCBpbnQ0X2Rpc3QoUEdf RlVOQ1RJT05fQVJHUykKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VU X09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJpbnRlZ2VyIG91dCBvZiByYW5nZSIpKSk7CiAK LQlyYSA9IEFicyhyKTsKKwlyYSA9IGFicyhyKTsKIAogCVBHX1JFVFVSTl9JTlQzMihyYSk7 CiB9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCmluZGV4IGMyYmY4MjA4NmRm NC4uMmM5OGIzMzBjZDdkIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW50ZXJ2YWwuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYwpA QCAtODMsNyArODMsNyBAQCBpbnRyMm51bShjb25zdCBJbnRlcnZhbCAqaSkKIHN0YXRpYyBm bG9hdDgKIGdidF9pbnR2X2Rpc3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1n ckluZm8gKmZsaW5mbykKIHsKLQlyZXR1cm4gKGZsb2F0OCkgQWJzKGludHIybnVtKChjb25z dCBJbnRlcnZhbCAqKSBhKSAtIGludHIybnVtKChjb25zdCBJbnRlcnZhbCAqKSBiKSk7CisJ cmV0dXJuIGZhYnMoaW50cjJudW0oKGNvbnN0IEludGVydmFsICopIGEpIC0gaW50cjJudW0o KGNvbnN0IEludGVydmFsICopIGIpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV90aW1lLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGlt ZS5jCmluZGV4IGZkODc3NGEyZjA4NS4uZDg5NDAxYzBmNTFlIDEwMDY0NAotLS0gYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV90aW1lLmMKQEAgLTExOCw3ICsxMTgsNyBAQCBnYnRfdGltZV9kaXN0KGNvbnN0IHZv aWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiAJaSA9IERhdHVtR2V0 SW50ZXJ2YWxQKERpcmVjdEZ1bmN0aW9uQ2FsbDIodGltZV9taV90aW1lLAogCQkJCQkJCQkJ CQkgIFRpbWVBRFRHZXREYXR1bUZhc3QoKmFhKSwKIAkJCQkJCQkJCQkJICBUaW1lQURUR2V0 RGF0dW1GYXN0KCpiYikpKTsKLQlyZXR1cm4gKGZsb2F0OCkgQWJzKElOVEVSVkFMX1RPX1NF QyhpKSk7CisJcmV0dXJuIGZhYnMoSU5URVJWQUxfVE9fU0VDKGkpKTsKIH0KIAogCmRpZmYg LS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdHMuYyBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV90cy5jCmluZGV4IGE1MTkwMDk0MWU1Yy4uM2Y1YmE5MTg5MWQ4IDEwMDY0 NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdHMuYworKysgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdHMuYwpAQCAtMTIzLDcgKzEyMyw3IEBAIGdidF90c19kaXN0KGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiAJaSA9IERh dHVtR2V0SW50ZXJ2YWxQKERpcmVjdEZ1bmN0aW9uQ2FsbDIodGltZXN0YW1wX21pLAogCQkJ CQkJCQkJCQkgIFRpbWVzdGFtcEdldERhdHVtRmFzdCgqYWEpLAogCQkJCQkJCQkJCQkgIFRp bWVzdGFtcEdldERhdHVtRmFzdCgqYmIpKSk7Ci0JcmV0dXJuIChmbG9hdDgpIEFicyhJTlRF UlZBTF9UT19TRUMoaSkpOworCXJldHVybiBmYWJzKElOVEVSVkFMX1RPX1NFQyhpKSk7CiB9 CiAKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5o IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oCmluZGV4IDQxNWE3YTY0 NTlhNy4uMTFlODkyMzExZWViIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfdXRpbHNfbnVtLmgKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251 bS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0CiAJIChpdnApLT5kYXkgKiAo MjQuMCAqIFNFQ1NfUEVSX0hPVVIpICsgXAogCSAoaXZwKS0+bW9udGggKiAoMzAuMCAqIFNF Q1NfUEVSX0RBWSkpCiAKLSNkZWZpbmUgR0VUX0ZMT0FUX0RJU1RBTkNFKHQsIGFyZzEsIGFy ZzIpCUFicyggKChmbG9hdDgpICooKGNvbnN0IHQgKikgKGFyZzEpKSkgLSAoKGZsb2F0OCkg KigoY29uc3QgdCAqKSAoYXJnMikpKSApCisjZGVmaW5lIEdFVF9GTE9BVF9ESVNUQU5DRSh0 LCBhcmcxLCBhcmcyKQlmYWJzKCAoKGZsb2F0OCkgKigoY29uc3QgdCAqKSAoYXJnMSkpKSAt ICgoZmxvYXQ4KSAqKChjb25zdCB0ICopIChhcmcyKSkpICkKIAogCiBleHRlcm4gSW50ZXJ2 YWwgKmFic19pbnRlcnZhbChJbnRlcnZhbCAqYSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf dXRpbHNfdmFyLmMKaW5kZXggMjg4NmMwOGI4NWU0Li4zZWY4MmQwZTIwOGUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYworKysgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmMKQEAgLTQyNiw3ICs0MjYsNyBAQCBnYnRf dmFyX3BlbmFsdHkoZmxvYXQgKnJlcywgY29uc3QgR0lTVEVOVFJZICpvLCBjb25zdCBHSVNU RU5UUlkgKm4sCiAJCQl0bXBbMV0gPSAodW5zaWduZWQgY2hhcikgKCgoVkFSU0laRSh1ay5s b3dlcikgLSBWQVJIRFJTWikgPD0gdWwpID8gMCA6IChWQVJEQVRBKHVrLmxvd2VyKVt1bF0p KTsKIAkJCXRtcFsyXSA9ICh1bnNpZ25lZCBjaGFyKSAoKChWQVJTSVpFKG9rLnVwcGVyKSAt IFZBUkhEUlNaKSA8PSB1bCkgPyAwIDogKFZBUkRBVEEob2sudXBwZXIpW3VsXSkpOwogCQkJ dG1wWzNdID0gKHVuc2lnbmVkIGNoYXIpICgoKFZBUlNJWkUodWsudXBwZXIpIC0gVkFSSERS U1opIDw9IHVsKSA/IDAgOiAoVkFSREFUQSh1ay51cHBlcilbdWxdKSk7Ci0JCQlkcmVzID0g QWJzKHRtcFswXSAtIHRtcFsxXSkgKyBBYnModG1wWzNdIC0gdG1wWzJdKTsKKwkJCWRyZXMg PSBhYnModG1wWzBdIC0gdG1wWzFdKSArIGFicyh0bXBbM10gLSB0bXBbMl0pOwogCQkJZHJl cyAvPSAyNTYuMDsKIAkJfQogCmRpZmYgLS1naXQgYS9jb250cmliL2N1YmUvY3ViZS5jIGIv Y29udHJpYi9jdWJlL2N1YmUuYwppbmRleCAwMWM2YTljNTU2M2UuLjRmMzJjNWRjMWQ1OSAx MDA2NDQKLS0tIGEvY29udHJpYi9jdWJlL2N1YmUuYworKysgYi9jb250cmliL2N1YmUvY3Vi ZS5jCkBAIC05MjUsNyArOTI1LDcgQEAgcnRfY3ViZV9zaXplKE5EQk9YICphLCBkb3VibGUg KnNpemUpCiAJewogCQlyZXN1bHQgPSAxLjA7CiAJCWZvciAoaSA9IDA7IGkgPCBESU0oYSk7 IGkrKykKLQkJCXJlc3VsdCAqPSBBYnMoVVJfQ09PUkQoYSwgaSkgLSBMTF9DT09SRChhLCBp KSk7CisJCQlyZXN1bHQgKj0gZmFicyhVUl9DT09SRChhLCBpKSAtIExMX0NPT1JEKGEsIGkp KTsKIAl9CiAJKnNpemUgPSByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9jb250cmliL2ludGFy cmF5L19pbnRfZ2lzdC5jIGIvY29udHJpYi9pbnRhcnJheS9faW50X2dpc3QuYwppbmRleCA2 Mzc4YWE3NGIwNzkuLmY2NzY5OWJmY2NjNSAxMDA2NDQKLS0tIGEvY29udHJpYi9pbnRhcnJh eS9faW50X2dpc3QuYworKysgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2lzdC5jCkBAIC00 LDYgKzQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlIDxsaW1pdHMu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CiAKICNpbmNsdWRlICJfaW50LmgiCiAjaW5jbHVkZSAi YWNjZXNzL2dpc3QuaCIKQEAgLTUzOSw3ICs1NDAsNyBAQCBnX2ludF9waWNrc3BsaXQoUEdf RlVOQ1RJT05fQVJHUykKIAkJdW5pb25fZCA9IGlubmVyX2ludF91bmlvbihkYXR1bV9yLCBk YXR1bV9hbHBoYSk7CiAJCXJ0X19pbnRfc2l6ZSh1bmlvbl9kLCAmc2l6ZV9iZXRhKTsKIAkJ cGZyZWUodW5pb25fZCk7Ci0JCWNvc3R2ZWN0b3JbaSAtIDFdLmNvc3QgPSBBYnMoKHNpemVf YWxwaGEgLSBzaXplX2wpIC0gKHNpemVfYmV0YSAtIHNpemVfcikpOworCQljb3N0dmVjdG9y W2kgLSAxXS5jb3N0ID0gZmFicygoc2l6ZV9hbHBoYSAtIHNpemVfbCkgLSAoc2l6ZV9iZXRh IC0gc2l6ZV9yKSk7CiAJfQogCXFzb3J0KCh2b2lkICopIGNvc3R2ZWN0b3IsIG1heG9mZiwg c2l6ZW9mKFNQTElUQ09TVCksIGNvbXBhcmVjb3N0KTsKIApkaWZmIC0tZ2l0IGEvY29udHJp Yi9pbnRhcnJheS9faW50YmlnX2dpc3QuYyBiL2NvbnRyaWIvaW50YXJyYXkvX2ludGJpZ19n aXN0LmMKaW5kZXggYzlkOGY5Yjg0ZGRkLi44ODc5NDBjYTM1ODYgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvaW50YXJyYXkvX2ludGJpZ19naXN0LmMKKysrIGIvY29udHJpYi9pbnRhcnJheS9f aW50YmlnX2dpc3QuYwpAQCAtMyw2ICszLDggQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlIDxtYXRoLmg+CisKICNpbmNsdWRlICJfaW50LmgiCiAjaW5jbHVk ZSAiYWNjZXNzL2dpc3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5oIgpAQCAt Mzg5LDcgKzM5MSw3IEBAIGdfaW50YmlnX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQog CQlfaiA9IEdFVEVOVFJZKGVudHJ5dmVjLCBqKTsKIAkJc2l6ZV9hbHBoYSA9IGhlbWRpc3Qo ZGF0dW1fbCwgX2osIHNpZ2xlbik7CiAJCXNpemVfYmV0YSA9IGhlbWRpc3QoZGF0dW1fciwg X2osIHNpZ2xlbik7Ci0JCWNvc3R2ZWN0b3JbaiAtIDFdLmNvc3QgPSBBYnMoc2l6ZV9hbHBo YSAtIHNpemVfYmV0YSk7CisJCWNvc3R2ZWN0b3JbaiAtIDFdLmNvc3QgPSBhYnMoc2l6ZV9h bHBoYSAtIHNpemVfYmV0YSk7CiAJfQogCXFzb3J0KCh2b2lkICopIGNvc3R2ZWN0b3IsIG1h eG9mZiwgc2l6ZW9mKFNQTElUQ09TVCksIGNvbXBhcmVjb3N0KTsKIApkaWZmIC0tZ2l0IGEv Y29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jIGIvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lz dC5jCmluZGV4IDg4ZDQ2MjM2MjE5MS4uMzg1YTEwMjgzYjA0IDEwMDY0NAotLS0gYS9jb250 cmliL2x0cmVlL19sdHJlZV9naXN0LmMKKysrIGIvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lz dC5jCkBAIC03LDYgKzcsOCBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lu Y2x1ZGUgPG1hdGguaD4KKwogI2luY2x1ZGUgImFjY2Vzcy9naXN0LmgiCiAjaW5jbHVkZSAi YWNjZXNzL3JlbG9wdGlvbnMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKQEAg LTMxNSw3ICszMTcsNyBAQCBfbHRyZWVfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CV9qID0gR0VURU5UUlkoZW50cnl2ZWMsIGopOwogCQlzaXplX2FscGhhID0gaGVtZGlzdChk YXR1bV9sLCBfaiwgc2lnbGVuKTsKIAkJc2l6ZV9iZXRhID0gaGVtZGlzdChkYXR1bV9yLCBf aiwgc2lnbGVuKTsKLQkJY29zdHZlY3RvcltqIC0gMV0uY29zdCA9IEFicyhzaXplX2FscGhh IC0gc2l6ZV9iZXRhKTsKKwkJY29zdHZlY3RvcltqIC0gMV0uY29zdCA9IGFicyhzaXplX2Fs cGhhIC0gc2l6ZV9iZXRhKTsKIAl9CiAJcXNvcnQoKHZvaWQgKikgY29zdHZlY3RvciwgbWF4 b2ZmLCBzaXplb2YoU1BMSVRDT1NUKSwgY29tcGFyZWNvc3QpOwogCmRpZmYgLS1naXQgYS9j b250cmliL3NlZy9zZWcuYyBiL2NvbnRyaWIvc2VnL3NlZy5jCmluZGV4IGNiNjc3ZTBhZTUx Yy4uOWI1ODY3NTI2NmFiIDEwMDY0NAotLS0gYS9jb250cmliL3NlZy9zZWcuYworKysgYi9j b250cmliL3NlZy9zZWcuYwpAQCAtOTUyLDcgKzk1Miw3IEBAIHJlc3RvcmUoY2hhciAqcmVz dWx0LCBmbG9hdCB2YWwsIGludCBuKQogCX0KIAllbHNlCiAJewotCQlpZiAoQWJzKGV4cCkg PD0gNCkKKwkJaWYgKGFicyhleHApIDw9IDQpCiAJCXsKIAkJCS8qCiAJCQkgKiByZW1vdmUg dGhlIGRlY2ltYWwgcG9pbnQgZnJvbSB0aGUgbWFudGlzc2EgYW5kIHdyaXRlIHRoZSBkaWdp dHMKQEAgLTEwMzksNyArMTAzOSw3IEBAIHJlc3RvcmUoY2hhciAqcmVzdWx0LCBmbG9hdCB2 YWwsIGludCBuKQogCQkJfQogCQl9CiAKLQkJLyogZG8gbm90aGluZyBmb3IgQWJzKGV4cCkg PiA0OyAlZSBtdXN0IGJlIE9LICovCisJCS8qIGRvIG5vdGhpbmcgZm9yIGFicyhleHApID4g NDsgJWUgbXVzdCBiZSBPSyAqLwogCQkvKiBqdXN0IGdldCByaWQgb2YgemVyb2VzIGFmdGVy IFtlRV0tIGFuZCAremVyb2VzIGFmdGVyIFtFZV0uICovCiAKIAkJLyogLi4uIHRoaXMgaXMg bm90IGRvbmUgeWV0LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdHByb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rwcm9jLmMKaW5kZXgg MjJmMmMxODUzNzA2Li40MDZjNjVkNmVjMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3Rwcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHByb2MuYwpAQCAtNzk3LDggKzc5Nyw4IEBAIGdpc3RfYm94X3BpY2tzcGxpdChQR19GVU5D VElPTl9BUkdTKQogCQlmb3IgKGkgPSAwOyBpIDwgY29tbW9uRW50cmllc0NvdW50OyBpKysp CiAJCXsKIAkJCWJveCA9IERhdHVtR2V0Qm94UChlbnRyeXZlYy0+dmVjdG9yW2NvbW1vbkVu dHJpZXNbaV0uaW5kZXhdLmtleSk7Ci0JCQljb21tb25FbnRyaWVzW2ldLmRlbHRhID0gQWJz KGZsb2F0OF9taShib3hfcGVuYWx0eShsZWZ0Qm94LCBib3gpLAotCQkJCQkJCQkJCQkJICAg Ym94X3BlbmFsdHkocmlnaHRCb3gsIGJveCkpKTsKKwkJCWNvbW1vbkVudHJpZXNbaV0uZGVs dGEgPSBmYWJzKGZsb2F0OF9taShib3hfcGVuYWx0eShsZWZ0Qm94LCBib3gpLAorCQkJCQkJ CQkJCQkJCWJveF9wZW5hbHR5KHJpZ2h0Qm94LCBib3gpKSk7CiAJCX0KIAogCQkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19lcnguYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXJ4LmMKaW5kZXggY2MwNjYxMzY1ZjZlLi4y MWFkNzg1NDExOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dl cW9fZXJ4LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19lcnguYwpA QCAtMTYyLDcgKzE2Miw3IEBAIGdpbW1lX2VkZ2UoUGxhbm5lckluZm8gKnJvb3QsIEdlbmUg Z2VuZTEsIEdlbmUgZ2VuZTIsIEVkZ2UgKmVkZ2VfdGFibGUpCiAKIAlmb3IgKGkgPSAwOyBp IDwgZWRnZXM7IGkrKykKIAl7Ci0JCWlmICgoR2VuZSkgQWJzKGVkZ2VfdGFibGVbY2l0eTFd LmVkZ2VfbGlzdFtpXSkgPT0gY2l0eTIpCisJCWlmICgoR2VuZSkgYWJzKGVkZ2VfdGFibGVb Y2l0eTFdLmVkZ2VfbGlzdFtpXSkgPT0gY2l0eTIpCiAJCXsKIAogCQkJLyogbWFyayBzaGFy ZWQgZWRnZXMgYXMgbmVnYXRpdmUgKi8KQEAgLTI0OSwxNCArMjQ5LDE0IEBAIHJlbW92ZV9n ZW5lKFBsYW5uZXJJbmZvICpyb290LCBHZW5lIGdlbmUsIEVkZ2UgZWRnZSwgRWRnZSAqZWRn ZV90YWJsZSkKIAogCWZvciAoaSA9IDA7IGkgPCBlZGdlLnVudXNlZF9lZGdlczsgaSsrKQog CXsKLQkJcG9zc2Vzc19lZGdlID0gKGludCkgQWJzKGVkZ2UuZWRnZV9saXN0W2ldKTsKKwkJ cG9zc2Vzc19lZGdlID0gYWJzKGVkZ2UuZWRnZV9saXN0W2ldKTsKIAkJZ2VuZXNfcmVtYWlu aW5nID0gZWRnZV90YWJsZVtwb3NzZXNzX2VkZ2VdLnVudXNlZF9lZGdlczsKIAogCQkvKiBm aW5kIHRoZSBpbnB1dCBnZW5lIGluIGFsbCBlZGdlX2xpc3RzIGFuZCBkZWxldGUgaXQgKi8K IAkJZm9yIChqID0gMDsgaiA8IGdlbmVzX3JlbWFpbmluZzsgaisrKQogCQl7CiAKLQkJCWlm ICgoR2VuZSkgQWJzKGVkZ2VfdGFibGVbcG9zc2Vzc19lZGdlXS5lZGdlX2xpc3Rbal0pID09 IGdlbmUpCisJCQlpZiAoKEdlbmUpIGFicyhlZGdlX3RhYmxlW3Bvc3Nlc3NfZWRnZV0uZWRn ZV9saXN0W2pdKSA9PSBnZW5lKQogCQkJewogCiAJCQkJZWRnZV90YWJsZVtwb3NzZXNzX2Vk Z2VdLnVudXNlZF9lZGdlcy0tOwpAQCAtMzA3LDcgKzMwNyw3IEBAIGdpbW1lX2dlbmUoUGxh bm5lckluZm8gKnJvb3QsIEVkZ2UgZWRnZSwgRWRnZSAqZWRnZV90YWJsZSkKIAkJICogY29u dmVydGluZyB0byBhYnNvbHV0ZSB2YWx1ZXMKIAkJICovCiAJCWlmIChmcmllbmQgPCAwKQot CQkJcmV0dXJuIChHZW5lKSBBYnMoZnJpZW5kKTsKKwkJCXJldHVybiAoR2VuZSkgYWJzKGZy aWVuZCk7CiAKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK aW5kZXggN2Y3NGVkMjEyZjhjLi5iYTQwNDVmNTYyYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMzIwNiw3ICszMjA2LDcgQEAgY2hlY2tfbmV3X3Bh cnRpdGlvbl9ib3VuZChjaGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJ CSAqIGRhdHVtcyBsaXN0LgogCQkJCQkJCQkgKi8KIAkJCQkJCQkJUGFydGl0aW9uUmFuZ2VE YXR1bSAqZGF0dW0gPQotCQkJCQkJCQlsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgQWJz KGNtcHZhbCkgLSAxKTsKKwkJCQkJCQkJbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFi cyhjbXB2YWwpIC0gMSk7CiAKIAkJCQkJCQkJLyoKIAkJCQkJCQkJICogVGhlIG5ldyBwYXJ0 aXRpb24gb3ZlcmxhcHMgd2l0aCB0aGUKQEAgLTMyMzIsNyArMzIzMiw3IEBAIGNoZWNrX25l d19wYXJ0aXRpb25fYm91bmQoY2hhciAqcmVsbmFtZSwgUmVsYXRpb24gcGFyZW50LAogCQkJ CQkJICogaWYgd2UgaGF2ZSBlcXVhbGl0eSwgcG9pbnQgdG8gdGhlIGZpcnN0IG9uZS4KIAkJ CQkJCSAqLwogCQkJCQkJZGF0dW0gPSBjbXB2YWwgPT0gMCA/IGxpbml0aWFsKHNwZWMtPmxv d2VyZGF0dW1zKSA6Ci0JCQkJCQkJbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIEFicyhj bXB2YWwpIC0gMSk7CisJCQkJCQkJbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFicyhj bXB2YWwpIC0gMSk7CiAJCQkJCQlvdmVybGFwID0gdHJ1ZTsKIAkJCQkJCW92ZXJsYXBfbG9j YXRpb24gPSBkYXR1bS0+bG9jYXRpb247CiAJCQkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRl eGVzW29mZnNldCArIDFdOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Rh dGV0aW1lLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZXRpbWUuYwppbmRleCAzNTAw MzljYzg2NjkuLjE4NTE3ZmQ4NWNiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2RhdGV0aW1lLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMK QEAgLTQ0OCwxNCArNDQ4LDE0IEBAIEFwcGVuZFNlY29uZHMoY2hhciAqY3AsIGludCBzZWMs IGZzZWNfdCBmc2VjLCBpbnQgcHJlY2lzaW9uLCBib29sIGZpbGx6ZXJvcykKIAlBc3NlcnQo cHJlY2lzaW9uID49IDApOwogCiAJaWYgKGZpbGx6ZXJvcykKLQkJY3AgPSBwZ191bHRvc3Ry X3plcm9wYWQoY3AsIEFicyhzZWMpLCAyKTsKKwkJY3AgPSBwZ191bHRvc3RyX3plcm9wYWQo Y3AsIGFicyhzZWMpLCAyKTsKIAllbHNlCi0JCWNwID0gcGdfdWx0b3N0cihjcCwgQWJzKHNl YykpOworCQljcCA9IHBnX3VsdG9zdHIoY3AsIGFicyhzZWMpKTsKIAogCS8qIGZzZWNfdCBp cyBqdXN0IGFuIGludDMyICovCiAJaWYgKGZzZWMgIT0gMCkKIAl7Ci0JCWludDMyCQl2YWx1 ZSA9IEFicyhmc2VjKTsKKwkJaW50MzIJCXZhbHVlID0gYWJzKGZzZWMpOwogCQljaGFyCSAg ICplbmQgPSAmY3BbcHJlY2lzaW9uICsgMV07CiAJCWJvb2wJCWdvdG5vbnplcm8gPSBmYWxz ZTsKIApAQCAtNDkwLDcgKzQ5MCw3IEBAIEFwcGVuZFNlY29uZHMoY2hhciAqY3AsIGludCBz ZWMsIGZzZWNfdCBmc2VjLCBpbnQgcHJlY2lzaW9uLCBib29sIGZpbGx6ZXJvcykKIAkJICog d2hpY2ggd2lsbCBnZW5lcmF0ZSBhIGNvcnJlY3QgYW5zd2VyIGluIHRoZSBtaW5pbXVtIHZh bGlkIHdpZHRoLgogCQkgKi8KIAkJaWYgKHZhbHVlKQotCQkJcmV0dXJuIHBnX3VsdG9zdHIo Y3AsIEFicyhmc2VjKSk7CisJCQlyZXR1cm4gcGdfdWx0b3N0cihjcCwgYWJzKGZzZWMpKTsK IAogCQlyZXR1cm4gZW5kOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9udW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCmluZGV4IDg1 ZWU5ZWM0MjYwNi4uY2FmZTFhYzQ3YjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbnVtZXJpYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMK QEAgLTg4NzAsNyArODg3MCw3IEBAIGRpdl92YXJfZmFzdChjb25zdCBOdW1lcmljVmFyICp2 YXIxLCBjb25zdCBOdW1lcmljVmFyICp2YXIyLAogCQlpZiAocWRpZ2l0ICE9IDApCiAJCXsK IAkJCS8qIERvIHdlIG5lZWQgdG8gbm9ybWFsaXplIG5vdz8gKi8KLQkJCW1heGRpdiArPSBB YnMocWRpZ2l0KTsKKwkJCW1heGRpdiArPSBhYnMocWRpZ2l0KTsKIAkJCWlmIChtYXhkaXYg PiAoSU5UX01BWCAtIElOVF9NQVggLyBOQkFTRSAtIDEpIC8gKE5CQVNFIC0gMSkpCiAJCQl7 CiAJCQkJLyoKQEAgLTg5MjMsNyArODkyMyw3IEBAIGRpdl92YXJfZmFzdChjb25zdCBOdW1l cmljVmFyICp2YXIxLCBjb25zdCBOdW1lcmljVmFyICp2YXIyLAogCQkJCWZxdW90aWVudCA9 IGZkaXZpZGVuZCAqIGZkaXZpc29yaW52ZXJzZTsKIAkJCQlxZGlnaXQgPSAoZnF1b3RpZW50 ID49IDAuMCkgPyAoKGludCkgZnF1b3RpZW50KSA6CiAJCQkJCSgoKGludCkgZnF1b3RpZW50 KSAtIDEpOwkvKiB0cnVuY2F0ZSB0b3dhcmRzIC1pbmZpbml0eSAqLwotCQkJCW1heGRpdiAr PSBBYnMocWRpZ2l0KTsKKwkJCQltYXhkaXYgKz0gYWJzKHFkaWdpdCk7CiAJCQl9CiAKIAkJ CS8qCkBAIC05MTA3LDcgKzkxMDcsNyBAQCBkaXZfdmFyX2ludChjb25zdCBOdW1lcmljVmFy ICp2YXIsIGludCBpdmFsLCBpbnQgaXZhbF93ZWlnaHQsCiAJICogYmVjb21lIGFzIGxhcmdl IGFzIGRpdmlzb3IgKiBOQkFTRSAtIDEsIGFuZCBzbyBpdCByZXF1aXJlcyBhIDY0LWJpdAog CSAqIGludGVnZXIgaWYgdGhpcyBleGNlZWRzIFVJTlRfTUFYLgogCSAqLwotCWRpdmlzb3Ig PSBBYnMoaXZhbCk7CisJZGl2aXNvciA9IGFicyhpdmFsKTsKIAogCWlmIChkaXZpc29yIDw9 IFVJTlRfTUFYIC8gTkJBU0UpCiAJewpAQCAtOTk0OCw3ICs5OTQ4LDcgQEAgZXhwX3Zhcihj b25zdCBOdW1lcmljVmFyICphcmcsIE51bWVyaWNWYXIgKnJlc3VsdCwgaW50IHJzY2FsZSkK IAogCS8qIEd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cvdW5kZXJmbG93ICovCiAJLyogSWYgeW91 IGNoYW5nZSB0aGlzIGxpbWl0LCBzZWUgYWxzbyBwb3dlcl92YXIoKSdzIGxpbWl0ICovCi0J aWYgKEFicyh2YWwpID49IE5VTUVSSUNfTUFYX1JFU1VMVF9TQ0FMRSAqIDMpCisJaWYgKGZh YnModmFsKSA+PSBOVU1FUklDX01BWF9SRVNVTFRfU0NBTEUgKiAzKQogCXsKIAkJaWYgKHZh bCA+IDApCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtOTk2NiwxNSArOTk2NiwxNSBAQCBleHBf dmFyKGNvbnN0IE51bWVyaWNWYXIgKmFyZywgTnVtZXJpY1ZhciAqcmVzdWx0LCBpbnQgcnNj YWxlKQogCSAqIFJlZHVjZSB4IHRvIHRoZSByYW5nZSAtMC4wMSA8PSB4IDw9IDAuMDEgKGFw cHJveGltYXRlbHkpIGJ5IGRpdmlkaW5nIGJ5CiAJICogMl5uZGl2MiwgdG8gaW1wcm92ZSB0 aGUgY29udmVyZ2VuY2UgcmF0ZSBvZiB0aGUgVGF5bG9yIHNlcmllcy4KIAkgKgotCSAqIE5v dGUgdGhhdCB0aGUgb3ZlcmZsb3cgY2hlY2sgYWJvdmUgZW5zdXJlcyB0aGF0IEFicyh4KSA8 IDYwMDAsIHdoaWNoCisJICogTm90ZSB0aGF0IHRoZSBvdmVyZmxvdyBjaGVjayBhYm92ZSBl bnN1cmVzIHRoYXQgZmFicyh4KSA8IDYwMDAsIHdoaWNoCiAJICogbWVhbnMgdGhhdCBuZGl2 MiA8PSAyMCBoZXJlLgogCSAqLwotCWlmIChBYnModmFsKSA+IDAuMDEpCisJaWYgKGZhYnMo dmFsKSA+IDAuMDEpCiAJewogCQluZGl2MiA9IDE7CiAJCXZhbCAvPSAyOwogCi0JCXdoaWxl IChBYnModmFsKSA+IDAuMDEpCisJCXdoaWxlIChmYWJzKHZhbCkgPiAwLjAxKQogCQl7CiAJ CQluZGl2MisrOwogCQkJdmFsIC89IDI7CkBAIC0xMDExNiw3ICsxMDExNiw3IEBAIGVzdGlt YXRlX2xuX2R3ZWlnaHQoY29uc3QgTnVtZXJpY1ZhciAqdmFyKQogCQkJICotLS0tLS0tLS0t CiAJCQkgKi8KIAkJCWxuX3ZhciA9IGxvZygoZG91YmxlKSBkaWdpdHMpICsgZHdlaWdodCAq IDIuMzAyNTg1MDkyOTk0MDQ2OwotCQkJbG5fZHdlaWdodCA9IChpbnQpIGxvZzEwKEFicyhs bl92YXIpKTsKKwkJCWxuX2R3ZWlnaHQgPSAoaW50KSBsb2cxMChmYWJzKGxuX3ZhcikpOwog CQl9CiAJCWVsc2UKIAkJewpAQCAtMTA0MjcsNyArMTA0MjcsNyBAQCBwb3dlcl92YXIoY29u c3QgTnVtZXJpY1ZhciAqYmFzZSwgY29uc3QgTnVtZXJpY1ZhciAqZXhwLCBOdW1lcmljVmFy ICpyZXN1bHQpCiAJdmFsID0gbnVtZXJpY3Zhcl90b19kb3VibGVfbm9fb3ZlcmZsb3coJmxu X251bSk7CiAKIAkvKiBpbml0aWFsIG92ZXJmbG93L3VuZGVyZmxvdyB0ZXN0IHdpdGggZnV6 eiBmYWN0b3IgKi8KLQlpZiAoQWJzKHZhbCkgPiBOVU1FUklDX01BWF9SRVNVTFRfU0NBTEUg KiAzLjAxKQorCWlmIChmYWJzKHZhbCkgPiBOVU1FUklDX01BWF9SRVNVTFRfU0NBTEUgKiAz LjAxKQogCXsKIAkJaWYgKHZhbCA+IDApCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtMTA1ODMs NyArMTA1ODMsNyBAQCBwb3dlcl92YXJfaW50KGNvbnN0IE51bWVyaWNWYXIgKmJhc2UsIGlu dCBleHAsIE51bWVyaWNWYXIgKnJlc3VsdCwgaW50IHJzY2FsZSkKIAkgKiBOb3cgd2UgY2Fu IHByb2NlZWQgd2l0aCB0aGUgbXVsdGlwbGljYXRpb25zLgogCSAqLwogCW5lZyA9IChleHAg PCAwKTsKLQltYXNrID0gQWJzKGV4cCk7CisJbWFzayA9IGFicyhleHApOwogCiAJaW5pdF92 YXIoJmJhc2VfcHJvZCk7CiAJc2V0X3Zhcl9mcm9tX3ZhcihiYXNlLCAmYmFzZV9wcm9kKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYwppbmRleCA3NzdmZGYw ZTJlOTYuLjU5OTZkZTQxN2RlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JhbmdldHlwZXNfZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5 cGVzX2dpc3QuYwpAQCAtNzQzLDggKzc0Myw4IEBAIHJhbmdlX2dpc3RfcGlja3NwbGl0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQllbXB0eUNvdW50ID0gdG90YWxfY291bnQgLSBub25FbXB0 eUNvdW50OwogCiAJCQlpZiAoaW5mQ291bnQgPiAwICYmIG5vbkluZkNvdW50ID4gMCAmJgot CQkJCShBYnMoaW5mQ291bnQgLSBub25JbmZDb3VudCkgPD0KLQkJCQkgQWJzKGVtcHR5Q291 bnQgLSBub25FbXB0eUNvdW50KSkpCisJCQkJKGFicyhpbmZDb3VudCAtIG5vbkluZkNvdW50 KSA8PQorCQkJCSBhYnMoZW1wdHlDb3VudCAtIG5vbkVtcHR5Q291bnQpKSkKIAkJCXsKIAkJ CQljbGFzc2VzX2dyb3Vwc1tDTFNfTk9STUFMXSA9IFNQTElUX1JJR0hUOwogCQkJCWNsYXNz ZXNfZ3JvdXBzW0NMU19DT05UQUlOX0VNUFRZXSA9IFNQTElUX1JJR0hUOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYwppbmRleCAyMzRmYjY2NTgwNjIuLjY5ZTBmYjk4ZjViMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTc4MzUsNyArNzgzNSw3IEBAIGJyaW5j b3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwgZG91Ymxl IGxvb3BfY291bnQsCiAJCQkJZG91YmxlCQl2YXJDb3JyZWxhdGlvbiA9IDAuMDsKIAogCQkJ CWlmIChzc2xvdC5ubnVtYmVycyA+IDApCi0JCQkJCXZhckNvcnJlbGF0aW9uID0gQWJzKHNz bG90Lm51bWJlcnNbMF0pOworCQkJCQl2YXJDb3JyZWxhdGlvbiA9IGZhYnMoc3Nsb3QubnVt YmVyc1swXSk7CiAKIAkJCQlpZiAodmFyQ29ycmVsYXRpb24gPiAqaW5kZXhDb3JyZWxhdGlv bikKIAkJCQkJKmluZGV4Q29ycmVsYXRpb24gPSB2YXJDb3JyZWxhdGlvbjsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90aW1lc3RhbXAuYwppbmRleCA5Nzk5NjQ3ZTFhNTQuLmQ4NTUyYTFmMTg2NCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwpAQCAtMzI5MCw3ICszMjkwLDcgQEAg aW50ZXJ2YWxfbXVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogY2FzY2FkZSBmcm9tIG1vbnRo cyBhbmQgZGF5cy4gIEl0IG1pZ2h0IHN0aWxsIGJlID4yNCBpZiB0aGUgY29tYmluYXRpb24K IAkgKiBvZiBjYXNjYWRlIGFuZCB0aGUgc2Vjb25kcyBmYWN0b3Igb3BlcmF0aW9uIGl0c2Vs Zi4KIAkgKi8KLQlpZiAoQWJzKHNlY19yZW1haW5kZXIpID49IFNFQ1NfUEVSX0RBWSkKKwlp ZiAoZmFicyhzZWNfcmVtYWluZGVyKSA+PSBTRUNTX1BFUl9EQVkpCiAJewogCQlyZXN1bHQt PmRheSArPSAoaW50KSAoc2VjX3JlbWFpbmRlciAvIFNFQ1NfUEVSX0RBWSk7CiAJCXNlY19y ZW1haW5kZXIgLT0gKGludCkgKHNlY19yZW1haW5kZXIgLyBTRUNTX1BFUl9EQVkpICogU0VD U19QRVJfREFZOwpAQCAtMzM0Nyw3ICszMzQ3LDcgQEAgaW50ZXJ2YWxfZGl2KFBHX0ZVTkNU SU9OX0FSR1MpCiAJc2VjX3JlbWFpbmRlciA9IChvcmlnX2RheSAvIGZhY3RvciAtIHJlc3Vs dC0+ZGF5ICsKIAkJCQkJIG1vbnRoX3JlbWFpbmRlcl9kYXlzIC0gKGludCkgbW9udGhfcmVt YWluZGVyX2RheXMpICogU0VDU19QRVJfREFZOwogCXNlY19yZW1haW5kZXIgPSBUU1JPVU5E KHNlY19yZW1haW5kZXIpOwotCWlmIChBYnMoc2VjX3JlbWFpbmRlcikgPj0gU0VDU19QRVJf REFZKQorCWlmIChmYWJzKHNlY19yZW1haW5kZXIpID49IFNFQ1NfUEVSX0RBWSkKIAl7CiAJ CXJlc3VsdC0+ZGF5ICs9IChpbnQpIChzZWNfcmVtYWluZGVyIC8gU0VDU19QRVJfREFZKTsK IAkJc2VjX3JlbWFpbmRlciAtPSAoaW50KSAoc2VjX3JlbWFpbmRlciAvIFNFQ1NfUEVSX0RB WSkgKiBTRUNTX1BFUl9EQVk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv dHNnaXN0aWR4LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaXN0aWR4LmMKaW5kZXgg ZmU0MzhmMWM0ZDNmLi43MjhiNWU5ZTcxMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90c2dpc3RpZHguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaXN0 aWR4LmMKQEAgLTcwMCw3ICs3MDAsNyBAQCBndHN2ZWN0b3JfcGlja3NwbGl0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJCWNvc3R2ZWN0b3JbaiAtIDFdLnBvcyA9IGo7CiAJCXNpemVfYWxwaGEg PSBoZW1kaXN0Y2FjaGUoJihjYWNoZVtzZWVkXzFdKSwgJihjYWNoZVtqXSksIHNpZ2xlbik7 CiAJCXNpemVfYmV0YSA9IGhlbWRpc3RjYWNoZSgmKGNhY2hlW3NlZWRfMl0pLCAmKGNhY2hl W2pdKSwgc2lnbGVuKTsKLQkJY29zdHZlY3RvcltqIC0gMV0uY29zdCA9IEFicyhzaXplX2Fs cGhhIC0gc2l6ZV9iZXRhKTsKKwkJY29zdHZlY3RvcltqIC0gMV0uY29zdCA9IGFicyhzaXpl X2FscGhhIC0gc2l6ZV9iZXRhKTsKIAl9CiAJcXNvcnQoKHZvaWQgKikgY29zdHZlY3Rvciwg bWF4b2ZmLCBzaXplb2YoU1BMSVRDT1NUKSwgY29tcGFyZWNvc3QpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5rLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvdHNyYW5rLmMKaW5kZXggMzg1OGZjNTkyODFjLi5lMzUzNjY5ZGJhYTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3JhbmsuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvdHNyYW5rLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjYWxjX3JhbmtfYW5kKGNv bnN0IGZsb2F0ICp3LCBUU1ZlY3RvciB0LCBUU1F1ZXJ5IHEpCiAJCQkJewogCQkJCQlmb3Ig KHAgPSAwOyBwIDwgbGVuY3Q7IHArKykKIAkJCQkJewotCQkJCQkJZGlzdCA9IEFicygoaW50 KSBXRVBfR0VUUE9TKHBvc3RbbF0pIC0gKGludCkgV0VQX0dFVFBPUyhjdFtwXSkpOworCQkJ CQkJZGlzdCA9IGFicygoaW50KSBXRVBfR0VUUE9TKHBvc3RbbF0pIC0gKGludCkgV0VQX0dF VFBPUyhjdFtwXSkpOwogCQkJCQkJaWYgKGRpc3QgfHwgKGRpc3QgPT0gMCAmJiAocG9zW2ld ID09IFBPU05VTEwgfHwgcG9zW2tdID09IFBPU05VTEwpKSkKIAkJCQkJCXsKIAkJCQkJCQlm bG9hdAkJY3VydzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDAxMzU3NjYwMzU5OC4uZjk5 N2VjMGY4MjJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTUzNzgsNyArNTM3OCw3IEBA IGVzdGltYXRlX3ZhcmlhYmxlX3NpemUoc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZikK IAkJCQkgKiBzbWFsbCB2YWx1ZXMuICBNYXhpbXVtIHZhbHVlIGlzIDIxNDc0ODM2NDcsIGku ZS4gMTAgY2hhcnMuCiAJCQkJICogSW5jbHVkZSBvbmUgYnl0ZSBmb3Igc2lnbi4KIAkJCQkg Ki8KLQkJCQlpZiAoQWJzKCpjb25mLT52YXJpYWJsZSkgPCAxMDAwKQorCQkJCWlmIChhYnMo KmNvbmYtPnZhcmlhYmxlKSA8IDEwMDApCiAJCQkJCXZhbHNpemUgPSAzICsgMTsKIAkJCQll bHNlCiAJCQkJCXZhbHNpemUgPSAxMCArIDE7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3BndHlwZXNsaWIvaW50ZXJ2YWwuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcGd0 eXBlc2xpYi9pbnRlcnZhbC5jCmluZGV4IDczYmRlOTRhYWYwZC4uZGMwODNjMTMyNzJiIDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3BndHlwZXNsaWIvaW50ZXJ2YWwuYwor KysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3BndHlwZXNsaWIvaW50ZXJ2YWwuYwpAQCAtNzQy LDkgKzc0Miw5IEBAIEFwcGVuZFNlY29uZHMoY2hhciAqY3AsIGludCBzZWMsIGZzZWNfdCBm c2VjLCBpbnQgcHJlY2lzaW9uLCBib29sIGZpbGx6ZXJvcykKIAllbHNlCiAJewogCQlpZiAo ZmlsbHplcm9zKQotCQkJc3ByaW50ZihjcCwgIiUwMmQuJTAqZCIsIGFicyhzZWMpLCBwcmVj aXNpb24sIChpbnQpIEFicyhmc2VjKSk7CisJCQlzcHJpbnRmKGNwLCAiJTAyZC4lMCpkIiwg YWJzKHNlYyksIHByZWNpc2lvbiwgYWJzKGZzZWMpKTsKIAkJZWxzZQotCQkJc3ByaW50Zihj cCwgIiVkLiUwKmQiLCBhYnMoc2VjKSwgcHJlY2lzaW9uLCAoaW50KSBBYnMoZnNlYykpOwor CQkJc3ByaW50ZihjcCwgIiVkLiUwKmQiLCBhYnMoc2VjKSwgcHJlY2lzaW9uLCBhYnMoZnNl YykpOwogCQlUcmltVHJhaWxpbmdaZXJvcyhjcCk7CiAJfQogfQotLSAKMi4zNy4zCgo= --------------OXgMRUhO60C95PLHuXUvNd1Z Content-Type: text/plain; charset=UTF-8; name="0002-Use-llabs-instead-of-Abs-where-appropriate.patch" Content-Disposition: attachment; filename="0002-Use-llabs-instead-of-Abs-where-appropriate.patch" Content-Transfer-Encoding: base64 RnJvbSBhNzYyZGJkNWY2MDI3NmY5NTI4ZTliZDc4MDc5ZGE3ZmNjNzczZmRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA0IE9jdCAyMDIyIDA4OjE1OjEzICswMjAwClN1YmplY3Q6 IFtQQVRDSCAyLzRdIFVzZSBsbGFicygpIGluc3RlYWQgb2YgQWJzKCkgd2hlcmUgYXBwcm9w cmlhdGUKCi0tLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyAgfCAyICstCiBj b250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jICB8IDIgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9kYXRldGltZS5jIHwgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Ric2l6ZS5jICAgfCAyICstCiA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Y2FzaC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYwppbmRleCA2YWM5N2Uy YjEyYTguLmQxNzExMTM3YTEwZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Nhc2guYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCkBAIC0x MDYsNyArMTA2LDcgQEAgY2FzaF9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygi bW9uZXkgb3V0IG9mIHJhbmdlIikpKTsKIAotCXJhID0gQWJzKHIpOworCXJhID0gbGxhYnMo cik7CiAKIAlQR19SRVRVUk5fQ0FTSChyYSk7CiB9CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDgu YwppbmRleCBkZjJiMGQxNzRiOTYuLmZiNThhYjFiODI5NSAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2ludDguYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfaW50OC5jCkBAIC0xMDYsNyArMTA2LDcgQEAgaW50OF9kaXN0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSks CiAJCQkJIGVycm1zZygiYmlnaW50IG91dCBvZiByYW5nZSIpKSk7CiAKLQlyYSA9IEFicyhy KTsKKwlyYSA9IGxsYWJzKHIpOwogCiAJUEdfUkVUVVJOX0lOVDY0KHJhKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2RhdGV0aW1lLmMKaW5kZXggMTg1MTdmZDg1Y2JkLi4yZjZhYmE2MjU3NmEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCkBAIC00NDY4LDcgKzQ0NjgsNyBAQCBB ZGRWZXJib3NlSW50UGFydChjaGFyICpjcCwgaW50NjQgdmFsdWUsIGNvbnN0IGNoYXIgKnVu aXRzLAogCWlmICgqaXNfemVybykKIAl7CiAJCSppc19iZWZvcmUgPSAodmFsdWUgPCAwKTsK LQkJdmFsdWUgPSBBYnModmFsdWUpOworCQl2YWx1ZSA9IGxsYWJzKHZhbHVlKTsKIAl9CiAJ ZWxzZSBpZiAoKmlzX2JlZm9yZSkKIAkJdmFsdWUgPSAtdmFsdWU7CkBAIC00NTY5LDggKzQ1 NjksOCBAQCBFbmNvZGVJbnRlcnZhbChzdHJ1Y3QgcGdfaXRtICppdG0sIGludCBzdHlsZSwg Y2hhciAqc3RyKQogCiAJCQkJCXNwcmludGYoY3AsICIlYyVkLSVkICVjJWxsZCAlYyVsbGQ6 JTAyZDoiLAogCQkJCQkJCXllYXJfc2lnbiwgYWJzKHllYXIpLCBhYnMobW9uKSwKLQkJCQkJ CQlkYXlfc2lnbiwgKGxvbmcgbG9uZykgQWJzKG1kYXkpLAotCQkJCQkJCXNlY19zaWduLCAo bG9uZyBsb25nKSBBYnMoaG91ciksIGFicyhtaW4pKTsKKwkJCQkJCQlkYXlfc2lnbiwgbGxh YnMobWRheSksCisJCQkJCQkJc2VjX3NpZ24sIGxsYWJzKGhvdXIpLCBhYnMobWluKSk7CiAJ CQkJCWNwICs9IHN0cmxlbihjcCk7CiAJCQkJCWNwID0gQXBwZW5kU2Vjb25kcyhjcCwgc2Vj LCBmc2VjLCBNQVhfSU5URVJWQUxfUFJFQ0lTSU9OLCB0cnVlKTsKIAkJCQkJKmNwID0gJ1ww JzsKQEAgLTQ2NDIsNyArNDY0Miw3IEBAIEVuY29kZUludGVydmFsKHN0cnVjdCBwZ19pdG0g Kml0bSwgaW50IHN0eWxlLCBjaGFyICpzdHIpCiAJCQkJc3ByaW50ZihjcCwgIiVzJXMlMDJs bGQ6JTAyZDoiLAogCQkJCQkJaXNfemVybyA/ICIiIDogIiAiLAogCQkJCQkJKG1pbnVzID8g Ii0iIDogKGlzX2JlZm9yZSA/ICIrIiA6ICIiKSksCi0JCQkJCQkobG9uZyBsb25nKSBBYnMo aG91ciksIGFicyhtaW4pKTsKKwkJCQkJCWxsYWJzKGhvdXIpLCBhYnMobWluKSk7CiAJCQkJ Y3AgKz0gc3RybGVuKGNwKTsKIAkJCQljcCA9IEFwcGVuZFNlY29uZHMoY3AsIHNlYywgZnNl YywgTUFYX0lOVEVSVkFMX1BSRUNJU0lPTiwgdHJ1ZSk7CiAJCQkJKmNwID0gJ1wwJzsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9kYnNpemUuYwppbmRleCAzNGVmYTEyMWI0MDQuLjFlMWE2MGUxODQ4MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwpAQCAtNTY0LDcgKzU2NCw3IEBAIHBnX3NpemVf cHJldHR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXVpbnQ4CQliaXRzOwogCiAJCS8qIHVzZSB0 aGlzIHVuaXQgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdW5pdHMgb3Igd2UncmUgYmVsb3cgdGhl IGxpbWl0ICovCi0JCWlmICh1bml0WzFdLm5hbWUgPT0gTlVMTCB8fCBBYnMoc2l6ZSkgPCB1 bml0LT5saW1pdCkKKwkJaWYgKHVuaXRbMV0ubmFtZSA9PSBOVUxMIHx8IGxsYWJzKHNpemUp IDwgdW5pdC0+bGltaXQpCiAJCXsKIAkJCWlmICh1bml0LT5yb3VuZCkKIAkJCQlzaXplID0g aGFsZl9yb3VuZGVkKHNpemUpOwotLSAKMi4zNy4zCgo= --------------OXgMRUhO60C95PLHuXUvNd1Z Content-Type: text/plain; charset=UTF-8; name="0003-Use-fabsf-instead-of-Abs-where-appropriate.patch" Content-Disposition: attachment; filename="0003-Use-fabsf-instead-of-Abs-where-appropriate.patch" Content-Transfer-Encoding: base64 RnJvbSBlNjlkM2QwMWE2YjIyOThkOGMyMjhiZjMzZTk2Zjg2YzM5MDhkYzdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA0IE9jdCAyMDIyIDA4OjE1OjEzICswMjAwClN1YmplY3Q6 IFtQQVRDSCAzLzRdIFVzZSBmYWJzZigpIGluc3RlYWQgb2YgQWJzKCkgd2hlcmUgYXBwcm9w cmlhdGUKCi0tLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jIHwgMiArLQog Y29udHJpYi9pbnRhcnJheS9faW50X2dpc3QuYyAgICAgIHwgMiArLQogY29udHJpYi9zZWcv c2VnLmMgICAgICAgICAgICAgICAgIHwgNSArKystLQogMyBmaWxlcyBjaGFuZ2VkLCA1IGlu c2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2Zsb2F0NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 NC5jCmluZGV4IDNjYmQ5YTA2ZGNjZi4uODRjYTVlZWU1MDEyIDEwMDY0NAotLS0gYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX2Zsb2F0NC5jCkBAIC0xMDIsNyArMTAyLDcgQEAgZmxvYXQ0X2Rpc3QoUEdfRlVO Q1RJT05fQVJHUykKIAlpZiAodW5saWtlbHkoaXNpbmYocikpICYmICFpc2luZihhKSAmJiAh aXNpbmYoYikpCiAJCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CiAKLQlQR19SRVRVUk5fRkxP QVQ0KEFicyhyKSk7CisJUEdfUkVUVVJOX0ZMT0FUNChmYWJzZihyKSk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvY29udHJpYi9pbnRhcnJheS9faW50X2dpc3QuYyBiL2NvbnRyaWIvaW50YXJy YXkvX2ludF9naXN0LmMKaW5kZXggZjY3Njk5YmZjY2M1Li4zMzFmYTI1ZmNmNzIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMKKysrIGIvY29udHJpYi9pbnRh cnJheS9faW50X2dpc3QuYwpAQCAtNTQwLDcgKzU0MCw3IEBAIGdfaW50X3BpY2tzcGxpdChQ R19GVU5DVElPTl9BUkdTKQogCQl1bmlvbl9kID0gaW5uZXJfaW50X3VuaW9uKGRhdHVtX3Is IGRhdHVtX2FscGhhKTsKIAkJcnRfX2ludF9zaXplKHVuaW9uX2QsICZzaXplX2JldGEpOwog CQlwZnJlZSh1bmlvbl9kKTsKLQkJY29zdHZlY3RvcltpIC0gMV0uY29zdCA9IGZhYnMoKHNp emVfYWxwaGEgLSBzaXplX2wpIC0gKHNpemVfYmV0YSAtIHNpemVfcikpOworCQljb3N0dmVj dG9yW2kgLSAxXS5jb3N0ID0gZmFic2YoKHNpemVfYWxwaGEgLSBzaXplX2wpIC0gKHNpemVf YmV0YSAtIHNpemVfcikpOwogCX0KIAlxc29ydCgodm9pZCAqKSBjb3N0dmVjdG9yLCBtYXhv ZmYsIHNpemVvZihTUExJVENPU1QpLCBjb21wYXJlY29zdCk7CiAKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvc2VnL3NlZy5jIGIvY29udHJpYi9zZWcvc2VnLmMKaW5kZXggOWI1ODY3NTI2NmFi Li5lOTY0NTYwMDUzZDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc2VnL3NlZy5jCisrKyBiL2Nv bnRyaWIvc2VnL3NlZy5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgogCiAjaW5jbHVk ZSAiYWNjZXNzL2dpc3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKQEAgLTcw Niw3ICs3MDcsNyBAQCBydF9zZWdfc2l6ZShTRUcgKmEsIGZsb2F0ICpzaXplKQogCWlmIChh ID09IChTRUcgKikgTlVMTCB8fCBhLT51cHBlciA8PSBhLT5sb3dlcikKIAkJKnNpemUgPSAw LjA7CiAJZWxzZQotCQkqc2l6ZSA9IChmbG9hdCkgQWJzKGEtPnVwcGVyIC0gYS0+bG93ZXIp OworCQkqc2l6ZSA9IGZhYnNmKGEtPnVwcGVyIC0gYS0+bG93ZXIpOwogfQogCiBEYXR1bQpA QCAtNzE0LDcgKzcxNSw3IEBAIHNlZ19zaXplKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJU0VH CQkgICAqc2VnID0gUEdfR0VUQVJHX1NFR19QKDApOwogCi0JUEdfUkVUVVJOX0ZMT0FUNCgo ZmxvYXQpIEFicyhzZWctPnVwcGVyIC0gc2VnLT5sb3dlcikpOworCVBHX1JFVFVSTl9GTE9B VDQoZmFic2Yoc2VnLT51cHBlciAtIHNlZy0+bG93ZXIpKTsKIH0KIAogCi0tIAoyLjM3LjMK Cg== --------------OXgMRUhO60C95PLHuXUvNd1Z Content-Type: text/plain; charset=UTF-8; name="0004-Remove-Abs.patch" Content-Disposition: attachment; filename="0004-Remove-Abs.patch" Content-Transfer-Encoding: base64 RnJvbSA0MDJkODUzM2YyNjVjZjM3NWNhNDYwNmU1MDg3MDA5M2ZlNmNkZjRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA0IE9jdCAyMDIyIDA4OjE1OjE0ICswMjAwClN1YmplY3Q6 IFtQQVRDSCA0LzRdIFJlbW92ZSBBYnMoKQoKLS0tCiBzcmMvaW5jbHVkZS9jLmggfCA2IC0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IGM4ZjcyZTQ0ZDg5NC4uYzdh MzI4OGI0OWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1 ZGUvYy5oCkBAIC05NzUsMTIgKzk3NSw2IEBAIGV4dGVybiB2b2lkIEV4Y2VwdGlvbmFsQ29u ZGl0aW9uKGNvbnN0IGNoYXIgKmNvbmRpdGlvbk5hbWUsCiAgKi8KICNkZWZpbmUgTWluKHgs IHkpCQkoKHgpIDwgKHkpID8gKHgpIDogKHkpKQogCi0vKgotICogQWJzCi0gKgkJUmV0dXJu IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuCi0gKi8KLSNkZWZpbmUgQWJz KHgpCQkJKCh4KSA+PSAwID8gKHgpIDogLSh4KSkKLQogCiAvKiBHZXQgYSBiaXQgbWFzayBv ZiB0aGUgYml0cyBzZXQgaW4gbm9uLWxvbmcgYWxpZ25lZCBhZGRyZXNzZXMgKi8KICNkZWZp bmUgTE9OR19BTElHTl9NQVNLIChzaXplb2YobG9uZykgLSAxKQotLSAKMi4zNy4zCgo= --------------OXgMRUhO60C95PLHuXUvNd1Z--