From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Fujii Hironori Newsgroups: gmane.emacs.bugs Subject: bug#19910: 24.4; Japanese font names are decoded incorrectly in Cygwin's emacs-w32 in LANG=ja_JP.UTF-8 Date: Sat, 28 Feb 2015 00:22:00 +0900 Message-ID: References: <83h9ugltg1.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c39ea813ce720510136e60 X-Trace: ger.gmane.org 1425050616 24280 80.91.229.3 (27 Feb 2015 15:23:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 27 Feb 2015 15:23:36 +0000 (UTC) Cc: 19910@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Feb 27 16:23:24 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YRMl4-0000a6-PI for geb-bug-gnu-emacs@m.gmane.org; Fri, 27 Feb 2015 16:23:19 +0100 Original-Received: from localhost ([::1]:37090 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YRMl4-0006Jy-47 for geb-bug-gnu-emacs@m.gmane.org; Fri, 27 Feb 2015 10:23:18 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43439) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YRMkt-00061d-MY for bug-gnu-emacs@gnu.org; Fri, 27 Feb 2015 10:23:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YRMko-0003Yj-Qw for bug-gnu-emacs@gnu.org; Fri, 27 Feb 2015 10:23:07 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:56516) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YRMko-0003Yf-NV for bug-gnu-emacs@gnu.org; Fri, 27 Feb 2015 10:23:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YRMko-0005AV-Eq for bug-gnu-emacs@gnu.org; Fri, 27 Feb 2015 10:23:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Fujii Hironori Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Feb 2015 15:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19910 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 19910-submit@debbugs.gnu.org id=B19910.142505053319795 (code B ref 19910); Fri, 27 Feb 2015 15:23:02 +0000 Original-Received: (at 19910) by debbugs.gnu.org; 27 Feb 2015 15:22:13 +0000 Original-Received: from localhost ([127.0.0.1]:60113 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YRMjz-00059B-0Y for submit@debbugs.gnu.org; Fri, 27 Feb 2015 10:22:12 -0500 Original-Received: from mail-lb0-f174.google.com ([209.85.217.174]:38224) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YRMju-00058j-Od for 19910@debbugs.gnu.org; Fri, 27 Feb 2015 10:22:08 -0500 Original-Received: by lbiz11 with SMTP id z11so17984477lbi.5 for <19910@debbugs.gnu.org>; Fri, 27 Feb 2015 07:22:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=N6hnlUmpMRsqp+aC1SHJwVP3A3HhOJzHY+0fV8V6jvA=; b=cCbzZnn4WMBymFUqDy5yn36QZWVCBJZSa3qs6cF6pS2b25ejWeBP5Th2lyclnfC9G2 G2L0RMvDh9vxnkWMSC6SMlvLn9Bs4eO/u27Ikps0guALqc1pU3KiywVzthCelH4e3gBL CnGYkN/4t+q5sJCOQIaBU23a6asQ+2zTi2dv3U5Hvrb0X/q3isnRp+UjT+cxbtkugh55 z1A9sTesYNP0CWNCFNWkb3VMy2ayh3BS/2P0Pnfluwirx++GpIu8zr4LTkJU9uiVeusw XRLNd76I0OdvQlnIDIiF8Aol118fUd73INRDjniZgeiL9rblIFjZfjNRIbxUvI6nXAk2 fwNQ== X-Received: by 10.112.12.98 with SMTP id x2mr13035339lbb.3.1425050520744; Fri, 27 Feb 2015 07:22:00 -0800 (PST) Original-Received: by 10.112.10.164 with HTTP; Fri, 27 Feb 2015 07:22:00 -0800 (PST) In-Reply-To: <83h9ugltg1.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:99870 Archived-At: --001a11c39ea813ce720510136e60 Content-Type: text/plain; charset=UTF-8 Tags: patch On Fri, Feb 20, 2015 at 8:21 PM, Eli Zaretskii wrote: > The problem is in w32font.c: it should call the "wide" (a.k.a. > "Unicode") APIs, and then decode strings using utf-16le, like we do in > w32fns.c with encoding strings we pass to w32 GUI APIs. Unicode API patch is attached. Could you review it? Should I use GetProcAddress for Windows 9x? --001a11c39ea813ce720510136e60 Content-Type: text/x-patch; charset=US-ASCII; name="font.patch" Content-Disposition: attachment; filename="font.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i6nq8wfp0 ZGlmZiAtLWdpdCBhL3NyYy93MzJmb250LmMgYi9zcmMvdzMyZm9udC5jCmluZGV4IDQyMmYwODIu LjYzMWNlY2YgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmb250LmMKKysrIGIvc3JjL3czMmZvbnQuYwpA QCAtMTksNiArMTksNyBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5j bHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4K ICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxjb21tZGxn Lmg+CkBAIC01NywzNyArNTgsMzcgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2RlZmluZSBKT0hBQl9DSEFS U0VUIDEzMAogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIGZpbGxfaW5fbG9nZm9udCAoc3RydWN0IGZy YW1lICosIExPR0ZPTlQgKiwgTGlzcF9PYmplY3QpOworc3RhdGljIHZvaWQgZmlsbF9pbl9sb2dm b250IChzdHJ1Y3QgZnJhbWUgKiwgTE9HRk9OVFcgKiwgTGlzcF9PYmplY3QpOwogCiBzdGF0aWMg QllURSB3MzJfYW50aWFsaWFzX3R5cGUgKExpc3BfT2JqZWN0KTsKIHN0YXRpYyBMaXNwX09iamVj dCBsaXNweV9hbnRpYWxpYXNfdHlwZSAoQllURSk7CiAKIHN0YXRpYyBMaXNwX09iamVjdCBmb250 X3N1cHBvcnRlZF9zY3JpcHRzIChGT05UU0lHTkFUVVJFICopOwotc3RhdGljIGludCB3MzJmb250 X2Z1bGxfbmFtZSAoTE9HRk9OVCAqLCBMaXNwX09iamVjdCwgaW50LCBjaGFyICosIGludCk7Citz dGF0aWMgaW50IHczMmZvbnRfZnVsbF9uYW1lIChMT0dGT05UVyAqLCBMaXNwX09iamVjdCwgaW50 LCB3Y2hhcl90ICosIGludCk7CiBzdGF0aWMgdm9pZCBjb21wdXRlX21ldHJpY3MgKEhEQywgc3Ry dWN0IHczMmZvbnRfaW5mbyAqLCB1bnNpZ25lZCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB3MzJfbWV0cmljX2NhY2hlICopOwogCiBzdGF0aWMgTGlzcF9PYmplY3Qg dzMyX3JlZ2lzdHJ5IChMT05HLCBEV09SRCk7CiAKLS8qIEVudW1Gb250RmFtaWxpZXNFeCBjYWxs YmFja3MuICAqLwotc3RhdGljIGludCBDQUxMQkFDSyBBTElHTl9TVEFDSyBhZGRfZm9udF9lbnRp dHlfdG9fbGlzdCAoRU5VTUxPR0ZPTlRFWCAqLAotCQkJCQkJCSBORVdURVhUTUVUUklDRVggKiwK Ky8qIEVudW1Gb250RmFtaWxpZXNFeFcgY2FsbGJhY2tzLiAgKi8KK3N0YXRpYyBpbnQgQ0FMTEJB Q0sgQUxJR05fU1RBQ0sgYWRkX2ZvbnRfZW50aXR5X3RvX2xpc3QgKEVOVU1MT0dGT05URVhXICos CisJCQkJCQkJIE5FV1RFWFRNRVRSSUNFWFcgKiwKIAkJCQkJCQkgRFdPUkQsIExQQVJBTSk7Ci1z dGF0aWMgaW50IENBTExCQUNLIEFMSUdOX1NUQUNLIGFkZF9vbmVfZm9udF9lbnRpdHlfdG9fbGlz dCAoRU5VTUxPR0ZPTlRFWCAqLAotCQkJCQkJCSAgICAgTkVXVEVYVE1FVFJJQ0VYICosCitzdGF0 aWMgaW50IENBTExCQUNLIEFMSUdOX1NUQUNLIGFkZF9vbmVfZm9udF9lbnRpdHlfdG9fbGlzdCAo RU5VTUxPR0ZPTlRFWFcgKiwKKwkJCQkJCQkgICAgIE5FV1RFWFRNRVRSSUNFWFcgKiwKIAkJCQkJ CQkgICAgIERXT1JELCBMUEFSQU0pOwotc3RhdGljIGludCBDQUxMQkFDSyBBTElHTl9TVEFDSyBh ZGRfZm9udF9uYW1lX3RvX2xpc3QgKEVOVU1MT0dGT05URVggKiwKLQkJCQkJCSAgICAgICBORVdU RVhUTUVUUklDRVggKiwKK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgQUxJR05fU1RBQ0sgYWRkX2ZvbnRf bmFtZV90b19saXN0IChFTlVNTE9HRk9OVEVYVyAqLAorCQkJCQkJICAgICAgIE5FV1RFWFRNRVRS SUNFWFcgKiwKIAkJCQkJCSAgICAgICBEV09SRCwgTFBBUkFNKTsKIAotLyogc3RydWN0IHBhc3Nl ZCBpbiBhcyBMUEFSQU0gYXJnIHRvIEVudW1Gb250RmFtaWxpZXNFeCwgZm9yIGtlZXBpbmcgdHJh Y2sKKy8qIHN0cnVjdCBwYXNzZWQgaW4gYXMgTFBBUkFNIGFyZyB0byBFbnVtRm9udEZhbWlsaWVz RXhXLCBmb3Iga2VlcGluZyB0cmFjawogICAgb2Ygd2hhdCB3ZSByZWFsbHkgd2FudC4gICovCiBz dHJ1Y3QgZm9udF9jYWxsYmFja19kYXRhCiB7Ci0gIC8qIFRoZSBsb2dmb250IHdlIGFyZSBtYXRj aGluZyBhZ2FpbnN0LiBFbnVtRm9udEZhbWlsaWVzRXggb25seSBtYXRjaGVzCisgIC8qIFRoZSBs b2dmb250IHdlIGFyZSBtYXRjaGluZyBhZ2FpbnN0LiBFbnVtRm9udEZhbWlsaWVzRXhXIG9ubHkg bWF0Y2hlcwogICAgICBmYWNlIG5hbWUgYW5kIGNoYXJzZXQsIHNvIHdlIG5lZWQgdG8gbWFudWFs bHkgbWF0Y2ggZXZlcnl0aGluZyBlbHNlCiAgICAgIGluIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4g ICovCi0gIExPR0ZPTlQgcGF0dGVybjsKKyAgTE9HRk9OVFcgcGF0dGVybjsKICAgLyogVGhlIG9y aWdpbmFsIGZvbnQgc3BlYyBvciBlbnRpdHkuICAqLwogICBMaXNwX09iamVjdCBvcmlnX2ZvbnRf c3BlYzsKICAgLyogVGhlIGZyYW1lIHRoZSBmb250IGlzIGJlaW5nIGxvYWRlZCBvbi4gICovCkBA IC05OCw3ICs5OSw3IEBAIHN0cnVjdCBmb250X2NhbGxiYWNrX2RhdGEKICAgYm9vbCBvcGVudHlw ZV9vbmx5OwogfTsKIAotLyogSGFuZGxlcyB0aGUgcHJvYmxlbSB0aGF0IEVudW1Gb250RmFtaWxp ZXNFeCB3aWxsIG5vdCByZXR1cm4gYWxsCisvKiBIYW5kbGVzIHRoZSBwcm9ibGVtIHRoYXQgRW51 bUZvbnRGYW1pbGllc0V4VyB3aWxsIG5vdCByZXR1cm4gYWxsCiAgICBzdHlsZSB2YXJpYXRpb25z IGlmIHRoZSBmb250IG5hbWUgaXMgbm90IHNwZWNpZmllZC4gICovCiBzdGF0aWMgdm9pZCBsaXN0 X2FsbF9tYXRjaGluZ19mb250cyAoc3RydWN0IGZvbnRfY2FsbGJhY2tfZGF0YSAqKTsKIApAQCAt MjM5LDkgKzI0MCw5IEBAIG1lbXFfbm9fcXVpdCAoTGlzcF9PYmplY3QgZWx0LCBMaXNwX09iamVj dCBsaXN0KQogfQogCiBMaXNwX09iamVjdAotaW50ZXJuX2ZvbnRfbmFtZSAoY2hhciAqIHN0cmlu ZykKK2ludGVybl9mb250X25hbWUgKHdjaGFyX3QgKiBzdHJpbmcpCiB7Ci0gIExpc3BfT2JqZWN0 IHN0ciA9IERFQ09ERV9TWVNURU0gKGJ1aWxkX3N0cmluZyAoc3RyaW5nKSk7CisgIExpc3BfT2Jq ZWN0IHN0ciA9IGZyb21fdW5pY29kZV9idWZmZXIgKHN0cmluZyk7CiAgIHB0cmRpZmZfdCBsZW4g PSBTQ0hBUlMgKHN0cik7CiAgIExpc3BfT2JqZWN0IG9iYXJyYXkgPSBjaGVja19vYmFycmF5IChW b2JhcnJheSk7CiAgIExpc3BfT2JqZWN0IHRlbSA9IG9ibG9va3VwIChvYmFycmF5LCBTREFUQSAo c3RyKSwgbGVuLCBsZW4pOwpAQCAtMjkxLDcgKzI5Miw3IEBAIHN0YXRpYyBMaXNwX09iamVjdAog dzMyZm9udF9saXN0X2ZhbWlseSAoc3RydWN0IGZyYW1lICpmKQogewogICBMaXNwX09iamVjdCBs aXN0ID0gUW5pbDsKLSAgTE9HRk9OVCBmb250X21hdGNoX3BhdHRlcm47CisgIExPR0ZPTlRXIGZv bnRfbWF0Y2hfcGF0dGVybjsKICAgSERDIGRjOwogCiAgIG1lbXNldCAoJmZvbnRfbWF0Y2hfcGF0 dGVybiwgMCwgc2l6ZW9mIChmb250X21hdGNoX3BhdHRlcm4pKTsKQEAgLTI5OSw5ICszMDAsOSBA QCB3MzJmb250X2xpc3RfZmFtaWx5IChzdHJ1Y3QgZnJhbWUgKmYpCiAKICAgZGMgPSBnZXRfZnJh bWVfZGMgKGYpOwogCi0gIEVudW1Gb250RmFtaWxpZXNFeCAoZGMsICZmb250X21hdGNoX3BhdHRl cm4sCi0gICAgICAgICAgICAgICAgICAgICAgKEZPTlRFTlVNUFJPQykgYWRkX2ZvbnRfbmFtZV90 b19saXN0LAotICAgICAgICAgICAgICAgICAgICAgIChMUEFSQU0pICZsaXN0LCAwKTsKKyAgRW51 bUZvbnRGYW1pbGllc0V4VyAoZGMsICZmb250X21hdGNoX3BhdHRlcm4sCisJCSAgICAgICAoRk9O VEVOVU1QUk9DVykgYWRkX2ZvbnRfbmFtZV90b19saXN0LAorCQkgICAgICAgKExQQVJBTSkgJmxp c3QsIDApOwogICByZWxlYXNlX2ZyYW1lX2RjIChmLCBkYyk7CiAKICAgcmV0dXJuIGxpc3Q7CkBA IC03NTYsNyArNzU3LDcgQEAgdzMyZm9udF9saXN0X2ludGVybmFsIChzdHJ1Y3QgZnJhbWUgKmYs IExpc3BfT2JqZWN0IGZvbnRfc3BlYywKICAgbWF0Y2hfZGF0YS5saXN0ID0gUW5pbDsKICAgWFNF VEZSQU1FIChtYXRjaF9kYXRhLmZyYW1lLCBmKTsKIAotICBtZW1zZXQgKCZtYXRjaF9kYXRhLnBh dHRlcm4sIDAsIHNpemVvZiAoTE9HRk9OVCkpOworICBtZW1zZXQgKCZtYXRjaF9kYXRhLnBhdHRl cm4sIDAsIHNpemVvZiAoTE9HRk9OVFcpKTsKICAgZmlsbF9pbl9sb2dmb250IChmLCAmbWF0Y2hf ZGF0YS5wYXR0ZXJuLCBmb250X3NwZWMpOwogCiAgIC8qIElmIHRoZSBjaGFyc2V0IGlzIHVucmVj b2duaXplZCwgdGhlbiB3ZSB3b24ndCBmaW5kIGEgZm9udCwgc28gZG9uJ3QKQEAgLTc3Niw5ICs3 NzcsOSBAQCB3MzJmb250X2xpc3RfaW50ZXJuYWwgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl Y3QgZm9udF9zcGVjLAogICBpZiAob3BlbnR5cGVfb25seSkKICAgICBtYXRjaF9kYXRhLnBhdHRl cm4ubGZPdXRQcmVjaXNpb24gPSBPVVRfT1VUTElORV9QUkVDSVM7CiAKLSAgaWYgKG1hdGNoX2Rh dGEucGF0dGVybi5sZkZhY2VOYW1lWzBdID09ICdcMCcpCisgIGlmIChtYXRjaF9kYXRhLnBhdHRl cm4ubGZGYWNlTmFtZVswXSA9PSBMJ1wwJykKICAgICB7Ci0gICAgICAvKiBFbnVtRm9udEZhbWls aWVzRXggZG9lcyBub3QgdGFrZSBvdGhlciBmaWVsZHMgaW50byBhY2NvdW50IGlmCisgICAgICAv KiBFbnVtRm9udEZhbWlsaWVzRXhXIGRvZXMgbm90IHRha2Ugb3RoZXIgZmllbGRzIGludG8gYWNj b3VudCBpZgogICAgICAgICAgZm9udCBuYW1lIGlzIGJsYW5rLCBzbyBuZWVkIHRvIHVzZSB0d28g cGFzc2VzLiAgKi8KICAgICAgIGxpc3RfYWxsX21hdGNoaW5nX2ZvbnRzICgmbWF0Y2hfZGF0YSk7 CiAgICAgfQpAQCAtNzg2LDkgKzc4Nyw5IEBAIHczMmZvbnRfbGlzdF9pbnRlcm5hbCAoc3RydWN0 IGZyYW1lICpmLCBMaXNwX09iamVjdCBmb250X3NwZWMsCiAgICAgewogICAgICAgZGMgPSBnZXRf ZnJhbWVfZGMgKGYpOwogCi0gICAgICBFbnVtRm9udEZhbWlsaWVzRXggKGRjLCAmbWF0Y2hfZGF0 YS5wYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoRk9OVEVOVU1QUk9DKSBhZGRf Zm9udF9lbnRpdHlfdG9fbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKExQQVJBTSkg Jm1hdGNoX2RhdGEsIDApOworICAgICAgRW51bUZvbnRGYW1pbGllc0V4VyAoZGMsICZtYXRjaF9k YXRhLnBhdHRlcm4sCisJCQkgICAoRk9OVEVOVU1QUk9DVykgYWRkX2ZvbnRfZW50aXR5X3RvX2xp c3QsCisJCQkgICAoTFBBUkFNKSAmbWF0Y2hfZGF0YSwgMCk7CiAgICAgICByZWxlYXNlX2ZyYW1l X2RjIChmLCBkYyk7CiAgICAgfQogCkBAIC04MDksNyArODEwLDcgQEAgdzMyZm9udF9tYXRjaF9p bnRlcm5hbCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBmb250X3NwZWMsCiAgIFhTRVRG UkFNRSAobWF0Y2hfZGF0YS5mcmFtZSwgZik7CiAgIG1hdGNoX2RhdGEubGlzdCA9IFFuaWw7CiAK LSAgbWVtc2V0ICgmbWF0Y2hfZGF0YS5wYXR0ZXJuLCAwLCBzaXplb2YgKExPR0ZPTlQpKTsKKyAg bWVtc2V0ICgmbWF0Y2hfZGF0YS5wYXR0ZXJuLCAwLCBzaXplb2YgKExPR0ZPTlRXKSk7CiAgIGZp bGxfaW5fbG9nZm9udCAoZiwgJm1hdGNoX2RhdGEucGF0dGVybiwgZm9udF9zcGVjKTsKIAogICBt YXRjaF9kYXRhLm9wZW50eXBlX29ubHkgPSBvcGVudHlwZV9vbmx5OwpAQCAtODE4LDkgKzgxOSw5 IEBAIHczMmZvbnRfbWF0Y2hfaW50ZXJuYWwgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qg Zm9udF9zcGVjLAogCiAgIGRjID0gZ2V0X2ZyYW1lX2RjIChmKTsKIAotICBFbnVtRm9udEZhbWls aWVzRXggKGRjLCAmbWF0Y2hfZGF0YS5wYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgIChG T05URU5VTVBST0MpIGFkZF9vbmVfZm9udF9lbnRpdHlfdG9fbGlzdCwKLSAgICAgICAgICAgICAg ICAgICAgICAoTFBBUkFNKSAmbWF0Y2hfZGF0YSwgMCk7CisgIEVudW1Gb250RmFtaWxpZXNFeFcg KGRjLCAmbWF0Y2hfZGF0YS5wYXR0ZXJuLAorCQkgICAgICAgKEZPTlRFTlVNUFJPQ1cpIGFkZF9v bmVfZm9udF9lbnRpdHlfdG9fbGlzdCwKKwkJICAgICAgIChMUEFSQU0pICZtYXRjaF9kYXRhLCAw KTsKICAgcmVsZWFzZV9mcmFtZV9kYyAoZiwgZGMpOwogCiAgIHJldHVybiBOSUxQIChtYXRjaF9k YXRhLmxpc3QpID8gUW5pbCA6IFhDQVIgKG1hdGNoX2RhdGEubGlzdCk7CkBAIC04MzEsNyArODMy LDcgQEAgdzMyZm9udF9vcGVuX2ludGVybmFsIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0 IGZvbnRfZW50aXR5LAogCQkgICAgICAgaW50IHBpeGVsX3NpemUsIExpc3BfT2JqZWN0IGZvbnRf b2JqZWN0KQogewogICBpbnQgbGVuLCBzaXplOwotICBMT0dGT05UIGxvZ2ZvbnQ7CisgIExPR0ZP TlRXIGxvZ2ZvbnQ7CiAgIEhEQyBkYzsKICAgSEZPTlQgaGZvbnQsIG9sZF9mb250OwogICBMaXNw X09iamVjdCB2YWw7CkBAIC04NTksNyArODYwLDcgQEAgdzMyZm9udF9vcGVuX2ludGVybmFsIChz dHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGZvbnRfZW50aXR5LAogICAgIHNpemUgPSBwaXhl bF9zaXplOwogCiAgIGxvZ2ZvbnQubGZIZWlnaHQgPSAtc2l6ZTsKLSAgaGZvbnQgPSBDcmVhdGVG b250SW5kaXJlY3QgKCZsb2dmb250KTsKKyAgaGZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3RXICgm bG9nZm9udCk7CiAKICAgaWYgKGhmb250ID09IE5VTEwpCiAgICAgcmV0dXJuIDA7CkBAIC04OTIs MjQgKzg5MywyNCBAQCB3MzJmb250X29wZW5faW50ZXJuYWwgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgZm9udF9lbnRpdHksCiAgIHczMl9mb250LT5oZm9udCA9IGhmb250OwogCiAgIHsK LSAgICBjaGFyICpuYW1lOworICAgIHdjaGFyX3QgKm5hbWU7CiAKICAgICAvKiBXZSBkb24ndCBr bm93IGhvdyBtdWNoIHNwYWNlIHdlIG5lZWQgZm9yIHRoZSBmdWxsIG5hbWUsIHNvIHN0YXJ0IHdp dGgKLSAgICAgICA5NiBieXRlcyBhbmQgZ28gdXAgaW4gc3RlcHMgb2YgMzIuICAqLworICAgICAg IDk2IGNoYXJhY3RlcnMgYW5kIGdvIHVwIGluIHN0ZXBzIG9mIDMyLiAgKi8KICAgICBsZW4gPSA5 NjsKLSAgICBuYW1lID0gYWxsb2NhIChsZW4pOworICAgIG5hbWUgPSBhbGxvY2EgKGxlbiAqIHNp emVvZiAod2NoYXJfdCkpOwogICAgIHdoaWxlIChuYW1lICYmIHczMmZvbnRfZnVsbF9uYW1lICgm bG9nZm9udCwgZm9udF9lbnRpdHksIHBpeGVsX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWUsIGxlbikgPCAwKQogICAgICAgewogICAgICAgICBsZW4gKz0g MzI7Ci0gICAgICAgIG5hbWUgPSBhbGxvY2EgKGxlbik7CisgICAgICAgIG5hbWUgPSBhbGxvY2Eg KGxlbiAqIHNpemVvZiAod2NoYXJfdCkpOwogICAgICAgfQogICAgIGlmIChuYW1lKQogICAgICAg Zm9udC0+cHJvcHNbRk9OVF9GVUxMTkFNRV9JTkRFWF0KLSAgICAgICAgPSBERUNPREVfU1lTVEVN IChidWlsZF9zdHJpbmcgKG5hbWUpKTsKKyAgICAgICAgPSBmcm9tX3VuaWNvZGVfYnVmZmVyIChu YW1lKTsKICAgICBlbHNlCiAgICAgICBmb250LT5wcm9wc1tGT05UX0ZVTExOQU1FX0lOREVYXQot CT0gREVDT0RFX1NZU1RFTSAoYnVpbGRfc3RyaW5nIChsb2dmb250LmxmRmFjZU5hbWUpKTsKKwk9 IGZyb21fdW5pY29kZV9idWZmZXIgKGxvZ2ZvbnQubGZGYWNlTmFtZSk7CiAgIH0KIAogICBmb250 LT5tYXhfd2lkdGggPSB3MzJfZm9udC0+bWV0cmljcy50bU1heENoYXJXaWR0aDsKQEAgLTk1NSwx OCArOTU2LDE4IEBAIHczMmZvbnRfb3Blbl9pbnRlcm5hbCAoc3RydWN0IGZyYW1lICpmLCBMaXNw X09iamVjdCBmb250X2VudGl0eSwKICAgcmV0dXJuIDE7CiB9CiAKLS8qIENhbGxiYWNrIGZ1bmN0 aW9uIGZvciBFbnVtRm9udEZhbWlsaWVzRXguCisvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgRW51 bUZvbnRGYW1pbGllc0V4Vy4KICAqIEFkZHMgdGhlIG5hbWUgb2YgYSBmb250IHRvIGEgTGlzcCBs aXN0IChwYXNzZWQgaW4gYXMgdGhlIGxQYXJhbSBhcmcpLiAgKi8KIHN0YXRpYyBpbnQgQ0FMTEJB Q0sgQUxJR05fU1RBQ0sKLWFkZF9mb250X25hbWVfdG9fbGlzdCAoRU5VTUxPR0ZPTlRFWCAqbG9n aWNhbF9mb250LAotCQkgICAgICAgTkVXVEVYVE1FVFJJQ0VYICpwaHlzaWNhbF9mb250LAorYWRk X2ZvbnRfbmFtZV90b19saXN0IChFTlVNTE9HRk9OVEVYVyAqbG9naWNhbF9mb250LAorCQkgICAg ICAgTkVXVEVYVE1FVFJJQ0VYVyAqcGh5c2ljYWxfZm9udCwKIAkJICAgICAgIERXT1JEIGZvbnRf dHlwZSwgTFBBUkFNIGxpc3Rfb2JqZWN0KQogewogICBMaXNwX09iamVjdCogbGlzdCA9IChMaXNw X09iamVjdCAqKSBsaXN0X29iamVjdDsKICAgTGlzcF9PYmplY3QgZmFtaWx5OwogCiAgIC8qIFNr aXAgdmVydGljYWwgZm9udHMgKGludGVuZGVkIG9ubHkgZm9yIHByaW50aW5nKSAgKi8KLSAgaWYg KGxvZ2ljYWxfZm9udC0+ZWxmTG9nRm9udC5sZkZhY2VOYW1lWzBdID09ICdAJykKKyAgaWYgKGxv Z2ljYWxfZm9udC0+ZWxmTG9nRm9udC5sZkZhY2VOYW1lWzBdID09IEwnQCcpCiAgICAgcmV0dXJu IDE7CiAKICAgZmFtaWx5ID0gaW50ZXJuX2ZvbnRfbmFtZSAobG9naWNhbF9mb250LT5lbGZMb2dG b250LmxmRmFjZU5hbWUpOwpAQCAtOTgyLDE0ICs5ODMsMTQgQEAgc3RhdGljIGludCB3MzJfZW5j b2RlX3dlaWdodCAoaW50KTsKIC8qIENvbnZlcnQgYW4gZW51bWVyYXRlZCBXaW5kb3dzIGZvbnQg dG8gYW4gRW1hY3MgZm9udCBlbnRpdHkuICAqLwogc3RhdGljIExpc3BfT2JqZWN0CiB3MzJfZW51 bWZvbnRfcGF0dGVybl9lbnRpdHkgKExpc3BfT2JqZWN0IGZyYW1lLAotCQkJICAgICBFTlVNTE9H Rk9OVEVYICpsb2dpY2FsX2ZvbnQsCi0JCQkgICAgIE5FV1RFWFRNRVRSSUNFWCAqcGh5c2ljYWxf Zm9udCwKKwkJCSAgICAgRU5VTUxPR0ZPTlRFWFcgKmxvZ2ljYWxfZm9udCwKKwkJCSAgICAgTkVX VEVYVE1FVFJJQ0VYVyAqcGh5c2ljYWxfZm9udCwKIAkJCSAgICAgRFdPUkQgZm9udF90eXBlLAot CQkJICAgICBMT0dGT05UICpyZXF1ZXN0ZWRfZm9udCwKKwkJCSAgICAgTE9HRk9OVFcgKnJlcXVl c3RlZF9mb250LAogCQkJICAgICBMaXNwX09iamVjdCBiYWNrZW5kKQogewogICBMaXNwX09iamVj dCBlbnRpdHksIHRlbTsKLSAgTE9HRk9OVCAqbGYgPSAoTE9HRk9OVCopIGxvZ2ljYWxfZm9udDsK KyAgTE9HRk9OVFcgKmxmID0gKExPR0ZPTlRXKikgbG9naWNhbF9mb250OwogICBCWVRFIGdlbmVy aWNfdHlwZTsKICAgRFdPUkQgZnVsbF90eXBlID0gcGh5c2ljYWxfZm9udC0+bnRtVG0ubnRtRmxh Z3M7CiAKQEAgLTExMTAsNyArMTExMSw3IEBAIHczMl9nZW5lcmljX2ZhbWlseSAoTGlzcF9PYmpl Y3QgbmFtZSkKIH0KIAogc3RhdGljIGludAotbG9nZm9udHNfbWF0Y2ggKExPR0ZPTlQgKmZvbnQs IExPR0ZPTlQgKnBhdHRlcm4pCitsb2dmb250c19tYXRjaCAoTE9HRk9OVFcgKmZvbnQsIExPR0ZP TlRXICpwYXR0ZXJuKQogewogICAvKiBPbmx5IGNoZWNrIGhlaWdodCBmb3IgcmFzdGVyIGZvbnRz LiAgKi8KICAgaWYgKHBhdHRlcm4tPmxmSGVpZ2h0ICYmIGZvbnQtPmxmT3V0UHJlY2lzaW9uID09 IE9VVF9TVFJJTkdfUFJFQ0lTCkBAIC0xMTM0LDkgKzExMzUsOSBAQCBsb2dmb250c19tYXRjaCAo TE9HRk9OVCAqZm9udCwgTE9HRk9OVCAqcGF0dGVybikKICNkZWZpbmUgQ1NCX0NISU5FU0UgKCgx IDw8IDE4KSB8ICgxIDw8IDIwKSkKIAogc3RhdGljIGludAotZm9udF9tYXRjaGVzX3NwZWMgKERX T1JEIHR5cGUsIE5FV1RFWFRNRVRSSUNFWCAqZm9udCwKK2ZvbnRfbWF0Y2hlc19zcGVjIChEV09S RCB0eXBlLCBORVdURVhUTUVUUklDRVhXICpmb250LAogCQkgICBMaXNwX09iamVjdCBzcGVjLCBM aXNwX09iamVjdCBiYWNrZW5kLAotCQkgICBMT0dGT05UICpsb2dmb250KQorCQkgICBMT0dGT05U VyAqbG9nZm9udCkKIHsKICAgTGlzcF9PYmplY3QgZXh0cmEsIHZhbDsKIApAQCAtMTM1NCwxNCAr MTM1NSwxNiBAQCB3MzJmb250X2NvdmVyYWdlX29rIChGT05UU0lHTkFUVVJFICogY292ZXJhZ2Us IEJZVEUgY2hhcnNldCkKICAgcmV0dXJuIDE7CiB9CiAKLSNpZm5kZWYgV0lORE9XU05UCi0jZGVm aW5lIF9zdHJsd3Igc3RybHdyCisjaWZkZWYgV0lORE9XU05UCisjZGVmaW5lIHh3Y3Nsd3IgX3dj c2x3cgorI2Vsc2UKKyNkZWZpbmUgeHdjc2x3ciBDaGFyTG93ZXJXCiAjZW5kaWYgLyogIVdJTkRP V1NOVCAqLwogCiBzdGF0aWMgaW50Ci1jaGVja19mYWNlX25hbWUgKExPR0ZPTlQgKmZvbnQsIGNo YXIgKmZ1bGxfbmFtZSkKK2NoZWNrX2ZhY2VfbmFtZSAoTE9HRk9OVFcgKmZvbnQsIHdjaGFyX3Qg KmZ1bGxfbmFtZSkKIHsKLSAgY2hhciBmdWxsX2luYW1lW0xGX0ZVTExGQUNFU0laRSsxXTsKKyAg d2NoYXJfdCBmdWxsX2luYW1lW0xGX0ZVTExGQUNFU0laRSsxXTsKIAogICAvKiBKdXN0IGNoZWNr IGZvciBuYW1lcyBrbm93biB0byBjYXVzZSBwcm9ibGVtcywgc2luY2UgdGhlIGZ1bGwgbmFtZQog ICAgICBjYW4gY29udGFpbiBleHBhbmRlZCBhYmJyZXZpYXRpb25zLCBwcmVmaXhlZCBmb3VuZHJ5 LCBwb3N0Zml4ZWQKQEAgLTEzNzMsMzkgKzEzNzYsMzkgQEAgY2hlY2tfZmFjZV9uYW1lIChMT0dG T05UICpmb250LCBjaGFyICpmdWxsX25hbWUpCiAgICAgIHRvIGF2b2lkIG5vbi10cnVldHlwZSBm b250cywgYW5kIGVuZHMgdXAgbWl4aW5nIHRoZSBUeXBlLTEgSGVsdmV0aWNhCiAgICAgIHdpdGgg QXJpYWwncyBjaGFyYWN0ZXJpc3RpY3MsIHNpbmNlIHRoYXQgYXR0ZW1wdCB0byB1c2UgVHJ1ZVR5 cGUgd29ya3MKICAgICAgc29tZSBwbGFjZXMsIGJ1dCBub3Qgb3RoZXJzLiAgKi8KLSAgaWYgKCF4 c3RyY2FzZWNtcCAoZm9udC0+bGZGYWNlTmFtZSwgImhlbHZldGljYSIpKQorICBpZiAoIWxzdHJj bXBpVyAoZm9udC0+bGZGYWNlTmFtZSwgTCJoZWx2ZXRpY2EiKSkKICAgICB7Ci0gICAgICBzdHJu Y3B5IChmdWxsX2luYW1lLCBmdWxsX25hbWUsIExGX0ZVTExGQUNFU0laRSk7CisgICAgICBsc3Ry Y3B5blcgKGZ1bGxfaW5hbWUsIGZ1bGxfbmFtZSwgTEZfRlVMTEZBQ0VTSVpFKTsKICAgICAgIGZ1 bGxfaW5hbWVbTEZfRlVMTEZBQ0VTSVpFXSA9IDA7Ci0gICAgICBfc3RybHdyIChmdWxsX2luYW1l KTsKLSAgICAgIHJldHVybiBzdHJzdHIgKCJoZWx2ZXRpY2EiLCBmdWxsX2luYW1lKSAhPSBOVUxM OworICAgICAgeHdjc2x3ciAoZnVsbF9pbmFtZSk7CisgICAgICByZXR1cm4gd2Nzc3RyIChMImhl bHZldGljYSIsIGZ1bGxfaW5hbWUpICE9IE5VTEw7CiAgICAgfQogICAvKiBTYW1lIGZvciBIZWx2 LiAgKi8KLSAgaWYgKCF4c3RyY2FzZWNtcCAoZm9udC0+bGZGYWNlTmFtZSwgImhlbHYiKSkKKyAg aWYgKCFsc3RyY21waVcgKGZvbnQtPmxmRmFjZU5hbWUsIEwiaGVsdiIpKQogICAgIHsKLSAgICAg IHN0cm5jcHkgKGZ1bGxfaW5hbWUsIGZ1bGxfbmFtZSwgTEZfRlVMTEZBQ0VTSVpFKTsKKyAgICAg IGxzdHJjcHluVyAoZnVsbF9pbmFtZSwgZnVsbF9uYW1lLCBMRl9GVUxMRkFDRVNJWkUpOwogICAg ICAgZnVsbF9pbmFtZVtMRl9GVUxMRkFDRVNJWkVdID0gMDsKLSAgICAgIF9zdHJsd3IgKGZ1bGxf aW5hbWUpOwotICAgICAgcmV0dXJuIHN0cnN0ciAoImhlbHYiLCBmdWxsX2luYW1lKSAhPSBOVUxM OworICAgICAgeHdjc2x3ciAoZnVsbF9pbmFtZSk7CisgICAgICByZXR1cm4gd2Nzc3RyIChMImhl bHYiLCBmdWxsX2luYW1lKSAhPSBOVUxMOwogICAgIH0KIAogICAvKiBTaW5jZSBUaW1lcyBpcyBt YXBwZWQgdG8gVGltZXMgTmV3IFJvbWFuLCBhIHN1YnN0cmluZwogICAgICBtYXRjaCBpcyBub3Qg c3VmZmljaWVudCB0byBmaWx0ZXIgb3V0IHRoZSBib2d1cyBtYXRjaC4gICovCi0gIGVsc2UgaWYg KCF4c3RyY2FzZWNtcCAoZm9udC0+bGZGYWNlTmFtZSwgInRpbWVzIikpCi0gICAgcmV0dXJuIHhz dHJjYXNlY21wIChmdWxsX25hbWUsICJ0aW1lcyIpID09IDA7CisgIGVsc2UgaWYgKCFsc3RyY21w aVcgKGZvbnQtPmxmRmFjZU5hbWUsIEwidGltZXMiKSkKKyAgICByZXR1cm4gbHN0cmNtcGlXIChm dWxsX25hbWUsIEwidGltZXMiKSA9PSAwOwogCiAgIHJldHVybiAxOwogfQogCiAKLS8qIENhbGxi YWNrIGZ1bmN0aW9uIGZvciBFbnVtRm9udEZhbWlsaWVzRXguCisvKiBDYWxsYmFjayBmdW5jdGlv biBmb3IgRW51bUZvbnRGYW1pbGllc0V4Vy4KICAqIENoZWNrcyBpZiBhIGZvbnQgbWF0Y2hlcyBl dmVyeXRoaW5nIHdlIGFyZSB0cnlpbmcgdG8gY2hlY2sgYWdhaW5zdCwKICAqIGFuZCBpZiBzbywg YWRkcyBpdCB0byBhIGxpc3QuIEJvdGggdGhlIGRhdGEgd2UgYXJlIGNoZWNraW5nIGFnYWluc3QK ICAqIGFuZCB0aGUgbGlzdCB0byB3aGljaCB0aGUgZm9udHMgYXJlIGFkZGVkIGFyZSBwYXNzZWQg aW4gdmlhIHRoZQogICogbHBhcmFtIGFyZ3VtZW50LCBpbiB0aGUgZm9ybSBvZiBhIGZvbnRfY2Fs bGJhY2tfZGF0YSBzdHJ1Y3QuICovCiBzdGF0aWMgaW50IENBTExCQUNLIEFMSUdOX1NUQUNLCi1h ZGRfZm9udF9lbnRpdHlfdG9fbGlzdCAoRU5VTUxPR0ZPTlRFWCAqbG9naWNhbF9mb250LAotCQkJ IE5FV1RFWFRNRVRSSUNFWCAqcGh5c2ljYWxfZm9udCwKK2FkZF9mb250X2VudGl0eV90b19saXN0 IChFTlVNTE9HRk9OVEVYVyAqbG9naWNhbF9mb250LAorCQkJIE5FV1RFWFRNRVRSSUNFWFcgKnBo eXNpY2FsX2ZvbnQsCiAJCQkgRFdPUkQgZm9udF90eXBlLCBMUEFSQU0gbFBhcmFtKQogewogICBz dHJ1Y3QgZm9udF9jYWxsYmFja19kYXRhICptYXRjaF9kYXRhCkBAIC0xNDQ1LDcgKzE0NDgsNyBA QCBhZGRfZm9udF9lbnRpdHlfdG9fbGlzdCAoRU5VTUxPR0ZPTlRFWCAqbG9naWNhbF9mb250LAog ICAgICBieSBhIGZvdW5kcnksIHdlIGFjY2VwdCByYXN0ZXIgZm9udHMgaWYgdGhlIGZvbnQgbmFt ZSBpcyBmb3VuZAogICAgICBhbnl3aGVyZSB3aXRoaW4gdGhlIGZ1bGwgbmFtZS4gICovCiAgIGlm ICgobG9naWNhbF9mb250LT5lbGZMb2dGb250LmxmT3V0UHJlY2lzaW9uID09IE9VVF9TVFJJTkdf UFJFQ0lTCi0gICAgICAgJiYgIXN0cnN0ciAobG9naWNhbF9mb250LT5lbGZGdWxsTmFtZSwKKyAg ICAgICAmJiAhd2Nzc3RyIChsb2dpY2FsX2ZvbnQtPmVsZkZ1bGxOYW1lLAogCQkgICBsb2dpY2Fs X2ZvbnQtPmVsZkxvZ0ZvbnQubGZGYWNlTmFtZSkpCiAgICAgICAvKiBDaGVjayBmb3Igd2VsbCBr bm93biBzdWJzdGl0dXRpb25zIHRoYXQgbWVzcyB0aGluZ3MgdXAgaW4gdGhlCiAJIHByZXNlbmNl IG9mIFR5cGUtMSBmb250cyBvZiB0aGUgc2FtZSBuYW1lLiAgKi8KQEAgLTE1MjAsMTEgKzE1MjMs MTEgQEAgYWRkX2ZvbnRfZW50aXR5X3RvX2xpc3QgKEVOVU1MT0dGT05URVggKmxvZ2ljYWxfZm9u dCwKICAgcmV0dXJuIDE7CiB9CiAKLS8qIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBFbnVtRm9udEZh bWlsaWVzRXguCisvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgRW51bUZvbnRGYW1pbGllc0V4Vy4K ICAqIFRlcm1pbmF0ZXMgdGhlIHNlYXJjaCBvbmNlIHdlIGhhdmUgYSBtYXRjaC4gKi8KIHN0YXRp YyBpbnQgQ0FMTEJBQ0sgQUxJR05fU1RBQ0sKLWFkZF9vbmVfZm9udF9lbnRpdHlfdG9fbGlzdCAo RU5VTUxPR0ZPTlRFWCAqbG9naWNhbF9mb250LAotCQkJICAgICBORVdURVhUTUVUUklDRVggKnBo eXNpY2FsX2ZvbnQsCithZGRfb25lX2ZvbnRfZW50aXR5X3RvX2xpc3QgKEVOVU1MT0dGT05URVhX ICpsb2dpY2FsX2ZvbnQsCisJCQkgICAgIE5FV1RFWFRNRVRSSUNFWFcgKnBoeXNpY2FsX2ZvbnQs CiAJCQkgICAgIERXT1JEIGZvbnRfdHlwZSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgc3RydWN0IGZv bnRfY2FsbGJhY2tfZGF0YSAqbWF0Y2hfZGF0YQpAQCAtMTg4MSw5ICsxODg0LDkgQEAgdzMyX3Rv X2ZjX3dlaWdodCAoaW50IG4pCiAgIHJldHVybiBRbGlnaHQ7CiB9CiAKLS8qIEZpbGwgaW4gYWxs IHRoZSBhdmFpbGFibGUgZGV0YWlscyBvZiBMT0dGT05UIGZyb20gRk9OVF9TUEVDLiAgKi8KKy8q IEZpbGwgaW4gYWxsIHRoZSBhdmFpbGFibGUgZGV0YWlscyBvZiBMT0dGT05UVyBmcm9tIEZPTlRf U1BFQy4gICovCiBzdGF0aWMgdm9pZAotZmlsbF9pbl9sb2dmb250IChzdHJ1Y3QgZnJhbWUgKmYs IExPR0ZPTlQgKmxvZ2ZvbnQsIExpc3BfT2JqZWN0IGZvbnRfc3BlYykKK2ZpbGxfaW5fbG9nZm9u dCAoc3RydWN0IGZyYW1lICpmLCBMT0dGT05UVyAqbG9nZm9udCwgTGlzcF9PYmplY3QgZm9udF9z cGVjKQogewogICBMaXNwX09iamVjdCB0bXAsIGV4dHJhOwogICBpbnQgZHBpID0gRlJBTUVfUkVT X1kgKGYpOwpAQCAtMTk1Myw5ICsxOTU2LDEwIEBAIGZpbGxfaW5fbG9nZm9udCAoc3RydWN0IGZy YW1lICpmLCBMT0dGT05UICpsb2dmb250LCBMaXNwX09iamVjdCBmb250X3NwZWMpCiAgICAgICAg ICAgIHVzZXIgaW5wdXQuICAqLwogICAgICAgZWxzZSBpZiAoU1lNQk9MUCAodG1wKSkKIAl7Ci0J ICBzdHJuY3B5IChsb2dmb250LT5sZkZhY2VOYW1lLAotCQkgICBTREFUQSAoRU5DT0RFX1NZU1RF TSAoU1lNQk9MX05BTUUgKHRtcCkpKSwgTEZfRkFDRVNJWkUpOwotCSAgbG9nZm9udC0+bGZGYWNl TmFtZVtMRl9GQUNFU0laRS0xXSA9ICdcMCc7CisJICBMaXNwX09iamVjdCB0OworCSAgd2NzbmNw eSAobG9nZm9udC0+bGZGYWNlTmFtZSwKKwkJICAgdG9fdW5pY29kZSAoU1lNQk9MX05BTUUgKHRt cCksICZ0KSwgTEZfRkFDRVNJWkUpOworCSAgbG9nZm9udC0+bGZGYWNlTmFtZVtMRl9GQUNFU0la RS0xXSA9IEwnXDAnOwogCX0KICAgICB9CiAKQEAgLTIwNDQsMjIgKzIwNDgsMjIgQEAgbGlzdF9h bGxfbWF0Y2hpbmdfZm9udHMgKHN0cnVjdCBmb250X2NhbGxiYWNrX2RhdGEgKm1hdGNoX2RhdGEp CiAJIG9uIFdpbmRvd3MsIHNvIHdlIGNhbiBrZWVwIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdp dGgKIAkgV2luZG93cyA5eC9NRSBieSB1c2luZyBub24tVW5pY29kZSBmb250IGVudW1lcmF0aW9u IHdpdGhvdXQKIAkgc2FjcmlmaWNpbmcgaW50ZXJuYXRpb25hbGl6YXRpb24gaGVyZS4gICovCi0g ICAgICBjaGFyICpuYW1lOwotICAgICAgTGlzcF9PYmplY3QgZmFtaWx5ID0gQ0FSIChmYW1pbGll cyk7CisgICAgICB3Y2hhcl90ICpuYW1lOworICAgICAgTGlzcF9PYmplY3QgZmFtaWx5ID0gQ0FS IChmYW1pbGllcyksIHQ7CiAgICAgICBmYW1pbGllcyA9IENEUiAoZmFtaWxpZXMpOwogICAgICAg aWYgKE5JTFAgKGZhbWlseSkpCiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgZWxzZSBpZiAoU1lN Qk9MUCAoZmFtaWx5KSkKLSAgICAgICAgbmFtZSA9IFNEQVRBIChFTkNPREVfU1lTVEVNIChTWU1C T0xfTkFNRSAoZmFtaWx5KSkpOworICAgICAgICBuYW1lID0gdG9fdW5pY29kZSAoU1lNQk9MX05B TUUgKGZhbWlseSksICZ0KTsKICAgICAgIGVsc2UKIAljb250aW51ZTsKIAotICAgICAgc3RybmNw eSAobWF0Y2hfZGF0YS0+cGF0dGVybi5sZkZhY2VOYW1lLCBuYW1lLCBMRl9GQUNFU0laRSk7Ci0g ICAgICBtYXRjaF9kYXRhLT5wYXR0ZXJuLmxmRmFjZU5hbWVbTEZfRkFDRVNJWkUgLSAxXSA9ICdc MCc7CisgICAgICB3Y3NuY3B5IChtYXRjaF9kYXRhLT5wYXR0ZXJuLmxmRmFjZU5hbWUsIG5hbWUs IExGX0ZBQ0VTSVpFKTsKKyAgICAgIG1hdGNoX2RhdGEtPnBhdHRlcm4ubGZGYWNlTmFtZVtMRl9G QUNFU0laRSAtIDFdID0gTCdcMCc7CiAKLSAgICAgIEVudW1Gb250RmFtaWxpZXNFeCAoZGMsICZt YXRjaF9kYXRhLT5wYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoRk9OVEVOVU1Q Uk9DKSBhZGRfZm9udF9lbnRpdHlfdG9fbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg KExQQVJBTSkgbWF0Y2hfZGF0YSwgMCk7CisgICAgICBFbnVtRm9udEZhbWlsaWVzRXhXIChkYywg Jm1hdGNoX2RhdGEtPnBhdHRlcm4sCisJCQkgICAoRk9OVEVOVU1QUk9DVykgYWRkX2ZvbnRfZW50 aXR5X3RvX2xpc3QsCisJCQkgICAoTFBBUkFNKSBtYXRjaF9kYXRhLCAwKTsKICAgICB9CiAKICAg cmVsZWFzZV9mcmFtZV9kYyAoZiwgZGMpOwpAQCAtMjIzOSwxNCArMjI0MywxNCBAQCBmb250X3N1 cHBvcnRlZF9zY3JpcHRzIChGT05UU0lHTkFUVVJFICogc2lnKQogICAgVGhlIGZ1bGwgbmFtZSBp cyBpbiBmY25hbWUgZm9ybWF0LCB3aXRoIHdlaWdodCwgc2xhbnQgYW5kIGFudGlhbGlhc2luZwog ICAgc3BlY2lmaWVkIGlmIHRoZXkgYXJlIG5vdCAibm9ybWFsIi4gICovCiBzdGF0aWMgaW50Ci13 MzJmb250X2Z1bGxfbmFtZSAoTE9HRk9OVCAqIGZvbnQsIExpc3BfT2JqZWN0IGZvbnRfb2JqLAot CQkgICBpbnQgcGl4ZWxfc2l6ZSwgY2hhciAqbmFtZSwgaW50IG5ieXRlcykKK3czMmZvbnRfZnVs bF9uYW1lIChMT0dGT05UVyAqIGZvbnQsIExpc3BfT2JqZWN0IGZvbnRfb2JqLAorCQkgICBpbnQg cGl4ZWxfc2l6ZSwgd2NoYXJfdCAqbmFtZSwgaW50IHNpemUpCiB7CiAgIGludCBsZW4sIGhlaWdo dCwgb3V0bGluZTsKLSAgY2hhciAqcDsKKyAgd2NoYXJfdCAqcDsKICAgTGlzcF9PYmplY3QgYW50 aWFsaWFzaW5nLCB3ZWlnaHQgPSBRbmlsOwogCi0gIGxlbiA9IHN0cmxlbiAoZm9udC0+bGZGYWNl TmFtZSk7CisgIGxlbiA9IHdjc2xlbiAoZm9udC0+bGZGYWNlTmFtZSk7CiAKICAgb3V0bGluZSA9 IEVRIChBUkVGIChmb250X29iaiwgRk9OVF9GT1VORFJZX0lOREVYKSwgUW91dGxpbmUpOwogCkBA IC0yMjcxLDExICsyMjc1LDExIEBAIHczMmZvbnRfZnVsbF9uYW1lIChMT0dGT05UICogZm9udCwg TGlzcF9PYmplY3QgZm9udF9vYmosCiAgICAgbGVuICs9IDExICsgU0JZVEVTIChTWU1CT0xfTkFN RSAoYW50aWFsaWFzaW5nKSk7IC8qIDphbnRpYWxpYXM9TkFNRSAqLwogCiAgIC8qIENoZWNrIHRo YXQgdGhlIGJ1ZmZlciBpcyBiaWcgZW5vdWdoICAqLwotICBpZiAobGVuID4gbmJ5dGVzKQorICBp ZiAobGVuID4gc2l6ZSkKICAgICByZXR1cm4gLTE7CiAKICAgcCA9IG5hbWU7Ci0gIHAgKz0gc3By aW50ZiAocCwgIiVzIiwgZm9udC0+bGZGYWNlTmFtZSk7CisgIHAgKz0gc3dwcmludGYgKHAsIG5h bWUgKyBzaXplIC0gcCwgTCIlbHMiLCBmb250LT5sZkZhY2VOYW1lKTsKIAogICBoZWlnaHQgPSBm b250LT5sZkhlaWdodCA/IGVhYnMgKGZvbnQtPmxmSGVpZ2h0KSA6IHBpeGVsX3NpemU7CiAKQEAg LTIyODcsMjAgKzIyOTEsMjAgQEAgdzMyZm9udF9mdWxsX25hbWUgKExPR0ZPTlQgKiBmb250LCBM aXNwX09iamVjdCBmb250X29iaiwKICAgICAgICAgICAvKiBSb3VuZCB0byBuZWFyZXN0IGhhbGYg cG9pbnQuICBmbG9vciBpcyB1c2VkLCBzaW5jZSByb3VuZCBpcyBub3QKIAkgICAgIHN1cHBvcnRl ZCBpbiBNUyBsaWJyYXJ5LiAgKi8KICAgICAgICAgICBwb2ludHNpemUgPSBmbG9vciAocG9pbnRz aXplICogMiArIDAuNSkgLyAyOwotICAgICAgICAgIHAgKz0gc3ByaW50ZiAocCwgIi0lMS4xZiIs IHBvaW50c2l6ZSk7CisgICAgICAgICAgcCArPSBzd3ByaW50ZiAocCwgbmFtZSArIHNpemUgLSBw LCBMIi0lMS4xZiIsIHBvaW50c2l6ZSk7CiAgICAgICAgIH0KICAgICAgIGVsc2UKLSAgICAgICAg cCArPSBzcHJpbnRmIChwLCAiOnBpeGVsc2l6ZT0lZCIsIGhlaWdodCk7CisgICAgICAgIHAgKz0g c3dwcmludGYgKHAsIG5hbWUgKyBzaXplIC0gcCwgTCI6cGl4ZWxzaXplPSVkIiwgaGVpZ2h0KTsK ICAgICB9CiAKICAgaWYgKFNZTUJPTFAgKHdlaWdodCkgJiYgISBOSUxQICh3ZWlnaHQpKQotICAg IHAgKz0gc3ByaW50ZiAocCwgIjolcyIsIFNEQVRBIChTWU1CT0xfTkFNRSAod2VpZ2h0KSkpOwor ICAgIHAgKz0gc3dwcmludGYgKHAsIG5hbWUgKyBzaXplIC0gcCwgTCI6JWxzIiwgU0RBVEEgKFNZ TUJPTF9OQU1FICh3ZWlnaHQpKSk7CiAKICAgaWYgKGZvbnQtPmxmSXRhbGljKQotICAgIHAgKz0g c3ByaW50ZiAocCwgIjppdGFsaWMiKTsKKyAgICBwICs9IHN3cHJpbnRmIChwLCBuYW1lICsgc2l6 ZSAtIHAsIEwiOml0YWxpYyIpOwogCiAgIGlmIChTWU1CT0xQIChhbnRpYWxpYXNpbmcpICYmICEg TklMUCAoYW50aWFsaWFzaW5nKSkKLSAgICBwICs9IHNwcmludGYgKHAsICI6YW50aWFsaWFzPSVz IiwgU0RBVEEgKFNZTUJPTF9OQU1FIChhbnRpYWxpYXNpbmcpKSk7CisgICAgcCArPSBzd3ByaW50 ZiAocCwgbmFtZSArIHNpemUgLSBwLCBMIjphbnRpYWxpYXM9JWxzIiwgU0RBVEEgKFNZTUJPTF9O QU1FIChhbnRpYWxpYXNpbmcpKSk7CiAKICAgcmV0dXJuIChwIC0gbmFtZSk7CiB9CkBAIC0yMzEy LDEzICsyMzE2LDEzIEBAIHczMmZvbnRfZnVsbF9uYW1lIChMT0dGT05UICogZm9udCwgTGlzcF9P YmplY3QgZm9udF9vYmosCiAgICB0aGUgZnVuY3Rpb24gcmV0dXJucyAtMSwgb3RoZXJ3aXNlIGl0 IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcwogICAgd3JpdHRlbiB0byBGQ05BTUUuICAqLwog c3RhdGljIGludAotbG9nZm9udF90b19mY25hbWUgKExPR0ZPTlQqIGZvbnQsIGludCBwb2ludHNp emUsIGNoYXIgKmZjbmFtZSwgaW50IHNpemUpCitsb2dmb250X3RvX2ZjbmFtZSAoTE9HRk9OVFcq IGZvbnQsIGludCBwb2ludHNpemUsIHdjaGFyX3QgKmZjbmFtZSwgaW50IHNpemUpCiB7CiAgIGlu dCBsZW4sIGhlaWdodDsKLSAgY2hhciAqcCA9IGZjbmFtZTsKKyAgd2NoYXJfdCAqcCA9IGZjbmFt ZTsKICAgTGlzcF9PYmplY3Qgd2VpZ2h0ID0gUW5pbDsKIAotICBsZW4gPSBzdHJsZW4gKGZvbnQt PmxmRmFjZU5hbWUpICsgMjsKKyAgbGVuID0gd2NzbGVuIChmb250LT5sZkZhY2VOYW1lKSArIDI7 CiAgIGhlaWdodCA9IHBvaW50c2l6ZSAvIDEwOwogICB3aGlsZSAoaGVpZ2h0IC89IDEwKQogICAg IGxlbisrOwpAQCAtMjMzNywxNSArMjM0MSwxNSBAQCBsb2dmb250X3RvX2ZjbmFtZSAoTE9HRk9O VCogZm9udCwgaW50IHBvaW50c2l6ZSwgY2hhciAqZmNuYW1lLCBpbnQgc2l6ZSkKICAgaWYgKGxl biA+IHNpemUpCiAgICAgcmV0dXJuIC0xOwogCi0gIHAgKz0gc3ByaW50ZiAocCwgIiVzLSVkIiwg Zm9udC0+bGZGYWNlTmFtZSwgcG9pbnRzaXplIC8gMTApOworICBwICs9IHN3cHJpbnRmIChwLCBm Y25hbWUgKyBzaXplIC0gcCwgTCIlbHMtJWQiLCBmb250LT5sZkZhY2VOYW1lLCBwb2ludHNpemUg LyAxMCk7CiAgIGlmIChwb2ludHNpemUgJSAxMCkKLSAgICBwICs9IHNwcmludGYgKHAsICIuJWQi LCBwb2ludHNpemUgJSAxMCk7CisgICAgcCArPSBzd3ByaW50ZiAocCwgZmNuYW1lICsgc2l6ZSAt IHAsIEwiLiVkIiwgcG9pbnRzaXplICUgMTApOwogCiAgIGlmIChTWU1CT0xQICh3ZWlnaHQpICYm ICFOSUxQICh3ZWlnaHQpKQotICAgIHAgKz0gc3ByaW50ZiAocCwgIjolcyIsIFNEQVRBIChTWU1C T0xfTkFNRSAod2VpZ2h0KSkpOworICAgIHAgKz0gc3dwcmludGYgKHAsIGZjbmFtZSArIHNpemUg LSBwLCBMIjolbHMiLCBTREFUQSAoU1lNQk9MX05BTUUgKHdlaWdodCkpKTsKIAogICBpZiAoZm9u dC0+bGZJdGFsaWMpCi0gICAgcCArPSBzcHJpbnRmIChwLCAiOml0YWxpYyIpOworICAgIHAgKz0g c3dwcmludGYgKHAsIGZjbmFtZSArIHNpemUgLSBwLCBMIjppdGFsaWMiKTsKIAogICByZXR1cm4g KHAgLSBmY25hbWUpOwogfQpAQCAtMjM5NSwxMiArMjM5OSwxMiBAQCBpbiB0aGUgZm9udCBzZWxl Y3Rpb24gZGlhbG9nLiAqLykKICAgKExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBleGNs dWRlX3Byb3BvcnRpb25hbCkKIHsKICAgc3RydWN0IGZyYW1lICpmID0gZGVjb2RlX3dpbmRvd19z eXN0ZW1fZnJhbWUgKGZyYW1lKTsKLSAgQ0hPT1NFRk9OVCBjZjsKLSAgTE9HRk9OVCBsZjsKKyAg Q0hPT1NFRk9OVFcgY2Y7CisgIExPR0ZPTlRXIGxmOwogICBURVhUTUVUUklDIHRtOwogICBIREMg aGRjOwogICBIQU5ETEUgb2xkb2JqOwotICBjaGFyIGJ1ZlsxMDBdOworICB3Y2hhcl90IGJ1Zlsx MDBdOwogCiAgIG1lbXNldCAoJmNmLCAwLCBzaXplb2YgKGNmKSk7CiAgIG1lbXNldCAoJmxmLCAw LCBzaXplb2YgKGxmKSk7CkBAIC0yNDIwLDcgKzI0MjQsNyBAQCBpbiB0aGUgZm9udCBzZWxlY3Rp b24gZGlhbG9nLiAqLykKICAgICAgZGVmYXVsdCBmb250LiAgKi8KICAgaGRjID0gR2V0REMgKEZS QU1FX1czMl9XSU5ET1cgKGYpKTsKICAgb2xkb2JqID0gU2VsZWN0T2JqZWN0IChoZGMsIEZPTlRf SEFORExFIChGUkFNRV9GT05UIChmKSkpOwotICBHZXRUZXh0RmFjZSAoaGRjLCBMRl9GQUNFU0la RSwgbGYubGZGYWNlTmFtZSk7CisgIEdldFRleHRGYWNlVyAoaGRjLCBMRl9GQUNFU0laRSwgbGYu bGZGYWNlTmFtZSk7CiAgIGlmIChHZXRUZXh0TWV0cmljcyAoaGRjLCAmdG0pKQogICAgIHsKICAg ICAgIGxmLmxmSGVpZ2h0ID0gdG0udG1JbnRlcm5hbExlYWRpbmcgLSB0bS50bUhlaWdodDsKQEAg LTI0MzQsMTEgKzI0MzgsMTEgQEAgaW4gdGhlIGZvbnQgc2VsZWN0aW9uIGRpYWxvZy4gKi8pCiAg IFNlbGVjdE9iamVjdCAoaGRjLCBvbGRvYmopOwogICBSZWxlYXNlREMgKEZSQU1FX1czMl9XSU5E T1cgKGYpLCBoZGMpOwogCi0gIGlmICghQ2hvb3NlRm9udCAoJmNmKQorICBpZiAoIUNob29zZUZv bnRXICgmY2YpCiAgICAgICB8fCBsb2dmb250X3RvX2ZjbmFtZSAoJmxmLCBjZi5pUG9pbnRTaXpl LCBidWYsIDEwMCkgPCAwKQogICAgIHJldHVybiBRbmlsOwogCi0gIHJldHVybiBERUNPREVfU1lT VEVNIChidWlsZF9zdHJpbmcgKGJ1ZikpOworICByZXR1cm4gZnJvbV91bmljb2RlX2J1ZmZlciAo YnVmKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHczMmZvbnRfYm9vbGVhbnMgW10g PSB7CmRpZmYgLS1naXQgYS9zcmMvdzMyZm9udC5oIGIvc3JjL3czMmZvbnQuaAppbmRleCAwYWQw MTI1Li4wNmU1ZjMxIDEwMDY0NAotLS0gYS9zcmMvdzMyZm9udC5oCisrKyBiL3NyYy93MzJmb250 LmgKQEAgLTgwLDkgKzgwLDkgQEAgaW50IHczMmZvbnRfZHJhdyAoc3RydWN0IGdseXBoX3N0cmlu ZyAqcywgaW50IGZyb20sIGludCB0bywKICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwg Ym9vbCB3aXRoX2JhY2tncm91bmQpOwogCiAKLWludCB1bmlzY3JpYmVfY2hlY2tfb3RmIChMT0dG T05UICpmb250LCBMaXNwX09iamVjdCBvdGZfc3BlYyk7CitpbnQgdW5pc2NyaWJlX2NoZWNrX290 ZiAoTE9HRk9OVFcgKmZvbnQsIExpc3BfT2JqZWN0IG90Zl9zcGVjKTsKIAotTGlzcF9PYmplY3Qg aW50ZXJuX2ZvbnRfbmFtZSAoY2hhciAqKTsKK0xpc3BfT2JqZWN0IGludGVybl9mb250X25hbWUg KHdjaGFyX3QgKik7CiAKIGV4dGVybiB2b2lkIHN5bXNfb2ZfdzMyZm9udCAodm9pZCk7CiBleHRl cm4gdm9pZCBnbG9iYWxzX29mX3czMmZvbnQgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMnVu aXNjcmliZS5jIGIvc3JjL3czMnVuaXNjcmliZS5jCmluZGV4IDczYzA0MTAuLmQ1OGY2MDAgMTAw NjQ0Ci0tLSBhL3NyYy93MzJ1bmlzY3JpYmUuYworKysgYi9zcmMvdzMydW5pc2NyaWJlLmMKQEAg LTQ3LDkgKzQ3LDkgQEAgc3RydWN0IHVuaXNjcmliZV9mb250X2luZm8KIAogaW50IHVuaXNjcmli ZV9hdmFpbGFibGUgPSAwOwogCi0vKiBFbnVtRm9udEZhbWlsaWVzRXggY2FsbGJhY2suICAqLwot c3RhdGljIGludCBDQUxMQkFDSyBBTElHTl9TVEFDSyBhZGRfb3BlbnR5cGVfZm9udF9uYW1lX3Rv X2xpc3QgKEVOVU1MT0dGT05URVggKiwKLQkJCQkJCQkJTkVXVEVYVE1FVFJJQ0VYICosCisvKiBF bnVtRm9udEZhbWlsaWVzRXhXIGNhbGxiYWNrLiAgKi8KK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgQUxJ R05fU1RBQ0sgYWRkX29wZW50eXBlX2ZvbnRfbmFtZV90b19saXN0IChFTlVNTE9HRk9OVEVYVyAq LAorCQkJCQkJCQlORVdURVhUTUVUUklDRVhXICosCiAJCQkJCQkJCURXT1JELCBMUEFSQU0pOwog LyogVXNlZCBieSB1bmlzY3JpYmVfb3RmX2NhcGFiaWxpdHkuICAqLwogc3RhdGljIExpc3BfT2Jq ZWN0IG90Zl9mZWF0dXJlcyAoSERDIGNvbnRleHQsIGNoYXIgKnRhYmxlKTsKQEAgLTg0LDcgKzg0 LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0CiB1bmlzY3JpYmVfbGlzdF9mYW1pbHkgKHN0cnVjdCBm cmFtZSAqZikKIHsKICAgTGlzcF9PYmplY3QgbGlzdCA9IFFuaWw7Ci0gIExPR0ZPTlQgZm9udF9t YXRjaF9wYXR0ZXJuOworICBMT0dGT05UVyBmb250X21hdGNoX3BhdHRlcm47CiAgIEhEQyBkYzsK IAogICBtZW1zZXQgKCZmb250X21hdGNoX3BhdHRlcm4sIDAsIHNpemVvZiAoZm9udF9tYXRjaF9w YXR0ZXJuKSk7CkBAIC05Myw4ICs5Myw4IEBAIHVuaXNjcmliZV9saXN0X2ZhbWlseSAoc3RydWN0 IGZyYW1lICpmKQogCiAgIGRjID0gZ2V0X2ZyYW1lX2RjIChmKTsKIAotICBFbnVtRm9udEZhbWls aWVzRXggKGRjLCAmZm9udF9tYXRjaF9wYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgIChG T05URU5VTVBST0MpIGFkZF9vcGVudHlwZV9mb250X25hbWVfdG9fbGlzdCwKKyAgRW51bUZvbnRG YW1pbGllc0V4VyAoZGMsICZmb250X21hdGNoX3BhdHRlcm4sCisgICAgICAgICAgICAgICAgICAg ICAgKEZPTlRFTlVNUFJPQ1cpIGFkZF9vcGVudHlwZV9mb250X25hbWVfdG9fbGlzdCwKICAgICAg ICAgICAgICAgICAgICAgICAoTFBBUkFNKSAmbGlzdCwgMCk7CiAgIHJlbGVhc2VfZnJhbWVfZGMg KGYsIGRjKTsKIApAQCAtNjA0LDEyICs2MDQsMTIgQEAgdW5pc2NyaWJlX2VuY29kZV9jaGFyIChz dHJ1Y3QgZm9udCAqZm9udCwgaW50IGMpCiAqLwogCiAMCi0vKiBDYWxsYmFjayBmdW5jdGlvbiBm b3IgRW51bUZvbnRGYW1pbGllc0V4LgorLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIEVudW1Gb250 RmFtaWxpZXNFeFcuCiAgICBBZGRzIHRoZSBuYW1lIG9mIG9wZW50eXBlIGZvbnRzIHRvIGEgTGlz cCBsaXN0IChwYXNzZWQgaW4gYXMgdGhlCiAgICBsUGFyYW0gYXJnKS4gKi8KIHN0YXRpYyBpbnQg Q0FMTEJBQ0sgQUxJR05fU1RBQ0sKLWFkZF9vcGVudHlwZV9mb250X25hbWVfdG9fbGlzdCAoRU5V TUxPR0ZPTlRFWCAqbG9naWNhbF9mb250LAotCQkJCU5FV1RFWFRNRVRSSUNFWCAqcGh5c2ljYWxf Zm9udCwKK2FkZF9vcGVudHlwZV9mb250X25hbWVfdG9fbGlzdCAoRU5VTUxPR0ZPTlRFWFcgKmxv Z2ljYWxfZm9udCwKKwkJCQlORVdURVhUTUVUUklDRVhXICpwaHlzaWNhbF9mb250LAogCQkJCURX T1JEIGZvbnRfdHlwZSwgTFBBUkFNIGxpc3Rfb2JqZWN0KQogewogICBMaXNwX09iamVjdCogbGlz dCA9IChMaXNwX09iamVjdCAqKSBsaXN0X29iamVjdDsKQEAgLTY4MCw3ICs2ODAsNyBAQCBhZGRf b3BlbnR5cGVfZm9udF9uYW1lX3RvX2xpc3QgKEVOVU1MT0dGT05URVggKmxvZ2ljYWxfZm9udCwK ICAgIE9URl9TUEVDIGlzIGluIHRoZSBmb3JtYXQKICAgICAgKHNjcmlwdCBsYW5nIFsoZ3N1Yl9m ZWF0dXJlIC4uLil8bmlsXSBbKGdwb3NfZmVhdHVyZSAuLi4pXT8pICovCiBpbnQKLXVuaXNjcmli ZV9jaGVja19vdGYgKExPR0ZPTlQgKmZvbnQsIExpc3BfT2JqZWN0IG90Zl9zcGVjKQordW5pc2Ny aWJlX2NoZWNrX290ZiAoTE9HRk9OVFcgKmZvbnQsIExpc3BfT2JqZWN0IG90Zl9zcGVjKQogewog ICBMaXNwX09iamVjdCBzY3JpcHQsIGxhbmcsIHJlc3Q7CiAgIExpc3BfT2JqZWN0IGZlYXR1cmVz WzJdOwpAQCAtNzI0LDcgKzcyNCw3IEBAIHVuaXNjcmliZV9jaGVja19vdGYgKExPR0ZPTlQgKmZv bnQsIExpc3BfT2JqZWN0IG90Zl9zcGVjKQogICAvKiBTZXQgdXAgZ3JhcGhpY3MgY29udGV4dCBz byB3ZSBjYW4gdXNlIHRoZSBmb250LiAgKi8KICAgZiA9IFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUp OwogICBjb250ZXh0ID0gZ2V0X2ZyYW1lX2RjIChmKTsKLSAgY2hlY2tfZm9udCA9IENyZWF0ZUZv bnRJbmRpcmVjdCAoZm9udCk7CisgIGNoZWNrX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3RXIChm b250KTsKICAgb2xkX2ZvbnQgPSBTZWxlY3RPYmplY3QgKGNvbnRleHQsIGNoZWNrX2ZvbnQpOwog CiAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBjb250YWluZWQgd2l0aGluIG90Zl9zcGVjIHNvIHNo b3VsZCBnZXQK --001a11c39ea813ce720510136e60--