From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: YAMAMOTO Mitsuharu Newsgroups: gmane.emacs.bugs Subject: bug#36315: 27.0.50; SVG transparency handling is inaccurate Date: Thu, 27 Jun 2019 12:33:46 +0900 Organization: Faculty of Science, Chiba University Message-ID: References: <83blymnaog.fsf@gnu.org> <83imstli5f.fsf@gnu.org> <83mui4jq4j.fsf@gnu.org> Mime-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Thu_Jun_27_12:33:46_2019-1" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="257084"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?Q?Goj=C5=8D?=) APEL/10.8 EasyPG/1.0.0 Emacs/25.3 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) Cc: 36315@debbugs.gnu.org, pipcet@gmail.com To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Jun 27 05:34:12 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hgLAp-0014gS-Oa for geb-bug-gnu-emacs@m.gmane.org; Thu, 27 Jun 2019 05:34:11 +0200 Original-Received: from localhost ([::1]:45988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hgLAo-0002bM-4A for geb-bug-gnu-emacs@m.gmane.org; Wed, 26 Jun 2019 23:34:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37951) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hgLAh-0002Yh-Ou for bug-gnu-emacs@gnu.org; Wed, 26 Jun 2019 23:34:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hgLAg-0001pQ-MM for bug-gnu-emacs@gnu.org; Wed, 26 Jun 2019 23:34:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:51967) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hgLAg-0001p8-Hd for bug-gnu-emacs@gnu.org; Wed, 26 Jun 2019 23:34:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hgLAg-0004MI-Bx for bug-gnu-emacs@gnu.org; Wed, 26 Jun 2019 23:34:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: YAMAMOTO Mitsuharu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 27 Jun 2019 03:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36315 X-GNU-PR-Package: emacs Original-Received: via spool by 36315-submit@debbugs.gnu.org id=B36315.156160643116732 (code B ref 36315); Thu, 27 Jun 2019 03:34:02 +0000 Original-Received: (at 36315) by debbugs.gnu.org; 27 Jun 2019 03:33:51 +0000 Original-Received: from localhost ([127.0.0.1]:37278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hgLAV-0004Lo-1K for submit@debbugs.gnu.org; Wed, 26 Jun 2019 23:33:51 -0400 Original-Received: from mathmail.math.s.chiba-u.ac.jp ([133.82.132.2]:51305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hgLAR-0004La-Un for 36315@debbugs.gnu.org; Wed, 26 Jun 2019 23:33:49 -0400 Original-Received: from mathent.math.s.chiba-u.ac.jp (mathent [192.168.32.5]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id 680C1F08E0; Thu, 27 Jun 2019 12:33:46 +0900 (JST) (envelope-from mituharu@math.s.chiba-u.ac.jp) In-Reply-To: <83mui4jq4j.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:161557 Archived-At: --Multipart_Thu_Jun_27_12:33:46_2019-1 Content-Type: text/plain; charset=US-ASCII On Thu, 27 Jun 2019 00:57:48 +0900, Eli Zaretskii wrote: > > > > Maybe it's just me, but I'm uneasy to bypass librsvg and call Cairo > > > directly for manipulating SVG images. Why doesn't librsvg provide a > > > way to do this via its own APIs? > > > > > > Does anyone else think it's unusual to make such direct calls to what > > > is essentially a lower-level library? > > > > What kind of operations do you think librsvg should provide us with, > > instead of letting us use cairo? > > Those for which you called the Cairo functions directly. Which one, concretely? Or you mean something in other parts? + cairo_surface_t *surface; +#ifdef USE_CAIRO + surface = cairo_image_surface_create_for_data ((unsigned char *) ximg->data, + CAIRO_FORMAT_RGB24, + width, height, + ximg->bytes_per_line); +#else + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); +#endif + if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) + goto rsvg_error; + cairo_t *cr = cairo_create (surface); + cairo_set_source_rgb (cr, background.red / 65535.0, + background.green / 65535.0, + background.blue / 65535.0); + cairo_paint (cr); + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + rsvg_handle_render_cairo (rsvg_handle, cr); + cairo_destroy (cr); + g_object_unref (rsvg_handle); > I tried with the second patch. I tried now again with the above one: > still no rectangle. Seems like a problem in DLL loading. Please try the attached one. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp --Multipart_Thu_Jun_27_12:33:46_2019-1 Content-Type: application/octet-stream; type=patch; name="svg-cairo.diff" Content-Disposition: attachment; filename="svg-cairo.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4ZmYwZTIxZmJm Ni4uYmNkNzBkMzRjYmIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu YWMKQEAgLTI2MDMsNyArMjYwMyw3IEBAIEFDX0RFRlVOCiBIQVZFX1JTVkc9bm8KIGlmIHRlc3Qg IiR7SEFWRV9YMTF9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7SEFWRV9OU30iID0gInllcyIgfHwgdGVz dCAiJHtvcHN5c30iID0gIm1pbmd3MzIiOyB0aGVuCiAgIGlmIHRlc3QgIiR7d2l0aF9yc3ZnfSIg IT0gIm5vIjsgdGhlbgotICAgIFJTVkdfUkVRVUlSRUQ9Mi4xMS4wCisgICAgUlNWR19SRVFVSVJF RD0yLjE0LjAKICAgICBSU1ZHX01PRFVMRT0ibGlicnN2Zy0yLjAgPj0gJFJTVkdfUkVRVUlSRUQi CiAKICAgICBFTUFDU19DSEVDS19NT0RVTEVTKFtSU1ZHXSwgWyRSU1ZHX01PRFVMRV0pCmRpZmYg LS1naXQgYS9kb2MvbGlzcHJlZi9vcy50ZXhpIGIvZG9jL2xpc3ByZWYvb3MudGV4aQppbmRleCBm ZWY5NTRlYjdhMy4uMjg1Y2E1ZDY5NjcgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL29zLnRleGkK KysrIGIvZG9jL2xpc3ByZWYvb3MudGV4aQpAQCAtMzA4Miw3ICszMDgyLDcgQEAgRHluYW1pYyBM aWJyYXJpZXMKICAgICAgICAgKHRpZmYgImxpYnRpZmYzLmRsbCIgImxpYnRpZmYuZGxsIikKICAg ICAgICAgKGdpZiAiZ2lmbGliNC5kbGwiICJsaWJ1bmdpZjQuZGxsIiAibGlidW5naWYuZGxsIikK ICAgICAgICAgKHN2ZyAibGlicnN2Zy0yLTIuZGxsIikKLSAgICAgICAgKGdkay1waXhidWYgImxp Ymdka19waXhidWYtMi4wLTAuZGxsIikKKyAgICAgICAgKGNhaXJvICJsaWJjYWlyby0yLmRsbCIp CiAgICAgICAgIChnbGliICJsaWJnbGliLTIuMC0wLmRsbCIpCiAgICAgICAgIChnb2JqZWN0ICJs aWJnb2JqZWN0LTIuMC0wLmRsbCIpKSkKIEBlbmQgZXhhbXBsZQpkaWZmIC0tZ2l0IGEvbGlzcC90 ZXJtL3czMi13aW4uZWwgYi9saXNwL3Rlcm0vdzMyLXdpbi5lbAppbmRleCAwNDRiODJlZDFlMC4u MjcwYjA2MmU3NWEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzItd2luLmVsCisrKyBiL2xpc3Av dGVybS93MzItd2luLmVsCkBAIC0yNzcsNyArMjc3LDcgQEAgbGliZ251dGxzLXZlcnNpb24KIAkg ICAgICcoZ2lmICJsaWJnaWYtNi5kbGwiICJnaWZsaWI1LmRsbCIgImdpZi5kbGwiKQogCSAnKGdp ZiAibGliZ2lmLTUuZGxsIiAiZ2lmbGliNC5kbGwiICJsaWJ1bmdpZjQuZGxsIiAibGlidW5naWYu ZGxsIikpKQogICAgICAgICcoc3ZnICJsaWJyc3ZnLTItMi5kbGwiKQotICAgICAgICcoZ2RrLXBp eGJ1ZiAibGliZ2RrX3BpeGJ1Zi0yLjAtMC5kbGwiKQorICAgICAgICcoY2Fpcm8gImxpYmNhaXJv LTIuZGxsIikKICAgICAgICAnKGdsaWIgImxpYmdsaWItMi4wLTAuZGxsIikKICAgICAgICAnKGdv YmplY3QgImxpYmdvYmplY3QtMi4wLTAuZGxsIikKICAgICAgICAoaWYgKD49IGxpYmdudXRscy12 ZXJzaW9uIDMwNDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRl eCA3YjY0OGM0NmFlOS4uZDU2ZGQ5OTg5MDggMTAwNjQ0Ci0tLSBhL3NyYy9pbWFnZS5jCisrKyBi L3NyYy9pbWFnZS5jCkBAIC05Mzc5LDE3ICs5Mzc5LDIwIEBAIERFRl9ETExfRk4gKHZvaWQsIHJz dmdfaGFuZGxlX2dldF9kaW1lbnNpb25zLAogREVGX0RMTF9GTiAoZ2Jvb2xlYW4sIHJzdmdfaGFu ZGxlX3dyaXRlLAogCSAgICAoUnN2Z0hhbmRsZSAqLCBjb25zdCBndWNoYXIgKiwgZ3NpemUsIEdF cnJvciAqKikpOwogREVGX0RMTF9GTiAoZ2Jvb2xlYW4sIHJzdmdfaGFuZGxlX2Nsb3NlLCAoUnN2 Z0hhbmRsZSAqLCBHRXJyb3IgKiopKTsKLURFRl9ETExfRk4gKEdka1BpeGJ1ZiAqLCByc3ZnX2hh bmRsZV9nZXRfcGl4YnVmLCAoUnN2Z0hhbmRsZSAqKSk7CiBERUZfRExMX0ZOICh2b2lkLCByc3Zn X2hhbmRsZV9zZXRfYmFzZV91cmksIChSc3ZnSGFuZGxlICosIGNvbnN0IGNoYXIgKikpOwotCi1E RUZfRExMX0ZOIChpbnQsIGdka19waXhidWZfZ2V0X3dpZHRoLCAoY29uc3QgR2RrUGl4YnVmICop KTsKLURFRl9ETExfRk4gKGludCwgZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0LCAoY29uc3QgR2RrUGl4 YnVmICopKTsKLURFRl9ETExfRk4gKGd1Y2hhciAqLCBnZGtfcGl4YnVmX2dldF9waXhlbHMsIChj b25zdCBHZGtQaXhidWYgKikpOwotREVGX0RMTF9GTiAoaW50LCBnZGtfcGl4YnVmX2dldF9yb3dz dHJpZGUsIChjb25zdCBHZGtQaXhidWYgKikpOwotREVGX0RMTF9GTiAoR2RrQ29sb3JzcGFjZSwg Z2RrX3BpeGJ1Zl9nZXRfY29sb3JzcGFjZSwgKGNvbnN0IEdka1BpeGJ1ZiAqKSk7Ci1ERUZfRExM X0ZOIChpbnQsIGdka19waXhidWZfZ2V0X25fY2hhbm5lbHMsIChjb25zdCBHZGtQaXhidWYgKikp OwotREVGX0RMTF9GTiAoZ2Jvb2xlYW4sIGdka19waXhidWZfZ2V0X2hhc19hbHBoYSwgKGNvbnN0 IEdka1BpeGJ1ZiAqKSk7Ci1ERUZfRExMX0ZOIChpbnQsIGdka19waXhidWZfZ2V0X2JpdHNfcGVy X3NhbXBsZSwgKGNvbnN0IEdka1BpeGJ1ZiAqKSk7CitERUZfRExMX0ZOIChnYm9vbGVhbiwgcnN2 Z19oYW5kbGVfcmVuZGVyX2NhaXJvLCAoUnN2Z0hhbmRsZSAqLCBjYWlyb190ICopKTsKKworREVG X0RMTF9GTiAoY2Fpcm9fc3VyZmFjZV90ICosIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlLAor CSAgICAoY2Fpcm9fZm9ybWF0X3QsIGludCwgaW50KSk7CitERUZfRExMX0ZOIChjYWlyb19zdGF0 dXNfdCwgY2Fpcm9fc3VyZmFjZV9zdGF0dXMsIChjYWlyb19zdXJmYWNlX3QgKikpOworREVGX0RM TF9GTiAoY2Fpcm9fdCAqLCBjYWlyb19jcmVhdGUsIChjYWlyb19zdXJmYWNlX3QgKikpOworREVG X0RMTF9GTiAodm9pZCwgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IsIChjYWlyb190ICosIGRvdWJsZSwg ZG91YmxlLCBkb3VibGUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGNhaXJvX3BhaW50LCAoY2Fpcm9f dCAqKSk7CitERUZfRExMX0ZOICh2b2lkLCBjYWlyb19kZXN0cm95LCAoY2Fpcm9fdCAqKSk7CitE RUZfRExMX0ZOICh2b2lkLCBjYWlyb19zdXJmYWNlX2ZsdXNoLCAoY2Fpcm9fc3VyZmFjZV90ICop KTsKK0RFRl9ETExfRk4gKHVuc2lnbmVkIGNoYXIgKiwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf ZGF0YSwgKGNhaXJvX3N1cmZhY2VfdCAqKSk7CitERUZfRExMX0ZOIChpbnQsIGNhaXJvX2ltYWdl X3N1cmZhY2VfZ2V0X3N0cmlkZSwgKGNhaXJvX3N1cmZhY2VfdCAqKSk7CitERUZfRExMX0ZOICh2 b2lkLCBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ksIChjYWlyb19zdXJmYWNlX3QgKikpOwogCiAjICBp ZiAhIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzYsIDApCiBERUZfRExMX0ZOICh2b2lkLCBnX3R5 cGVfaW5pdCwgKHZvaWQpKTsKQEAgLTk0MDAsMTQgKzk0MDMsMTQgQEAgREVGX0RMTF9GTiAodm9p ZCwgZ19jbGVhcl9lcnJvciwgKEdFcnJvciAqKikpOwogc3RhdGljIGJvb2wKIGluaXRfc3ZnX2Z1 bmN0aW9ucyAodm9pZCkKIHsKLSAgSE1PRFVMRSBsaWJyYXJ5LCBnZGtsaWIgPSBOVUxMLCBnbGli ID0gTlVMTCwgZ29iamVjdCA9IE5VTEw7CisgIEhNT0RVTEUgbGlicmFyeSwgY2Fpcm8gPSBOVUxM LCBnbGliID0gTlVMTCwgZ29iamVjdCA9IE5VTEw7CiAKICAgaWYgKCEoZ2xpYiA9IHczMl9kZWxh eWVkX2xvYWQgKFFnbGliKSkKICAgICAgIHx8ICEoZ29iamVjdCA9IHczMl9kZWxheWVkX2xvYWQg KFFnb2JqZWN0KSkKLSAgICAgIHx8ICEoZ2RrbGliID0gdzMyX2RlbGF5ZWRfbG9hZCAoUWdka19w aXhidWYpKQorICAgICAgfHwgIShjYWlybyA9IHczMl9kZWxheWVkX2xvYWQgKFFjYWlybykpCiAg ICAgICB8fCAhKGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2FkIChRc3ZnKSkpCiAgICAgewotICAg ICAgaWYgKGdka2xpYikgIEZyZWVMaWJyYXJ5IChnZGtsaWIpOworICAgICAgaWYgKGNhaXJvKSAg IEZyZWVMaWJyYXJ5IChjYWlybyk7CiAgICAgICBpZiAoZ29iamVjdCkgRnJlZUxpYnJhcnkgKGdv YmplY3QpOwogICAgICAgaWYgKGdsaWIpICAgIEZyZWVMaWJyYXJ5IChnbGliKTsKICAgICAgIHJl dHVybiAwOwpAQCAtOTQxNywxNyArOTQyMCwxOSBAQCBpbml0X3N2Z19mdW5jdGlvbnMgKHZvaWQp CiAgIExPQURfRExMX0ZOIChsaWJyYXJ5LCByc3ZnX2hhbmRsZV9nZXRfZGltZW5zaW9ucyk7CiAg IExPQURfRExMX0ZOIChsaWJyYXJ5LCByc3ZnX2hhbmRsZV93cml0ZSk7CiAgIExPQURfRExMX0ZO IChsaWJyYXJ5LCByc3ZnX2hhbmRsZV9jbG9zZSk7Ci0gIExPQURfRExMX0ZOIChsaWJyYXJ5LCBy c3ZnX2hhbmRsZV9nZXRfcGl4YnVmKTsKICAgTE9BRF9ETExfRk4gKGxpYnJhcnksIHJzdmdfaGFu ZGxlX3NldF9iYXNlX3VyaSk7Ci0KLSAgTE9BRF9ETExfRk4gKGdka2xpYiwgZ2RrX3BpeGJ1Zl9n ZXRfd2lkdGgpOwotICBMT0FEX0RMTF9GTiAoZ2RrbGliLCBnZGtfcGl4YnVmX2dldF9oZWlnaHQp OwotICBMT0FEX0RMTF9GTiAoZ2RrbGliLCBnZGtfcGl4YnVmX2dldF9waXhlbHMpOwotICBMT0FE X0RMTF9GTiAoZ2RrbGliLCBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUpOwotICBMT0FEX0RMTF9G TiAoZ2RrbGliLCBnZGtfcGl4YnVmX2dldF9jb2xvcnNwYWNlKTsKLSAgTE9BRF9ETExfRk4gKGdk a2xpYiwgZ2RrX3BpeGJ1Zl9nZXRfbl9jaGFubmVscyk7Ci0gIExPQURfRExMX0ZOIChnZGtsaWIs IGdka19waXhidWZfZ2V0X2hhc19hbHBoYSk7Ci0gIExPQURfRExMX0ZOIChnZGtsaWIsIGdka19w aXhidWZfZ2V0X2JpdHNfcGVyX3NhbXBsZSk7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCByc3Zn X2hhbmRsZV9yZW5kZXJfY2Fpcm8pOworCisgIExPQURfRExMX0ZOIChjYWlybywgY2Fpcm9faW1h Z2Vfc3VyZmFjZV9jcmVhdGUpOworICBMT0FEX0RMTF9GTiAoY2Fpcm8sIGNhaXJvX3N1cmZhY2Vf c3RhdHVzKTsKKyAgTE9BRF9ETExfRk4gKGNhaXJvLCBjYWlyb19jcmVhdGUpOworICBMT0FEX0RM TF9GTiAoY2Fpcm8sIGNhaXJvX3NldF9zb3VyY2VfcmdiKTsKKyAgTE9BRF9ETExfRk4gKGNhaXJv LCBjYWlyb19wYWludCk7CisgIExPQURfRExMX0ZOIChjYWlybywgY2Fpcm9fZGVzdHJveSk7Cisg IExPQURfRExMX0ZOIChjYWlybywgY2Fpcm9fc3VyZmFjZV9mbHVzaCk7CisgIExPQURfRExMX0ZO IChjYWlybywgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSk7CisgIExPQURfRExMX0ZOIChj YWlybywgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKTsKKyAgTE9BRF9ETExfRk4gKGNh aXJvLCBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpOwogCiAjICBpZiAhIEdMSUJfQ0hFQ0tfVkVSU0lP TiAoMiwgMzYsIDApCiAgIExPQURfRExMX0ZOIChnb2JqZWN0LCBnX3R5cGVfaW5pdCk7CkBAIC05 NDQxLDMyICs5NDQ2LDM2IEBAIGluaXRfc3ZnX2Z1bmN0aW9ucyAodm9pZCkKIC8qIFRoZSBmb2xs b3dpbmcgYWxpYXNlcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMgYWxsb3cgZHluYW1pYyBsb2FkaW5n CiAgICB0byBiZSB1c2VkIG9uIHNvbWUgcGxhdGZvcm1zLiAgKi8KIAotIyAgdW5kZWYgZ2RrX3Bp eGJ1Zl9nZXRfYml0c19wZXJfc2FtcGxlCi0jICB1bmRlZiBnZGtfcGl4YnVmX2dldF9jb2xvcnNw YWNlCi0jICB1bmRlZiBnZGtfcGl4YnVmX2dldF9oYXNfYWxwaGEKLSMgIHVuZGVmIGdka19waXhi dWZfZ2V0X2hlaWdodAotIyAgdW5kZWYgZ2RrX3BpeGJ1Zl9nZXRfbl9jaGFubmVscwotIyAgdW5k ZWYgZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzCi0jICB1bmRlZiBnZGtfcGl4YnVmX2dldF9yb3dzdHJp ZGUKLSMgIHVuZGVmIGdka19waXhidWZfZ2V0X3dpZHRoCisjICB1bmRlZiBjYWlyb19jcmVhdGUK KyMgIHVuZGVmIGNhaXJvX2Rlc3Ryb3kKKyMgIHVuZGVmIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl YXRlCisjICB1bmRlZiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhCisjICB1bmRlZiBjYWly b19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUKKyMgIHVuZGVmIGNhaXJvX3BhaW50CisjICB1bmRl ZiBjYWlyb19zZXRfc291cmNlX3JnYgorIyAgdW5kZWYgY2Fpcm9fc3VyZmFjZV9kZXN0cm95Cisj ICB1bmRlZiBjYWlyb19zdXJmYWNlX2ZsdXNoCisjICB1bmRlZiBjYWlyb19zdXJmYWNlX3N0YXR1 cwogIyAgdW5kZWYgZ19jbGVhcl9lcnJvcgogIyAgdW5kZWYgZ19vYmplY3RfdW5yZWYKICMgIHVu ZGVmIGdfdHlwZV9pbml0CiAjICB1bmRlZiByc3ZnX2hhbmRsZV9jbG9zZQogIyAgdW5kZWYgcnN2 Z19oYW5kbGVfZ2V0X2RpbWVuc2lvbnMKLSMgIHVuZGVmIHJzdmdfaGFuZGxlX2dldF9waXhidWYK ICMgIHVuZGVmIHJzdmdfaGFuZGxlX25ldworIyAgdW5kZWYgcnN2Z19oYW5kbGVfcmVuZGVyX2Nh aXJvCiAjICB1bmRlZiByc3ZnX2hhbmRsZV9zZXRfYmFzZV91cmkKICMgIHVuZGVmIHJzdmdfaGFu ZGxlX3dyaXRlCiAKLSMgIGRlZmluZSBnZGtfcGl4YnVmX2dldF9iaXRzX3Blcl9zYW1wbGUgZm5f Z2RrX3BpeGJ1Zl9nZXRfYml0c19wZXJfc2FtcGxlCi0jICBkZWZpbmUgZ2RrX3BpeGJ1Zl9nZXRf Y29sb3JzcGFjZSBmbl9nZGtfcGl4YnVmX2dldF9jb2xvcnNwYWNlCi0jICBkZWZpbmUgZ2RrX3Bp eGJ1Zl9nZXRfaGFzX2FscGhhIGZuX2dka19waXhidWZfZ2V0X2hhc19hbHBoYQotIyAgZGVmaW5l IGdka19waXhidWZfZ2V0X2hlaWdodCBmbl9nZGtfcGl4YnVmX2dldF9oZWlnaHQKLSMgIGRlZmlu ZSBnZGtfcGl4YnVmX2dldF9uX2NoYW5uZWxzIGZuX2dka19waXhidWZfZ2V0X25fY2hhbm5lbHMK LSMgIGRlZmluZSBnZGtfcGl4YnVmX2dldF9waXhlbHMgZm5fZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxz Ci0jICBkZWZpbmUgZ2RrX3BpeGJ1Zl9nZXRfcm93c3RyaWRlIGZuX2dka19waXhidWZfZ2V0X3Jv d3N0cmlkZQotIyAgZGVmaW5lIGdka19waXhidWZfZ2V0X3dpZHRoIGZuX2dka19waXhidWZfZ2V0 X3dpZHRoCisjICBkZWZpbmUgY2Fpcm9fY3JlYXRlIGZuX2NhaXJvX2NyZWF0ZQorIyAgZGVmaW5l IGNhaXJvX2Rlc3Ryb3kgZm5fY2Fpcm9fZGVzdHJveQorIyAgZGVmaW5lIGNhaXJvX2ltYWdlX3N1 cmZhY2VfY3JlYXRlIGZuX2NhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlCisjICBkZWZpbmUgY2Fp cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSBmbl9jYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh CisjICBkZWZpbmUgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlIGZuX2NhaXJvX2ltYWdl X3N1cmZhY2VfZ2V0X3N0cmlkZQorIyAgZGVmaW5lIGNhaXJvX3BhaW50IGZuX2NhaXJvX3BhaW50 CisjICBkZWZpbmUgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IgZm5fY2Fpcm9fc2V0X3NvdXJjZV9yZ2IK KyMgIGRlZmluZSBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kgZm5fY2Fpcm9fc3VyZmFjZV9kZXN0cm95 CisjICBkZWZpbmUgY2Fpcm9fc3VyZmFjZV9mbHVzaCBmbl9jYWlyb19zdXJmYWNlX2ZsdXNoCisj ICBkZWZpbmUgY2Fpcm9fc3VyZmFjZV9zdGF0dXMgZm5fY2Fpcm9fc3VyZmFjZV9zdGF0dXMKICMg IGRlZmluZSBnX2NsZWFyX2Vycm9yIGZuX2dfY2xlYXJfZXJyb3IKICMgIGRlZmluZSBnX29iamVj dF91bnJlZiBmbl9nX29iamVjdF91bnJlZgogIyAgaWYgISBHTElCX0NIRUNLX1ZFUlNJT04gKDIs IDM2LCAwKQpAQCAtOTQ3NCw4ICs5NDgzLDggQEAgaW5pdF9zdmdfZnVuY3Rpb25zICh2b2lkKQog IyAgZW5kaWYKICMgIGRlZmluZSByc3ZnX2hhbmRsZV9jbG9zZSBmbl9yc3ZnX2hhbmRsZV9jbG9z ZQogIyAgZGVmaW5lIHJzdmdfaGFuZGxlX2dldF9kaW1lbnNpb25zIGZuX3JzdmdfaGFuZGxlX2dl dF9kaW1lbnNpb25zCi0jICBkZWZpbmUgcnN2Z19oYW5kbGVfZ2V0X3BpeGJ1ZiBmbl9yc3ZnX2hh bmRsZV9nZXRfcGl4YnVmCiAjICBkZWZpbmUgcnN2Z19oYW5kbGVfbmV3IGZuX3JzdmdfaGFuZGxl X25ldworIyAgZGVmaW5lIHJzdmdfaGFuZGxlX3JlbmRlcl9jYWlybyBmbl9yc3ZnX2hhbmRsZV9y ZW5kZXJfY2Fpcm8KICMgIGRlZmluZSByc3ZnX2hhbmRsZV9zZXRfYmFzZV91cmkgZm5fcnN2Z19o YW5kbGVfc2V0X2Jhc2VfdXJpCiAjICBkZWZpbmUgcnN2Z19oYW5kbGVfd3JpdGUgZm5fcnN2Z19o YW5kbGVfd3JpdGUKIApAQCAtOTU1MCwxMSArOTU1OSw2IEBAIHN2Z19sb2FkX2ltYWdlIChzdHJ1 Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpjb250ZW50cywKICAgUnN2Z0hh bmRsZSAqcnN2Z19oYW5kbGU7CiAgIFJzdmdEaW1lbnNpb25EYXRhIGRpbWVuc2lvbl9kYXRhOwog ICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdka1BpeGJ1ZiAqcGl4YnVmOwotICBpbnQgd2lkdGg7 Ci0gIGludCBoZWlnaHQ7Ci0gIGNvbnN0IGd1aW50OCAqcGl4ZWxzOwotICBpbnQgcm93c3RyaWRl OwogCiAjaWYgISBHTElCX0NIRUNLX1ZFUlNJT04gKDIsIDM2LCAwKQogICAvKiBnX3R5cGVfaW5p dCBpcyBhIGdsaWIgZnVuY3Rpb24gdGhhdCBtdXN0IGJlIGNhbGxlZCBwcmlvciB0bwpAQCAtOTU5 NiwxMDQgKzk2MDAsOTIgQEAgc3ZnX2xvYWRfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0 IGltYWdlICppbWcsIGNoYXIgKmNvbnRlbnRzLAogICAjZW5kaWYKIAogICByc3ZnX2hhbmRsZV9n ZXRfZGltZW5zaW9ucyAocnN2Z19oYW5kbGUsICZkaW1lbnNpb25fZGF0YSk7Ci0gIGlmICghIGNo ZWNrX2ltYWdlX3NpemUgKGYsIGRpbWVuc2lvbl9kYXRhLndpZHRoLCBkaW1lbnNpb25fZGF0YS5o ZWlnaHQpKQorICBpbnQgd2lkdGggPSBkaW1lbnNpb25fZGF0YS53aWR0aCwgaGVpZ2h0ID0gZGlt ZW5zaW9uX2RhdGEuaGVpZ2h0OworICBpZiAoISBjaGVja19pbWFnZV9zaXplIChmLCB3aWR0aCwg aGVpZ2h0KSkKICAgICB7CiAgICAgICBpbWFnZV9zaXplX2Vycm9yICgpOwogICAgICAgZ290byBy c3ZnX2Vycm9yOwogICAgIH0KIAotICAvKiBXZSBjYW4gbm93IGdldCBhIHZhbGlkIHBpeGVsIGJ1 ZmZlciBmcm9tIHRoZSBzdmcgZmlsZSwgaWYgYWxsCi0gICAgIHdlbnQgb2suICAqLwotICBwaXhi dWYgPSByc3ZnX2hhbmRsZV9nZXRfcGl4YnVmIChyc3ZnX2hhbmRsZSk7Ci0gIGlmICghcGl4YnVm KSBnb3RvIHJzdmdfZXJyb3I7Ci0gIGdfb2JqZWN0X3VucmVmIChyc3ZnX2hhbmRsZSk7Ci0KLSAg LyogRXh0cmFjdCBzb21lIG1ldGEgZGF0YSBmcm9tIHRoZSBzdmcgaGFuZGxlLiAgKi8KLSAgd2lk dGggICAgID0gZ2RrX3BpeGJ1Zl9nZXRfd2lkdGggKHBpeGJ1Zik7Ci0gIGhlaWdodCAgICA9IGdk a19waXhidWZfZ2V0X2hlaWdodCAocGl4YnVmKTsKLSAgcGl4ZWxzICAgID0gZ2RrX3BpeGJ1Zl9n ZXRfcGl4ZWxzIChwaXhidWYpOwotICByb3dzdHJpZGUgPSBnZGtfcGl4YnVmX2dldF9yb3dzdHJp ZGUgKHBpeGJ1Zik7Ci0KLSAgLyogVmFsaWRhdGUgdGhlIHN2ZyBtZXRhIGRhdGEuICAqLwotICBl YXNzZXJ0IChnZGtfcGl4YnVmX2dldF9jb2xvcnNwYWNlIChwaXhidWYpID09IEdES19DT0xPUlNQ QUNFX1JHQik7Ci0gIGVhc3NlcnQgKGdka19waXhidWZfZ2V0X25fY2hhbm5lbHMgKHBpeGJ1Zikg PT0gNCk7Ci0gIGVhc3NlcnQgKGdka19waXhidWZfZ2V0X2hhc19hbHBoYSAocGl4YnVmKSk7Ci0g IGVhc3NlcnQgKGdka19waXhidWZfZ2V0X2JpdHNfcGVyX3NhbXBsZSAocGl4YnVmKSA9PSA4KTsK KyAgLyogVHJ5IHRvIGNyZWF0ZSBhIHggcGl4bWFwIHRvIGhvbGQgdGhlIHN2ZyBwaXhtYXAuICAq LworICBFbWFjc19QaXhfQ29udGFpbmVyIHhpbWc7CisgIGlmICghaW1hZ2VfY3JlYXRlX3hfaW1h Z2VfYW5kX3BpeG1hcCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAwLCAmeGltZywgMCkpCisgICAg eworICAgICAgZ19vYmplY3RfdW5yZWYgKHJzdmdfaGFuZGxlKTsKKyAgICAgIHJldHVybiAwOwor ICAgIH0KIAotICB7Ci0gICAgLyogVHJ5IHRvIGNyZWF0ZSBhIHggcGl4bWFwIHRvIGhvbGQgdGhl IHN2ZyBwaXhtYXAuICAqLwotICAgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZzsKLSAgICBpZiAo IWltYWdlX2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwg MCwgJnhpbWcsIDApKQotICAgICAgewotCWdfb2JqZWN0X3VucmVmIChwaXhidWYpOwotCXJldHVy biAwOwotICAgICAgfQorICBpbml0X2NvbG9yX3RhYmxlICgpOwogCi0gICAgaW5pdF9jb2xvcl90 YWJsZSAoKTsKKyAgLyogSGFuZGxlIGFscGhhIGNoYW5uZWwgYnkgY29tYmluaW5nIHRoZSBpbWFn ZSB3aXRoIGEgYmFja2dyb3VuZAorICAgICBjb2xvci4gICovCisgIEVtYWNzX0NvbG9yIGJhY2tn cm91bmQ7CisgIExpc3BfT2JqZWN0IHNwZWNpZmllZF9iZyA9IGltYWdlX3NwZWNfdmFsdWUgKGlt Zy0+c3BlYywgUUNiYWNrZ3JvdW5kLCBOVUxMKTsKKyAgaWYgKCFTVFJJTkdQIChzcGVjaWZpZWRf YmcpCisgICAgICB8fCAhRlJBTUVfVEVSTUlOQUwgKGYpLT5kZWZpbmVkX2NvbG9yX2hvb2sgKGYs CisJCQkJCQkgIFNTREFUQSAoc3BlY2lmaWVkX2JnKSwKKwkJCQkJCSAgJmJhY2tncm91bmQsCisJ CQkJCQkgIGZhbHNlLAorCQkJCQkJICBmYWxzZSkpCisgICAgRlJBTUVfVEVSTUlOQUwgKGYpLT5x dWVyeV9mcmFtZV9iYWNrZ3JvdW5kX2NvbG9yIChmLCAmYmFja2dyb3VuZCk7CiAKLSAgICAvKiBI YW5kbGUgYWxwaGEgY2hhbm5lbCBieSBjb21iaW5pbmcgdGhlIGltYWdlIHdpdGggYSBiYWNrZ3Jv dW5kCi0gICAgICAgY29sb3IuICAqLwotICAgIEVtYWNzX0NvbG9yIGJhY2tncm91bmQ7Ci0gICAg TGlzcF9PYmplY3Qgc3BlY2lmaWVkX2JnID0gaW1hZ2Vfc3BlY192YWx1ZSAoaW1nLT5zcGVjLCBR Q2JhY2tncm91bmQsIE5VTEwpOwotICAgIGlmICghU1RSSU5HUCAoc3BlY2lmaWVkX2JnKQotCXx8 ICFGUkFNRV9URVJNSU5BTCAoZiktPmRlZmluZWRfY29sb3JfaG9vayAoZiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0RBVEEgKHNwZWNpZmll ZF9iZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmJhY2tncm91bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmFsc2UpKQotICAgICAgRlJBTUVfVEVSTUlOQUwgKGYpLT5xdWVyeV9m cmFtZV9iYWNrZ3JvdW5kX2NvbG9yIChmLCAmYmFja2dyb3VuZCk7Ci0KLSAgICAvKiBTVkcgcGl4 bWFwcyBzcGVjaWZ5IHRyYW5zcGFyZW5jeSBpbiB0aGUgbGFzdCBieXRlLCBzbyByaWdodAotICAg ICAgIHNoaWZ0IDggYml0cyB0byBnZXQgcmlkIG9mIGl0LCBzaW5jZSBlbWFjcyBkb2Vzbid0IHN1 cHBvcnQKLSAgICAgICB0cmFuc3BhcmVuY3kuICAqLwotICAgIGJhY2tncm91bmQucmVkICAgPj49 IDg7Ci0gICAgYmFja2dyb3VuZC5ncmVlbiA+Pj0gODsKLSAgICBiYWNrZ3JvdW5kLmJsdWUgID4+ PSA4OwotCi0gICAgLyogVGhpcyBsb29wIGhhbmRsZXMgb3BhY2l0eSB2YWx1ZXMsIHNpbmNlIEVt YWNzIGFzc3VtZXMKLSAgICAgICBub24tdHJhbnNwYXJlbnQgaW1hZ2VzLiAgRWFjaCBwaXhlbCBt dXN0IGJlICJmbGF0dGVuZWQiIGJ5Ci0gICAgICAgY2FsY3VsYXRpbmcgdGhlIHJlc3VsdGluZyBj b2xvciwgZ2l2ZW4gdGhlIHRyYW5zcGFyZW5jeSBvZiB0aGUKLSAgICAgICBwaXhlbCwgYW5kIHRo ZSBpbWFnZSBiYWNrZ3JvdW5kIGNvbG9yLiAgKi8KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhl aWdodDsgKyt5KQotICAgICAgewotCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkKLQkg IHsKLQkgICAgaW50IHJlZCAgICAgPSAqcGl4ZWxzKys7Ci0JICAgIGludCBncmVlbiAgID0gKnBp eGVscysrOwotCSAgICBpbnQgYmx1ZSAgICA9ICpwaXhlbHMrKzsKLQkgICAgaW50IG9wYWNpdHkg PSAqcGl4ZWxzKys7Ci0KLQkgICAgcmVkICAgPSAoKHJlZCAqIG9wYWNpdHkpCi0JCSAgICAgKyAo YmFja2dyb3VuZC5yZWQgKiAoKDEgPDwgOCkgLSBvcGFjaXR5KSkpOwotCSAgICBncmVlbiA9ICgo Z3JlZW4gKiBvcGFjaXR5KQotCQkgICAgICsgKGJhY2tncm91bmQuZ3JlZW4gKiAoKDEgPDwgOCkg LSBvcGFjaXR5KSkpOwotCSAgICBibHVlICA9ICgoYmx1ZSAqIG9wYWNpdHkpCi0JCSAgICAgKyAo YmFja2dyb3VuZC5ibHVlICogKCgxIDw8IDgpIC0gb3BhY2l0eSkpKTsKLQotCSAgICBQVVRfUElY RUwgKHhpbWcsIHgsIHksIGxvb2t1cF9yZ2JfY29sb3IgKGYsIHJlZCwgZ3JlZW4sIGJsdWUpKTsK LQkgIH0KKyAgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOworI2lmZGVmIFVTRV9DQUlSTworICBz dXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEgKCh1bnNpZ25lZCBj aGFyICopIHhpbWctPmRhdGEsCisJCQkJCQkgQ0FJUk9fRk9STUFUX1JHQjI0LAorCQkJCQkJIHdp ZHRoLCBoZWlnaHQsCisJCQkJCQkgeGltZy0+Ynl0ZXNfcGVyX2xpbmUpOworI2Vsc2UKKyAgc3Vy ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlIChDQUlST19GT1JNQVRfUkdCMjQsIHdp ZHRoLCBoZWlnaHQpOworI2VuZGlmCisgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyAoc3VyZmFj ZSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCisgICAgZ290byByc3ZnX2Vycm9yOworICBjYWly b190ICpjciA9IGNhaXJvX2NyZWF0ZSAoc3VyZmFjZSk7CisgIGNhaXJvX3NldF9zb3VyY2Vfcmdi IChjciwgYmFja2dyb3VuZC5yZWQgLyA2NTUzNS4wLAorCQkJYmFja2dyb3VuZC5ncmVlbiAvIDY1 NTM1LjAsCisJCQliYWNrZ3JvdW5kLmJsdWUgLyA2NTUzNS4wKTsKKyAgY2Fpcm9fcGFpbnQgKGNy KTsKKyAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IgKGNyLCAwLjAsIDAuMCwgMC4wKTsKKyAgcnN2Z19o YW5kbGVfcmVuZGVyX2NhaXJvIChyc3ZnX2hhbmRsZSwgY3IpOworICBjYWlyb19kZXN0cm95IChj cik7CisgIGdfb2JqZWN0X3VucmVmIChyc3ZnX2hhbmRsZSk7CiAKLQlwaXhlbHMgKz0gcm93c3Ry aWRlIC0gNCAqIHdpZHRoOwotICAgICAgfQorICBjYWlyb19zdXJmYWNlX2ZsdXNoIChzdXJmYWNl KTsKKyNpZm5kZWYgVVNFX0NBSVJPCisgIHVuc2lnbmVkIGNoYXIgKmRhdGEgPSBjYWlyb19pbWFn ZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsKKyAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdl X3N1cmZhY2VfZ2V0X3N0cmlkZSAoc3VyZmFjZSk7CisgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVp Z2h0OyArK3kpCisgICAgeworICAgICAgZ3VpbnQzMiAqcGl4ZWxzID0gKGd1aW50MzIgKikgZGF0 YTsKKyAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkKKwl7CisJICBndWludDMy IHJnYiA9ICpwaXhlbHMrKzsKKwkgIGludCByZWQgICA9ICgocmdiID4+IDE2KSAmIDB4ZmYpICog MHgxMDE7CisJICBpbnQgZ3JlZW4gPSAoKHJnYiA+PiA4KSAmIDB4ZmYpICogMHgxMDE7CisJICBp bnQgYmx1ZSAgPSAocmdiICYgMHhmZikgKiAweDEwMTsKKwkgIFBVVF9QSVhFTCAoeGltZywgeCwg eSwgbG9va3VwX3JnYl9jb2xvciAoZiwgcmVkLCBncmVlbiwgYmx1ZSkpOworCX0KKyAgICAgIGRh dGEgKz0gc3RyaWRlOworICAgIH0KKyNlbmRpZgkvKiAhVVNFX0NBSVJPICovCiAKICNpZmRlZiBD T0xPUl9UQUJMRV9TVVBQT1JUCi0gICAgLyogUmVtZW1iZXIgY29sb3JzIGFsbG9jYXRlZCBmb3Ig dGhpcyBpbWFnZS4gICovCi0gICAgaW1nLT5jb2xvcnMgPSBjb2xvcnNfaW5fY29sb3JfdGFibGUg KCZpbWctPm5jb2xvcnMpOwotICAgIGZyZWVfY29sb3JfdGFibGUgKCk7CisgIC8qIFJlbWVtYmVy IGNvbG9ycyBhbGxvY2F0ZWQgZm9yIHRoaXMgaW1hZ2UuICAqLworICBpbWctPmNvbG9ycyA9IGNv bG9yc19pbl9jb2xvcl90YWJsZSAoJmltZy0+bmNvbG9ycyk7CisgIGZyZWVfY29sb3JfdGFibGUg KCk7CiAjZW5kaWYgLyogQ09MT1JfVEFCTEVfU1VQUE9SVCAqLwogCi0gICAgZ19vYmplY3RfdW5y ZWYgKHBpeGJ1Zik7CisgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSAoc3VyZmFjZSk7CiAKLSAgICBp bWctPndpZHRoICA9IHdpZHRoOwotICAgIGltZy0+aGVpZ2h0ID0gaGVpZ2h0OworICBpbWctPndp ZHRoICA9IHdpZHRoOworICBpbWctPmhlaWdodCA9IGhlaWdodDsKIAotICAgIC8qIE1heWJlIGZp bGwgaW4gdGhlIGJhY2tncm91bmQgZmllbGQgd2hpbGUgd2UgaGF2ZSB4aW1nIGhhbmR5LgotICAg ICAgIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAqLwotICAgIElNQUdFX0JBQ0tHUk9V TkQgKGltZywgZiwgKEVtYWNzX1BpeF9Db250ZXh0KXhpbWcpOworICAvKiBNYXliZSBmaWxsIGlu IHRoZSBiYWNrZ3JvdW5kIGZpZWxkIHdoaWxlIHdlIGhhdmUgeGltZyBoYW5keS4KKyAgICAgQ2Fz dGluZyBhdm9pZHMgYSBHQ0Mgd2FybmluZy4gICovCisgIElNQUdFX0JBQ0tHUk9VTkQgKGltZywg ZiwgKEVtYWNzX1BpeF9Db250ZXh0KXhpbWcpOwogCi0gICAgLyogUHV0IHhpbWcgaW50byB0aGUg aW1hZ2UuICAqLwotICAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwotICB9 CisgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KKyAgaW1hZ2VfcHV0X3hfaW1hZ2Ug KGYsIGltZywgeGltZywgMCk7CiAKICAgcmV0dXJuIDE7CiAKQEAgLTEwMjQ5LDcgKzEwMjQxLDcg QEAgbm9uLW51bWVyaWMsIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGxpbWl0IG9uIHRoZSBzaXplIG9m IGltYWdlcy4gICovKTsKICAgYWRkX2ltYWdlX3R5cGUgKFFzdmcpOwogI2lmZGVmIEhBVkVfTlRH VUkKICAgLyogT3RoZXIgbGlicmFyaWVzIHVzZWQgZGlyZWN0bHkgYnkgc3ZnIGNvZGUuICAqLwot ICBERUZTWU0gKFFnZGtfcGl4YnVmLCAiZ2RrLXBpeGJ1ZiIpOworICBERUZTWU0gKFFjYWlybywg ImNhaXJvIik7CiAgIERFRlNZTSAoUWdsaWIsICJnbGliIik7CiAgIERFRlNZTSAoUWdvYmplY3Qs ICJnb2JqZWN0Iik7CiAjZW5kaWYgLyogSEFWRV9OVEdVSSAgKi8K --Multipart_Thu_Jun_27_12:33:46_2019-1--