From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Re: mouse-drag-and-drop-region Date: Sat, 16 Dec 2017 10:42:10 +0100 Message-ID: <5A34EA72.5050901@gmx.at> References: <67BAABFE-B45E-415F-BFDA-BED32D6CB982@misasa.okayama-u.ac.jp> <5A338CC3.20302@gmx.at> <5A33CD31.3060205@gmx.at> <20171216.110718.1057148403550044190.tkk@misasa.okayama-u.ac.jp> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020101040903080800040907" X-Trace: blaine.gmane.org 1513417362 11880 195.159.176.226 (16 Dec 2017 09:42:42 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 16 Dec 2017 09:42:42 +0000 (UTC) Cc: eliz@gnu.org, rswgnu@gmail.com, agrambot@gmail.com, emacs-devel@gnu.org To: Tak Kunihiro Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Dec 16 10:42:37 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQ8zM-0002Wc-Jh for ged-emacs-devel@m.gmane.org; Sat, 16 Dec 2017 10:42:36 +0100 Original-Received: from localhost ([::1]:49987 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQ8zT-0003YC-LZ for ged-emacs-devel@m.gmane.org; Sat, 16 Dec 2017 04:42:43 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33594) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQ8zK-0003Vl-Qw for emacs-devel@gnu.org; Sat, 16 Dec 2017 04:42:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQ8zH-0006bd-LK for emacs-devel@gnu.org; Sat, 16 Dec 2017 04:42:34 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]:61594) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eQ8zD-0006ZV-4b; Sat, 16 Dec 2017 04:42:27 -0500 Original-Received: from [192.168.1.100] ([212.95.5.176]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MLfLH-1eQy3x2gh1-000pbv; Sat, 16 Dec 2017 10:42:14 +0100 In-Reply-To: <20171216.110718.1057148403550044190.tkk@misasa.okayama-u.ac.jp> X-Provags-ID: V03:K0:sFbK7kL446Y183+YYu+RYXrIW17X1OVpQmvq2xHAlWA8OilNd6p 73dqGncpEAyEsaw+XMEPls3rEDCghA58KegBwunE+y5F8kgsLj/TGMyTRYc0Pxgm4zJTVaM 2BB3PdaJugwsas2K6pVQsQGcjYWHQ4ndh1AzsX0j69FMa+BVlhGXu86dLLyoH5RuWd2HQSL LdOupgD/Vfpf7269hORGw== X-UI-Out-Filterresults: notjunk:1;V01:K0:ru66SkIT/CQ=:QzvcFl9pSEVT64obTjzyOl /uGbCVO6DN+rXkuEXXM6jNwQtY0Un5/XWiID9Hf3Dk3PVlBlZEQPkILlgBFnoviOufKiHVS/+ CSR/+xuNl3t6BOQjah7ttZ8QTrioMBndKs5ZJMJhB/Pwz14DZBIa3FhehrDJ2GGRVUp0ZI8mN VzxktTsTB0Ibtz/boCtEg2d7dnL8rb3BqMa8CxolQGblpUInXCTWHMDyMQRcEakrklmZwHn7V ANXiwg16Vkn2+HZHwkRPzrVHeZRFxVm55ToQ2wXuNcLtHEB9bkLrTqIBwGdED4J/YFW00ClNd ndHtmJOd52K4yAJIk97/bQ/8Gm3sbHxYR8LLuYMQOlathc/Vx15BnxhijLIEDcXubA4Q/YOHY 4RMyyKs82EAyrdqANVeVYi0P5sN2oO54wOwadJ3vCxiG75X8liljQMdSWa+r84jtM8kjgsprb M2EKPTd0pH+MyWvA+LvDR1101LBXve2Y2JPATk1aDEr/+EI75GUmb8WOASQnWDnLq8beZ64H+ tBByJMGUkwsGpQyCwabJiU3kLP91NbyNHRUGjLEiUVV0kzZbj/vY1KQvPp8jam2h7Swwv3H9R IdsHX6v8QYg90eeAj+zZh5z4MYM51Gi9WdjDZY4pI/nk9HlDngnbm78C8JfWT4GWS+WfZl1o3 5xpvMNE3aJ+uYPe1d8NM1JnqtcwpjFWonKj0a3aDADxdv0T2s9HyQyow3Jr/SObFqGoUEUK7D dTgE40aOT8bAZ5sZ5v9eGuPJKaSvC0vnWVoROsk5KLKjte0DgrZnPTrCu3+zSkdarzY8pCKF X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.18 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:221121 Archived-At: This is a multi-part message in MIME format. --------------020101040903080800040907 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > During the drag, when mouse point is on the original region, cursor > would be set to hollow. With this revision, I see that the cursor is > not set. Right. > To do it, drag-but-negligible should be set to t. The > drag-but-negligible is set by following expressions. > > 2507 ;; Check if "drag but negligible". Operation "drag but > 2508 ;; negligible" is defined as drag-and-drop the text to > 2509 ;; the original region. When modifier is pressed, the > 2510 ;; text will be inserted to inside of the original > 2511 ;; region. > 2512 (setq drag-but-negligible > 2513 (member mouse-drag-and-drop-region > 2514 (mapcar (lambda (xxx) (overlay-get xxx 'face)) > 2515 (overlays-at point-to-paste))))) > > On this revision, I wonder if mouse-drag-and-drop-region on line 2513 > refers to variable instead of face. No? Right again. What about directly checking the overlay boundaries instead as in the attached patch which appears cleaner than to rely on face properties? Note that this way a user can also insert the text immediately before the original region which IIUC is not possible with the original behavior. Maybe we should also call the face `mouse-drag-and-drop-highlight' so that there is less confusion. OT1H faces should not end with the postfix "-face" and OTOH the simple variable you used initially had a user rely on predefined faces only which is an unnecessary restriction. Some users might dislike `region' and `secondary-selection' here. And please go over the entire text once again so that lines are no more longer than 80 characters at most (I already tried that in some cases). Thanks, martin --------------020101040903080800040907 Content-Type: text/plain; charset=windows-1252; name="mouse.el.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mouse.el.diff" ZGlmZiAtLWdpdCBhL2xpc3AvbW91c2UuZWwgYi9saXNwL21vdXNlLmVsCmluZGV4IDE3ZDE3 MzIuLmU5MGVhZGEgMTAwNjQ0Ci0tLSBhL2xpc3AvbW91c2UuZWwKKysrIGIvbGlzcC9tb3Vz ZS5lbApAQCAtMjM0NSwxMCArMjM0NSwxMCBAQCBtb3VzZS1hcHBlYXJhbmNlLW1lbnUKIAwK IDs7IERyYWcgYW5kIGRyb3Agc3VwcG9ydC4KIChkZWZjdXN0b20gbW91c2UtZHJhZy1hbmQt ZHJvcC1yZWdpb24gbmlsCi0gICJJZiBub24tbmlsLCBkcmFnZ2luZyB0aGUgbW91c2UgZHJh Z3MgdGhlIHJlZ2lvbiwgaWYgdGhhdCBleGlzdHMuCi1JZiB0aGUgdmFsdWUgaXMgYSBtb2Rp Zmllciwgc3VjaCBhcyBgY29udHJvbCcgb3IgYHNoaWZ0JyBvciBgbWV0YScsCi10aGVuIGlm IHRoYXQgbW9kaWZpZXIga2V5IGlzIHByZXNzZWQgd2hlbiBkcm9wcGluZyB0aGUgcmVnaW9u LCByZWdpb24KLXRleHQgaXMgY29waWVkIGluc3RlYWQgb2YgYmVpbmcgY3V0LiIKKyAgIklm IG5vbi1uaWwsIGRyYWdnaW5nIHRoZSBtb3VzZSBkcmFncyB0aGUgcmVnaW9uLCBpZiBpdCBl eGlzdHMuCitJZiB0aGUgdmFsdWUgaXMgYSBtb2RpZmllciwgc3VjaCBhcyBgY29udHJvbCcg b3IgYHNoaWZ0JyBvcgorYG1ldGEnLCB0aGVuIGlmIHRoYXQgbW9kaWZpZXIga2V5IGlzIHBy ZXNzZWQgd2hlbiBkcm9wcGluZyB0aGUKK3JlZ2lvbiwgdGV4dCBpcyBjb3BpZWQgaW5zdGVh ZCBvZiBiZWluZyBjdXQuIgogICA6dHlwZSBgKGNob2ljZQogICAgICAgICAgIChjb25zdCA6 dGFnICJEaXNhYmxlIGRyYWdnaW5nIHRoZSByZWdpb24iIG5pbCkKICAgICAgICAgICAsQCht YXBjYXIKQEAgLTIzNjEsNiArMjM2MSw0NSBAQCBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lv bgogICA6dmVyc2lvbiAiMjYuMSIKICAgOmdyb3VwICdtb3VzZSkKIAorKGRlZmN1c3RvbSBt b3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbi1jdXQtd2hlbi1idWZmZXJzLWRpZmZlciBuaWwK KyAgIklmIG5vbi1uaWwsIGN1dCB0ZXh0IGFsc28gd2hlbiBzb3VyY2UgYW5kIGRlc3RpbmF0 aW9uIGJ1ZmZlcnMgZGlmZmVyLgorSWYgdGhpcyBvcHRpb24gaXMgbmlsLCBgbW91c2UtZHJh Zy1hbmQtZHJvcC1yZWdpb24nIHdpbGwgbGVhdmUKK3RoZSB0ZXh0IGluIHRoZSBzb3VyY2Ug YnVmZmVyIGFsb25lIHdoZW4gZHJvcHBpbmcgaXQgaW4gYQorZGlmZmVyZW50IGJ1ZmZlci4g IElmIHRoaXMgaXMgbm9uLW5pbCwgaXQgd2lsbCBjdXQgdGhlIHRleHQganVzdAorYXMgaXQg ZG9lcyB3aGVuIGRyb3BwaW5nIHRleHQgaW4gdGhlIHNvdXJjZSBidWZmZXIuIgorICA6dHlw ZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMjYuMSIKKyAgOmdyb3VwICdtb3VzZSkKKworKGRl ZmN1c3RvbSBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbi1zaG93LXRvb2x0aXAgMjU2Cisg ICJJZiBub24tbmlsLCB0ZXh0IGlzIHNob3duIGJ5IGEgdG9vbHRpcCBpbiBhIGdyYXBoaWMg ZGlzcGxheS4KK0lmIHRoaXMgb3B0aW9uIGlzIG5pbCwgYG1vdXNlLWRyYWctYW5kLWRyb3At cmVnaW9uJyBkb2VzIG5vdCBzaG93Cit0b29sdGlwcy4gIElmIHRoaXMgaXMgdCwgaXQgc2hv d3MgdGhlIGVudGlyZSB0ZXh0IGRyYWdnZWQgaW4gYQordG9vbHRpcC4gIElmIHRoaXMgaXMg YW4gaW50ZWdlciAoYXMgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorMjU2KSwgaXQgd2ls bCBzaG93IHRoYXQgbWFueSBjaGFyYWN0ZXJzIG9mIHRoZSBkcmFnZ2VkIHRleHQgaW4KK2Eg dG9vbHRpcC4iCisgIDp0eXBlICdpbnRlZ2VyCisgIDp2ZXJzaW9uICIyNi4xIgorICA6Z3Jv dXAgJ21vdXNlKQorCisoZGVmY3VzdG9tIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uLXNo b3ctY3Vyc29yIHQKKyAgIklmIG5vbi1uaWwsIG1vdmUgcG9pbnQgd2l0aCBtb3VzZSBjdXJz b3IgZHVyaW5nIGRyYWdnaW5nLgorSWYgdGhpcyBpcyBuaWwsIGBtb3VzZS1kcmFnLWFuZC1k cm9wLXJlZ2lvbicgbGVhdmVzIHBvaW50IGFsb25lLgorT3RoZXJ3aXNlLCBpdCB3aWxsIG1v dmUgcG9pbnQgdG9nZXRoZXIgd2l0aCB0aGUgbW91c2UgY3Vyc29yIGFuZCwKK2luIGFkZGl0 aW9uLCB0ZW1wb3JhcmlseSBoaWdobGlnaHQgdGhlIG9yaWdpbmFsIHJlZ2lvbiB3aXRoIHRo ZQorYG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uJyBmYWNlLiIKKyAgOnR5cGUgJ2Jvb2xl YW4KKyAgOnZlcnNpb24gIjI2LjEiCisgIDpncm91cCAnbW91c2UpCisKKyhkZWZmYWNlIG1v dXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uICcoKHQgOmluaGVyaXQgcmVnaW9uKSkKKyAgIkZh Y2UgdG8gaGlnaGxpZ2h0IG9yaWdpbmFsIHRleHQgZHVyaW5nIGRyYWdnaW5nLgorVGhpcyBm YWNlIGlzIHVzZWQgYnkgYG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uJyB0byB0ZW1wb3Jh cmlseQoraGlnaGxpZ2h0IHRoZSBvcmlnaW5hbCByZWdpb24gd2hlbgorYG1vdXNlLWRyYWct YW5kLWRyb3AtcmVnaW9uLXNob3ctY3Vyc29yJyBpcyBub24tbmlsLiIKKyAgOnZlcnNpb24g IjI2LjEiCisgIDpncm91cCAnbW91c2UpCisKIChkZWZ1biBtb3VzZS1kcmFnLWFuZC1kcm9w LXJlZ2lvbiAoZXZlbnQpCiAgICJNb3ZlIHRleHQgaW4gdGhlIHJlZ2lvbiB0byBwb2ludCB3 aGVyZSBtb3VzZSBpcyBkcmFnZ2VkIHRvLgogVGhlIHRyYW5zcG9ydGF0aW9uIG9mIHRleHQg aXMgYWxzbyByZWZlcnJlZCBhcyBgZHJhZyBhbmQgZHJvcCcuCkBAIC0yMzY5LDY2ICsyNDA4 LDI1MSBAQCBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbgogdmFyaWFibGUgYG1vdXNlLWRy YWctYW5kLWRyb3AtcmVnaW9uJyBpcyB0aGF0IG1vZGlmaWVyLCB0aGUgdGV4dAogaXMgY29w aWVkIGluc3RlYWQgb2YgYmVpbmcgY3V0LiIKICAgKGludGVyYWN0aXZlICJlIikKLSAgKHJl cXVpcmUgJ3Rvb2x0aXApCi0gIChsZXQgKChzdGFydCAocmVnaW9uLWJlZ2lubmluZykpCi0g ICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKQotICAgICAgICAocG9pbnQgKHBvaW50KSkKLSAg ICAgICAgKGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQotICAgICAgICAod2luZG93IChzZWxl Y3RlZC13aW5kb3cpKQotICAgICAgICB2YWx1ZS1zZWxlY3Rpb24pCi0gICAgKHRyYWNrLW1v dXNlCi0gICAgICA7OyBXaGVuIGV2ZW50IHdhcyBjbGljayBpbnN0ZWFkIG9mIGRyYWcsIHNr aXAgbG9vcAotICAgICAgKHdoaWxlIChwcm9nbgotICAgICAgICAgICAgICAgKHNldHEgZXZl bnQgKHJlYWQtZXZlbnQpKQotICAgICAgICAgICAgICAgKG9yIChtb3VzZS1tb3ZlbWVudC1w IGV2ZW50KQotICAgICAgICAgICAgICAgICAgIDs7IEhhbmRsZSBgbW91c2UtYXV0b3NlbGVj dC13aW5kb3cnLgotICAgICAgICAgICAgICAgICAgIChlcSAoY2FyLXNhZmUgZXZlbnQpICdz ZWxlY3Qtd2luZG93KSkpCi0gICAgICAgICh1bmxlc3MgdmFsdWUtc2VsZWN0aW9uIDsgaW5p dGlhbGl6YXRpb24KLSAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbW91c2Utc2Vjb25kYXJ5 LW92ZXJsYXkpCi0gICAgICAgICAgKHNldHEgdmFsdWUtc2VsZWN0aW9uIChidWZmZXItc3Vi c3RyaW5nIHN0YXJ0IGVuZCkpCi0gICAgICAgICAgKG1vdmUtb3ZlcmxheSBtb3VzZS1zZWNv bmRhcnktb3ZlcmxheSBzdGFydCBlbmQpKSA7IChkZWFjdGl2YXRlLW1hcmspCi0gICAgICAg IChpZ25vcmUtZXJyb3JzIChkZWFjdGl2YXRlLW1hcmspIDsgY2FyZSBleGlzdGluZyByZWdp b24gaW4gb3RoZXIgd2luZG93Ci0gICAgICAgICAgICAgICAgICAgICAgIChtb3VzZS1zZXQt cG9pbnQgZXZlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICh0b29sdGlwLXNob3cgdmFs dWUtc2VsZWN0aW9uKSkpCi0gICAgICAodG9vbHRpcC1oaWRlKSkKLSAgICA7OyBEbyBub3Qg bW9kaWZ5IGJ1ZmZlciB1bmRlciBtb3VzZSB3aGVuICJldmVudCB3YXMgY2xpY2siLAotICAg IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRyYWcgbmVnbGln aWJsZSIsIG9yCi0gICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZHJhZyB0byByZWFkLW9ubHkiLgotICAgIChpZiAob3IgKGVxdWFsIChtb3VzZS1wb3Nu LXByb3BlcnR5IChldmVudC1lbmQgZXZlbnQpICdmYWNlKSAncmVnaW9uKSA7ICJldmVudCB3 YXMgY2xpY2siCi0gICAgICAgICAgICAobWVtYmVyICdzZWNvbmRhcnktc2VsZWN0aW9uIDsg ImRyYWcgbmVnbGlnaWJsZSIKLSAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRh ICh4eHgpIChvdmVybGF5LWdldCB4eHggJ2ZhY2UpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChvdmVybGF5cy1hdCAocG9zbi1wb2ludCAoZXZlbnQtZW5kIGV2ZW50KSkpKSkK LSAgICAgICAgICAgIGJ1ZmZlci1yZWFkLW9ubHkpCi0gICAgICAgIDs7IERvIG5vdCBtb2Rp ZnkgYnVmZmVyIHVuZGVyIG1vdXNlLgorICAobGV0KiAoKG1vdXNlLWJ1dHRvbiAoZXZlbnQt YmFzaWMtdHlwZSBsYXN0LWlucHV0LWV2ZW50KSkKKyAgICAgICAgIChtb3VzZS1kcmFnLWFu ZC1kcm9wLXJlZ2lvbi1zaG93LXRvb2x0aXAKKyAgICAgICAgICAod2hlbiAoYW5kIG1vdXNl LWRyYWctYW5kLWRyb3AtcmVnaW9uLXNob3ctdG9vbHRpcAorICAgICAgICAgICAgICAgICAg ICAgKGRpc3BsYXktbXVsdGktZnJhbWUtcCkKKyAgICAgICAgICAgICAgICAgICAgIChyZXF1 aXJlICd0b29sdGlwKSkKKyAgICAgICAgICAgIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9u LXNob3ctdG9vbHRpcCkpCisgICAgICAgICAoc3RhcnQgKHJlZ2lvbi1iZWdpbm5pbmcpKQor ICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpCisgICAgICAgICAocG9pbnQgKHBvaW50KSkK KyAgICAgICAgIChidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICh3aW5kb3cg KHNlbGVjdGVkLXdpbmRvdykpCisgICAgICAgICAodGV4dC1mcm9tLXJlYWQtb25seSBidWZm ZXItcmVhZC1vbmx5KQorICAgICAgICAgKG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheSAo bWFrZS1vdmVybGF5IHN0YXJ0IGVuZCkpCisgICAgICAgICBwb2ludC10by1wYXN0ZQorICAg ICAgICAgcG9pbnQtdG8tcGFzdGUtcmVhZC1vbmx5CisgICAgICAgICB3aW5kb3ctdG8tcGFz dGUKKyAgICAgICAgIGJ1ZmZlci10by1wYXN0ZQorICAgICAgICAgY3Vyc29yLWluLXRleHQt YXJlYQorICAgICAgICAgbm8tbW9kaWZpZXItb24tZHJvcAorICAgICAgICAgZHJhZy1idXQt bmVnbGlnaWJsZQorICAgICAgICAgY2xpY2tlZAorICAgICAgICAgdmFsdWUtc2VsZWN0aW9u ICAgIDsgVGhpcyByZW1haW5zIG5pbCB3aGVuIGV2ZW50IHdhcyAiY2xpY2siLgorICAgICAg ICAgdGV4dC10b29sdGlwCisgICAgICAgICBzdGF0ZXMKKyAgICAgICAgIHdpbmRvdy1leGVt cHQpCisKKyAgICA7OyBTVEFURVMgc3RvcmVzIGZvciBlYWNoIHdpbmRvdyBvbiB0aGlzIGZy YW1lIGl0cyBzdGFydCBhbmQgcG9pbnQKKyAgICA7OyBwb3NpdGlvbnMgc28gd2UgY2FuIHJl c3RvcmUgdGhlbSBvbiBhbGwgd2luZG93cyBidXQgZm9yIHRoZSBvbmUKKyAgICA7OyB3aGVy ZSB0aGUgZHJvcCBvY2N1cnMuICBGb3IgaW50ZXItZnJhbWUgZHJhZ3Mgd2UnbGwgaGF2ZSB0 byBkbworICAgIDs7IHRoaXMgZm9yIGFsbCB3aW5kb3dzIG9uIGFsbCB2aXNpYmxlIGZyYW1l cy4gIEluIGFkZGl0aW9uIHdlIHNhdmUKKyAgICA7OyBhbHNvIHRoZSBjdXJzb3IgdHlwZSBm b3IgdGhlIHdpbmRvdydzIGJ1ZmZlciBzbyB3ZSBjYW4gcmVzdG9yZSBpdAorICAgIDs7IGlu IGNhc2Ugd2UgbW9kaWZpZWQgaXQuCisgICAgOzsgaHR0cHM6Ly9saXN0cy5nbnUub3JnL2Fy Y2hpdmUvaHRtbC9lbWFjcy1kZXZlbC8yMDE3LTEyL21zZzAwMDkwLmh0bWwKKyAgICAod2Fs ay13aW5kb3ctdHJlZQorICAgICAobGFtYmRhICh3aW5kb3cpCisgICAgICAgKHNldHEgc3Rh dGVzCisgICAgICAgICAgICAgKGNvbnMKKyAgICAgICAgICAgICAgKGxpc3QKKyAgICAgICAg ICAgICAgIHdpbmRvdworICAgICAgICAgICAgICAgKGNvcHktbWFya2VyICh3aW5kb3ctc3Rh cnQgd2luZG93KSkKKyAgICAgICAgICAgICAgIChjb3B5LW1hcmtlciAod2luZG93LXBvaW50 IHdpbmRvdykpCisgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2luZG93 LWJ1ZmZlciB3aW5kb3cpCisgICAgICAgICAgICAgICAgIGN1cnNvci10eXBlKSkKKyAgICAg ICAgICAgICAgc3RhdGVzKSkpKQorCisgICAgKGlnbm9yZS1lcnJvcnMKKyAgICAgICh0cmFj ay1tb3VzZQorICAgICAgICA7OyBXaGVuIGV2ZW50IHdhcyAiY2xpY2siIGluc3RlYWQgb2Yg ImRyYWciLCBza2lwIGxvb3AuCisgICAgICAgICh3aGlsZSAocHJvZ24KKyAgICAgICAgICAg ICAgICAgOzsgaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9lbWFjcy1kZXZl bC8yMDE3LTExL21zZzAwMzY0Lmh0bWwKKyAgICAgICAgICAgICAgICAgKHNldHEgZXZlbnQg KHJlYWQta2V5KSkgICAgICA7IHJlYWQtZXZlbnQgb3IgcmVhZC1rZXkKKyAgICAgICAgICAg ICAgICAgKG9yIChtb3VzZS1tb3ZlbWVudC1wIGV2ZW50KQorICAgICAgICAgICAgICAgICAg ICAgOzsgSGFuZGxlIGBtb3VzZS1hdXRvc2VsZWN0LXdpbmRvdycuCisgICAgICAgICAgICAg ICAgICAgICAoZXEgKGNhci1zYWZlIGV2ZW50KSAnc2VsZWN0LXdpbmRvdykpKQorICAgICAg ICAgIDs7IE9idGFpbiB0aGUgZHJhZ2dlZCB0ZXh0IGluIHJlZ2lvbi4gIFdoZW4gdGhlIGxv b3Agd2FzCisgICAgICAgICAgOzsgc2tpcHBlZCwgdmFsdWUtc2VsZWN0aW9uIHJlbWFpbnMg bmlsLgorICAgICAgICAgICh1bmxlc3MgdmFsdWUtc2VsZWN0aW9uCisgICAgICAgICAgICAo c2V0cSB2YWx1ZS1zZWxlY3Rpb24gKGJ1ZmZlci1zdWJzdHJpbmcgc3RhcnQgZW5kKSkKKyAg ICAgICAgICAgICh3aGVuIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uLXNob3ctdG9vbHRp cAorICAgICAgICAgICAgICAobGV0ICgodGV4dC1zaXplIG1vdXNlLWRyYWctYW5kLWRyb3At cmVnaW9uLXNob3ctdG9vbHRpcCkpCisgICAgICAgICAgICAgICAgKHNldHEgdGV4dC10b29s dGlwCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKGludGVnZXJwIHRleHQtc2l6 ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIHZhbHVlLXNl bGVjdGlvbikgdGV4dC1zaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyB2YWx1ZS1zZWxlY3Rp b24gMCAoLyB0ZXh0LXNpemUgMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4u Li5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgdmFsdWUtc2Vs ZWN0aW9uICgtICgvIHRleHQtc2l6ZSAyKSkgLTEpKQorICAgICAgICAgICAgICAgICAgICAg ICAgdmFsdWUtc2VsZWN0aW9uKSkpKQorCisgICAgICAgICAgICA7OyBDaGVjayBpZiBzZWxl Y3RlZCB0ZXh0IGlzIHJlYWQtb25seS4KKyAgICAgICAgICAgIDs7IGh0dHBzOi8vbGlzdHMu Z251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNy0xMS9tc2cwMDY2My5odG1s CisgICAgICAgICAgICA7OyAoYWRkLXRleHQtcHJvcGVydGllcyAocmVnaW9uLWJlZ2lubmlu ZykgKHJlZ2lvbi1lbmQpICcocmVhZC1vbmx5IHQpKQorICAgICAgICAgICAgKHNldHEgdGV4 dC1mcm9tLXJlYWQtb25seSAob3IgdGV4dC1mcm9tLXJlYWQtb25seQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IHN0YXJ0 ICdyZWFkLW9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobm90IChlcXVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5leHQtc2luZ2xlLWNoYXItcHJvcGVydHktY2hhbmdlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgJ3JlYWQtb25s eSBuaWwgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5kKSkpKSkKKyAgICAgICAgICAoc2V0cSB3aW5kb3ctdG8tcGFzdGUgKHBvc24t d2luZG93IChldmVudC1lbmQgZXZlbnQpKSkKKyAgICAgICAgICAoc2V0cSBwb2ludC10by1w YXN0ZSAocG9zbi1wb2ludCAoZXZlbnQtZW5kIGV2ZW50KSkpCisgICAgICAgICAgKHNldHEg YnVmZmVyLXRvLXBhc3RlIChsZXQgKGJ1ZikgOyBTZXQgbmlsIHdoZW4gdGFyZ2V0IGJ1ZmZl ciBpcyBtaW5pYnVmZmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3 aGVuICh3aW5kb3dwIHdpbmRvdy10by1wYXN0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXRxIGJ1ZiAod2luZG93LWJ1ZmZlciB3aW5kb3ctdG8tcGFzdGUp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKG5vdCAobWlu aWJ1ZmZlcnAgYnVmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnVmKSkpKQorICAgICAgICAgIChzZXRxIGN1cnNvci1pbi10ZXh0LWFyZWEgKGFuZCB3aW5k b3ctdG8tcGFzdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cG9pbnQtdG8tcGFzdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVmZmVyLXRvLXBhc3RlKSkKKworICAgICAgICAgICh3aGVuIGN1cnNvci1pbi10ZXh0 LWFyZWEKKyAgICAgICAgICAgIDs7IENoZWNrIGlmIHBvaW50IHVuZGVyIG1vdXNlIGlzIHJl YWQtb25seS4KKyAgICAgICAgICAgIChzYXZlLXdpbmRvdy1leGN1cnNpb24KKyAgICAgICAg ICAgICAgKHNlbGVjdC13aW5kb3cgd2luZG93LXRvLXBhc3RlKQorICAgICAgICAgICAgICA7 OyAoYWRkLXRleHQtcHJvcGVydGllcyAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1lbmQp ICcocmVhZC1vbmx5IHQpKQorICAgICAgICAgICAgICAoc2V0cSBwb2ludC10by1wYXN0ZS1y ZWFkLW9ubHkKKyAgICAgICAgICAgICAgICAgICAgKG9yIGJ1ZmZlci1yZWFkLW9ubHkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSBwb2ludC10by1wYXN0 ZSAncmVhZC1vbmx5KSkpKQorCisgICAgICAgICAgICA7OyBDaGVjayBpZiAiZHJhZyBidXQg bmVnbGlnaWJsZSIuICBPcGVyYXRpb24gImRyYWcgYnV0CisgICAgICAgICAgICA7OyBuZWds aWdpYmxlIiBpcyBkZWZpbmVkIGFzIGRyYWctYW5kLWRyb3AgdGhlIHRleHQgdG8KKyAgICAg ICAgICAgIDs7IHRoZSBvcmlnaW5hbCByZWdpb24uICBXaGVuIG1vZGlmaWVyIGlzIHByZXNz ZWQsIHRoZQorICAgICAgICAgICAgOzsgdGV4dCB3aWxsIGJlIGluc2VydGVkIHRvIGluc2lk ZSBvZiB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgIDs7IHJlZ2lvbi4KKyAgICAgICAgICAg IChzZXRxIGRyYWctYnV0LW5lZ2xpZ2libGUKKyAgICAgICAgICAgICAgICAgIChhbmQgKDwg KG92ZXJsYXktc3RhcnQgbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5KQorICAgICAgICAg ICAgICAgICAgICAgICAgICBwb2ludC10by1wYXN0ZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKDwgcG9pbnQtdG8tcGFzdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJs YXktZW5kIG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheSkpKSkpCisKKyAgICAgICAgICA7 OyBTaG93IGEgdG9vbHRpcC4KKyAgICAgICAgICAoaWYgbW91c2UtZHJhZy1hbmQtZHJvcC1y ZWdpb24tc2hvdy10b29sdGlwCisgICAgICAgICAgICAgIDs7IChhbmQgbW91c2UtZHJhZy1h bmQtZHJvcC1yZWdpb24tc2hvdy10b29sdGlwCisgICAgICAgICAgICAgIDs7ICAgICAgKG5v dCBkcmFnLWJ1dC1uZWdsaWdpYmxlKQorICAgICAgICAgICAgICA7OyAgICAgIChub3QgcG9p bnQtdG8tcGFzdGUtcmVhZC1vbmx5KQorICAgICAgICAgICAgICA7OyAgICAgIGN1cnNvci1p bi10ZXh0LWFyZWEpCisgICAgICAgICAgICAgICh0b29sdGlwLXNob3cgdGV4dC10b29sdGlw KQorICAgICAgICAgICAgKHRvb2x0aXAtaGlkZSkpCisKKyAgICAgICAgICA7OyBTaG93IGN1 cnNvciBhbmQgaGlnaGxpZ2h0IHRoZSBvcmlnaW5hbCByZWdpb24uCisgICAgICAgICAgKHdo ZW4gbW91c2UtZHJhZy1hbmQtZHJvcC1yZWdpb24tc2hvdy1jdXJzb3IKKyAgICAgICAgICAg IDs7IE1vZGlmeSBjdXJzb3IgZXZlbiB3aGVuIHBvaW50IGlzIG91dCBvZiBmcmFtZS4KKyAg ICAgICAgICAgIChzZXRxIGN1cnNvci10eXBlIChjb25kCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChub3QgY3Vyc29yLWluLXRleHQtYXJlYSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgob3IgcG9pbnQtdG8tcGFzdGUtcmVhZC1vbmx5CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcmFnLWJ1dC1uZWdsaWdpYmxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnaG9sbG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXIpKSkKKyAgICAgICAg ICAgICh3aGVuIGN1cnNvci1pbi10ZXh0LWFyZWEKKyAgICAgICAgICAgICAgKG92ZXJsYXkt cHV0IG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2ZhY2UgJ21vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uKQorICAgICAgICAgICAg ICAoZGVhY3RpdmF0ZS1tYXJrKSAgICAgOyBNYWludGFpbiByZWdpb24gaW4gb3RoZXIgd2lu ZG93LgorICAgICAgICAgICAgICAobW91c2Utc2V0LXBvaW50IGV2ZW50KSkpKSkKKworICAg ICAgOzsgSGlkZSBhIHRvb2x0aXAuCisgICAgICAod2hlbiBtb3VzZS1kcmFnLWFuZC1kcm9w LXJlZ2lvbi1zaG93LXRvb2x0aXAgKHRvb2x0aXAtaGlkZSkpCisKKyAgICAgIDs7IENoZWNr IGlmIG1vZGlmaWVyIHdhcyBwcmVzc2VkIG9uIGRyb3AuCisgICAgICAoc2V0cSBuby1tb2Rp Zmllci1vbi1kcm9wCisgICAgICAgICAgICAobm90IChtZW1iZXIgbW91c2UtZHJhZy1hbmQt ZHJvcC1yZWdpb24gKGV2ZW50LW1vZGlmaWVycyBldmVudCkpKSkKKworICAgICAgOzsgQ2hl Y2sgaWYgZXZlbnQgd2FzICJjbGljayIuCisgICAgICAoc2V0cSBjbGlja2VkIChub3QgdmFs dWUtc2VsZWN0aW9uKSkKKworICAgICAgOzsgUmVzdG9yZSBzdGF0dXMgb24gZHJhZyB0byBv dXRzaWRlIG9mIHRleHQtYXJlYSBvciBub24tbW91c2UgaW5wdXQuCisgICAgICA7OyBodHRw czovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTctMTEvbXNn MDA0ODYuaHRtbAorICAgICAgKHdoZW4gKG9yIChub3QgY3Vyc29yLWluLXRleHQtYXJlYSkK KyAgICAgICAgICAgICAgICAobm90IChlcXVhbCAoZXZlbnQtYmFzaWMtdHlwZSBldmVudCkg bW91c2UtYnV0dG9uKSkpCisgICAgICAgIChzZXRxIGRyYWctYnV0LW5lZ2xpZ2libGUgdAor ICAgICAgICAgICAgICBuby1tb2RpZmllci1vbi1kcm9wIHQpKQorCisgICAgICA7OyBEbyBu b3QgbW9kaWZ5IGFueSBidWZmZXJzIHdoZW4gZXZlbnQgaXMgImNsaWNrIiwKKyAgICAgIDs7 ICJkcmFnIGJ1dCBuZWdsaWdpYmxlIiwgb3IgImRyYWcgdG8gcmVhZC1vbmx5Ii4KKyAgICAg IChsZXQqICgobW91c2UtZHJhZy1hbmQtZHJvcC1yZWdpb24tY3V0LXdoZW4tYnVmZmVycy1k aWZmZXIKKyAgICAgICAgICAgICAgKGlmIG5vLW1vZGlmaWVyLW9uLWRyb3AKKyAgICAgICAg ICAgICAgICAgIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uLWN1dC13aGVuLWJ1ZmZlcnMt ZGlmZmVyCisgICAgICAgICAgICAgICAgKG5vdCBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lv bi1jdXQtd2hlbi1idWZmZXJzLWRpZmZlcikpKQorICAgICAgICAgICAgICh3YW5uYS1wYXN0 ZS10by1zYW1lLWJ1ZmZlciAoZXF1YWwgYnVmZmVyLXRvLXBhc3RlIGJ1ZmZlcikpCisgICAg ICAgICAgICAgKHdhbm5hLWN1dC1vbi1zYW1lLWJ1ZmZlciAoYW5kIHdhbm5hLXBhc3RlLXRv LXNhbWUtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vLW1vZGlmaWVyLW9uLWRyb3ApKQorICAgICAgICAgICAgICh3YW5uYS1jdXQtb24t b3RoZXItYnVmZmVyIChhbmQgKG5vdCB3YW5uYS1wYXN0ZS10by1zYW1lLWJ1ZmZlcikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlLWRyYWct YW5kLWRyb3AtcmVnaW9uLWN1dC13aGVuLWJ1ZmZlcnMtZGlmZmVyKSkKKyAgICAgICAgICAg ICAoY2Fubm90LXBhc3RlIChvciBwb2ludC10by1wYXN0ZS1yZWFkLW9ubHkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAob3Igd2FubmEtY3V0LW9uLXNhbWUtYnVm ZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbm5hLWN1 dC1vbi1vdGhlci1idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXh0LWZyb20tcmVhZC1vbmx5KSkpKQorCiAgICAgICAgIChjb25kCi0gICAgICAgICA7OyAi ZHJhZyBuZWdsaWdpYmxlIiBvciAiZHJhZyB0byByZWFkLW9ubHkiLCByZXN0b3JlIHJlZ2lv bi4KLSAgICAgICAgICh2YWx1ZS1zZWxlY3Rpb24KLSAgICAgICAgICAoc2VsZWN0LXdpbmRv dyB3aW5kb3cpIDsgSW4gY2FzZSBtaXNzIGRyYWcgdG8gb3RoZXIgd2luZG93CisgICAgICAg ICA7OyBNb3ZlIHBvaW50IHdpdGhpbiByZWdpb24uCisgICAgICAgICAoY2xpY2tlZAorICAg ICAgICAgIChkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgKG1vdXNlLXNldC1wb2ludCBl dmVudCkpCisgICAgICAgICA7OyBVbmRvIG9wZXJhdGlvbi4gU2V0IGJhY2sgdGhlIG9yaWdp bmFsIHRleHQgYXMgcmVnaW9uLgorICAgICAgICAgKChvciAoYW5kIGRyYWctYnV0LW5lZ2xp Z2libGUKKyAgICAgICAgICAgICAgICAgICBuby1tb2RpZmllci1vbi1kcm9wKQorICAgICAg ICAgICAgICBjYW5ub3QtcGFzdGUpCisgICAgICAgICAgOzsgSW5mb3JtIHVzZXIgZWl0aGVy IHNvdXJjZSBvciBkZXN0aW5hdGlvbiBidWZmZXIgY2Fubm90IGJlIG1vZGlmaWVkLgorICAg ICAgICAgICh3aGVuIChhbmQgKG5vdCBkcmFnLWJ1dC1uZWdsaWdpYmxlKQorICAgICAgICAg ICAgICAgICAgICAgY2Fubm90LXBhc3RlKQorICAgICAgICAgICAgKG1lc3NhZ2UgIkJ1ZmZl ciBpcyByZWFkLW9ubHkiKSkKKworICAgICAgICAgIDs7IFNlbGVjdCBzb3VyY2Ugd2luZG93 IGJhY2sgYW5kIHJlc3RvcmUgcmVnaW9uLgorICAgICAgICAgIDs7IChzZXQtd2luZG93LXBv aW50IHdpbmRvdyBwb2ludCkKKyAgICAgICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3cpCiAg ICAgICAgICAgKGdvdG8tY2hhciBwb2ludCkKICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRl LW1hcmsgbmlsKQogICAgICAgICAgIChhY3RpdmF0ZS1tYXJrKSkKLSAgICAgICAgIDs7ICJl dmVudCB3YXMgY2xpY2siCisgICAgICAgICA7OyBNb2RpZnkgYnVmZmVycy4KICAgICAgICAg ICh0Ci0gICAgICAgICAgKGRlYWN0aXZhdGUtbWFyaykKLSAgICAgICAgICAobW91c2Utc2V0 LXBvaW50IGV2ZW50KSkpCi0gICAgICA7OyBNb2RpZnkgYnVmZmVyIHVuZGVyIG1vdXNlIGJ5 IGluc2VydGluZyB0ZXh0LgotICAgICAgKHB1c2gtbWFyaykKLSAgICAgIChpbnNlcnQgdmFs dWUtc2VsZWN0aW9uKQotICAgICAgKHdoZW4gKG5vdCAoZXF1YWwgKG1hcmspIChwb2ludCkp KSA7IG9uIHN1Y2Nlc3MgaW5zZXJ0Ci0gICAgICAgIChzZXRxIGRlYWN0aXZhdGUtbWFyayBu aWwpCi0gICAgICAgIChhY3RpdmF0ZS1tYXJrKSkgOyBoYXZlIHJlZ2lvbiBvbiBkZXN0aW5h dGlvbgotICAgICAgOzsgVGFrZSBjYXJlIG9mIGluaXRpYWwgcmVnaW9uIG9uIHNvdXJjZS4K LSAgICAgIChpZiAoZXF1YWwgKGN1cnJlbnQtYnVmZmVyKSBidWZmZXIpIDsgd2hlbiBzYW1l IGJ1ZmZlcgotICAgICAgICAgIChsZXQgKGRlYWN0aXZhdGUtbWFyaykgOyByZW1vdmUgdGV4 dAotICAgICAgICAgICAgKHVubGVzcyAobWVtYmVyIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVn aW9uIChldmVudC1tb2RpZmllcnMgZXZlbnQpKQotICAgICAgICAgICAgICAoa2lsbC1yZWdp b24gKG92ZXJsYXktc3RhcnQgbW91c2Utc2Vjb25kYXJ5LW92ZXJsYXkpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAob3ZlcmxheS1lbmQgbW91c2Utc2Vjb25kYXJ5LW92ZXJsYXkp KSkpCi0gICAgICAgIChsZXQgKCh3aW5kb3cxIChzZWxlY3RlZC13aW5kb3cpKSkgOyB3aGVu IGJleW9uZCBidWZmZXIKLSAgICAgICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3cpCi0gICAg ICAgICAgKGdvdG8tY2hhciBwb2ludCkgOyByZXN0b3JlIHBvaW50IG9uIHNvdXJjZSB3aW5k b3cKLSAgICAgICAgICAoYWN0aXZhdGUtbWFyaykgOyByZXN0b3JlIHJlZ2lvbgotICAgICAg ICAgIChzZWxlY3Qtd2luZG93IHdpbmRvdzEpKSkpCi0gICAgKGRlbGV0ZS1vdmVybGF5IG1v dXNlLXNlY29uZGFyeS1vdmVybGF5KSkpCisgICAgICAgICAgOzsgKiBERVNUSU5BVElPTiBC VUZGRVI6OgorICAgICAgICAgIDs7IEluc2VydCB0aGUgdGV4dCB0byBkZXN0aW5hdGlvbiBi dWZmZXIgdW5kZXIgbW91c2UuCisgICAgICAgICAgKHNlbGVjdC13aW5kb3cgd2luZG93LXRv LXBhc3RlKQorICAgICAgICAgIChzZXRxIHdpbmRvdy1leGVtcHQgd2luZG93LXRvLXBhc3Rl KQorICAgICAgICAgIChnb3RvLWNoYXIgcG9pbnQtdG8tcGFzdGUpCisgICAgICAgICAgKHB1 c2gtbWFyaykKKyAgICAgICAgICAoaW5zZXJ0IHZhbHVlLXNlbGVjdGlvbikKKyAgICAgICAg ICA7OyBPbiBzdWNjZXNzLCBzZXQgdGhlIHRleHQgYXMgcmVnaW9uIG9uIGRlc3RpbmF0aW9u IGJ1ZmZlci4KKyAgICAgICAgICAod2hlbiAobm90IChlcXVhbCAobWFyaykgKHBvaW50KSkp CisgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgbmlsKQorICAgICAgICAgICAg KGFjdGl2YXRlLW1hcmspKQorCisgICAgICAgICAgOzsgKiBTT1VSQ0UgQlVGRkVSOjoKKyAg ICAgICAgICA7OyBTZXQgYmFjayB0aGUgb3JpZ2luYWwgdGV4dCBhcyByZWdpb24gb3IgZGVs ZXRlIHRoZSBvcmlnaW5hbAorICAgICAgICAgIDs7IHRleHQsIG9uIHNvdXJjZSBidWZmZXIu CisgICAgICAgICAgKGlmIHdhbm5hLXBhc3RlLXRvLXNhbWUtYnVmZmVyCisgICAgICAgICAg ICAgIDs7IFdoZW4gc291cmNlIGJ1ZmZlciBhbmQgZGVzdGluYXRpb24gYnVmZmVyIGFyZSB0 aGUgc2FtZSwKKyAgICAgICAgICAgICAgOzsgcmVtb3ZlIHRoZSBvcmlnaW5hbCB0ZXh0Lgor ICAgICAgICAgICAgICAod2hlbiBuby1tb2RpZmllci1vbi1kcm9wCisgICAgICAgICAgICAg ICAgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKG92ZXJsYXktc3RhcnQgbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktZW5kIG1vdXNlLWRyYWct YW5kLWRyb3Atb3ZlcmxheSkpKSkKKyAgICAgICAgICAgIDs7IFdoZW4gc291cmNlIGJ1ZmZl ciBhbmQgZGVzdGluYXRpb24gYnVmZmVyIGFyZSBkaWZmZXJlbnQsCisgICAgICAgICAgICA7 OyBrZWVwIChzZXQgYmFjayB0aGUgb3JpZ2luYWwgdGV4dCBhcyByZWdpb24pIG9yIHJlbW92 ZSB0aGUKKyAgICAgICAgICAgIDs7IG9yaWdpbmFsIHRleHQuCisgICAgICAgICAgICAoc2Vs ZWN0LXdpbmRvdyB3aW5kb3cpIDsgU2VsZWN0IHdpbmRvdyB3aXRoIHNvdXJjZSBidWZmZXIu CisgICAgICAgICAgICAoZ290by1jaGFyIHBvaW50KSA7IE1vdmUgcG9pbnQgdG8gdGhlIG9y aWdpbmFsIHRleHQgb24gc291cmNlIGJ1ZmZlci4KKworICAgICAgICAgICAgKGlmIG1vdXNl LWRyYWctYW5kLWRyb3AtcmVnaW9uLWN1dC13aGVuLWJ1ZmZlcnMtZGlmZmVyCisgICAgICAg ICAgICAgICAgOzsgUmVtb3ZlIHRoZSBkcmFnZ2VkIHRleHQgZnJvbSBzb3VyY2UgYnVmZmVy IGxpa2UKKyAgICAgICAgICAgICAgICA7OyBvcGVyYXRpb24gYGN1dCcuCisgICAgICAgICAg ICAgICAgKGRlbGV0ZS1yZWdpb24gKG92ZXJsYXktc3RhcnQgbW91c2UtZHJhZy1hbmQtZHJv cC1vdmVybGF5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LWVu ZCBtb3VzZS1kcmFnLWFuZC1kcm9wLW92ZXJsYXkpKQorICAgICAgICAgICAgICA7OyBTZXQg YmFjayB0aGUgZHJhZ2dlZCB0ZXh0IGFzIHJlZ2lvbiBvbiBzb3VyY2UgYnVmZmVyCisgICAg ICAgICAgICAgIDs7IGxpa2Ugb3BlcmF0aW9uIGBjb3B5Jy4KKyAgICAgICAgICAgICAgKGFj dGl2YXRlLW1hcmspKQorICAgICAgICAgICAgKHNlbGVjdC13aW5kb3cgd2luZG93LXRvLXBh c3RlKSkpKSkpCisKKyAgICA7OyBDbGVhbiB1cC4KKyAgICAoZGVsZXRlLW92ZXJsYXkgbW91 c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5KQorCisgICAgOzsgUmVzdG9yZSBvbGQgc3RhdGVz IGJ1dCBmb3IgdGhlIHdpbmRvdyB3aGVyZSB0aGUgZHJvcAorICAgIDs7IG9jY3VycmVkLiBS ZXN0b3JlIGN1cnNvciB0eXBlcyBmb3IgYWxsIHdpbmRvd3MuCisgICAgKGRvbGlzdCAoc3Rh dGUgc3RhdGVzKQorICAgICAgKGxldCAoKHdpbmRvdyAoY2FyIHN0YXRlKSkpCisgICAgICAg ICh3aGVuIChhbmQgd2luZG93LWV4ZW1wdAorICAgICAgICAgICAgICAgICAgIChub3QgKGVx IHdpbmRvdyB3aW5kb3ctZXhlbXB0KSkpCisgICAgICAgICAgKHNldC13aW5kb3ctc3RhcnQg d2luZG93IChudGggMSBzdGF0ZSkgJ25vZm9yY2UpCisgICAgICAgICAgKHNldC1tYXJrZXIg KG50aCAxIHN0YXRlKSBuaWwpCisgICAgICAgICAgOzsgSWYgd2luZG93IGlzIHNlbGVjdGVk LCB0aGUgZm9sbG93aW5nIGF1dG9tYXRpY2FsbHkgc2V0cworICAgICAgICAgIDs7IHBvaW50 IGZvciB0aGF0IHdpbmRvdydzIGJ1ZmZlci4KKyAgICAgICAgICAoc2V0LXdpbmRvdy1wb2lu dCB3aW5kb3cgKG50aCAyIHN0YXRlKSkKKyAgICAgICAgICAoc2V0LW1hcmtlciAobnRoIDIg c3RhdGUpIG5pbCkpCisgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICh3aW5kb3ctYnVm ZmVyIHdpbmRvdykKKyAgICAgICAgICAoc2V0cSBjdXJzb3ItdHlwZSAobnRoIDMgc3RhdGUp KSkpKSkpCiAMCiAKIDs7OyBCaW5kaW5ncyBmb3IgbW91c2UgY29tbWFuZHMuCgo= --------------020101040903080800040907--