From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Neil Jerram" Newsgroups: gmane.lisp.guile.devel Subject: Re: Stack calibration Date: Sat, 27 Sep 2008 19:20:32 +0100 Message-ID: <49dd78620809271120j17097ffq4da8f2b8dffd4efd@mail.gmail.com> References: <47B2A8DF.9070004@tammer.net> <47B2D88F.1040505@tammer.net> <87ir0tvx6e.fsf@inria.fr> <87wsp83807.fsf@ossau.uklinux.net> <871w7fore8.fsf@gnu.org> <66e540fe0802140226k3cd96c46x286ac753bbb2b8b7@mail.gmail.com> <87ejbfg4pr.fsf@gnu.org> <66e540fe0802140339n2121e1d9y85fcc9f019d8be0f@mail.gmail.com> <87prukog9w.fsf@ossau.uklinux.net> <87hc8lw0q2.fsf_-_@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_35669_3612816.1222539632379" X-Trace: ger.gmane.org 1222539652 15189 80.91.229.12 (27 Sep 2008 18:20:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 27 Sep 2008 18:20:52 +0000 (UTC) Cc: guile-devel@gnu.org To: "=?ISO-8859-1?Q?Ludovic_Court=E8s?=" Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Sep 27 20:21:49 2008 connect(): Connection refused Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KjeQN-0006KL-Lb for guile-devel@m.gmane.org; Sat, 27 Sep 2008 20:21:49 +0200 Original-Received: from localhost ([127.0.0.1]:34076 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KjePK-0002Vg-8m for guile-devel@m.gmane.org; Sat, 27 Sep 2008 14:20:42 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KjePG-0002UH-MK for guile-devel@gnu.org; Sat, 27 Sep 2008 14:20:38 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KjePD-0002Sn-FW for guile-devel@gnu.org; Sat, 27 Sep 2008 14:20:38 -0400 Original-Received: from [199.232.76.173] (port=35412 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KjePD-0002Sd-Ar for guile-devel@gnu.org; Sat, 27 Sep 2008 14:20:35 -0400 Original-Received: from rv-out-0708.google.com ([209.85.198.249]:12921) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KjePC-0005Dt-Hh for guile-devel@gnu.org; Sat, 27 Sep 2008 14:20:35 -0400 Original-Received: by rv-out-0708.google.com with SMTP id k29so1640531rvb.6 for ; Sat, 27 Sep 2008 11:20:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=wQ+LFGAr0ghYmvdsE5i8xYeK4TBTS6LDbxYmhL5b5V4=; b=bteXhKexJuOIhfv0NC/aJ1AgJ25Xof28hAybJ7NZdK4jJMMw24JDUnr3+cae59rFKu T4xxG7iyaihGAWG3iFS55fTdshGGTpy5GPIC1QQmjFzgggWVWMqWMPEmxPMEtgttK2cY Ghq7gMNyxrtRQM1adUMOVhtCayyNfvhje2nUc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=FNK/97euGhHHjV3Gb0/WeENXmMEFvDNA8NPuE7aKpNum8v7mBxcYvVUe057hwhylU+ GAn2l/cvpyQ9G5Wxg7bxFmJIyL3w+iPh9LJqIpawCfZC5I8rIag71DBemkPdzx9WzgfK dwQhbF0YZFrgUTpdeWvjFxBB9Z3qrdNy0Y0mA= Original-Received: by 10.141.128.19 with SMTP id f19mr1445618rvn.257.1222539632393; Sat, 27 Sep 2008 11:20:32 -0700 (PDT) Original-Received: by 10.140.142.15 with HTTP; Sat, 27 Sep 2008 11:20:32 -0700 (PDT) In-Reply-To: <87hc8lw0q2.fsf_-_@gnu.org> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:7739 Archived-At: ------=_Part_35669_3612816.1222539632379 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi there, 2008/9/12 Ludovic Court=E8s : > > That's the second important thing that should go in 1.8.6 IMO. Cool... >> + /* x1 and x2 are the stack depth values that we get on a Debian >> + GNU/Linux ia32 system - which we take as our canonical system. >> + y1 and y2 are the values measured on the system where Guile is >> + currently running. */ >> + int x1 =3D 170, x2 =3D 690, y1, y2; > > These results are dependent on what the loop in `boot-9.scm' does. > Thus, it'd be nicer if they weren't that far away from it. Agreed, and I think I've addressed this in my latest version (below). > It might be worth mentioning the GCC version and optimization level that > led to this result. Good idea, will do. (This isn't yet in the attached patch.) > Also, `x1' and `x2' can be made "static const" or some such. In the new version, they are #defines. >> + SCM_VALIDATE_INT_COPY (1, d1, y1); >> + SCM_VALIDATE_INT_COPY (2, d2, y2); >> + >> + calibrated_m =3D ((double) (y2 - y1)) / (x2 - x1); >> + calibrated_c =3D ((double) y2) - calibrated_m * x2; > > Shouldn't it be: > > calibrated_c =3D y1 - x1; No, don't think so! My model equation is y =3D mx + c, so c =3D y - mx. > Also, the computation of `calibrated_m' needs more casts to `double' I > think. I don't think so, and this hasn't changed in the new version. Where and why do you think more casts are needed? > Could it be moved to a `%print-stack-calibration' function that we'd use > for troubleshooting? Yes. In the attached patch, I've left this out completely, but I think we should add it back in as %get-stack-calibration. > How about entirely removing the startup overhead by computing the > calibration factors only once, at installation time? > > This would mean: > > 1. Compile all of Guile with the default calibration factors (m =3D 1 > and c =3D 0). Agreed. > 2. Run a Scheme script that computes `m' and `c' and produces, say, > `calibration.h', which is included by `stackchk.c'. Both the > computation and the reference stack depths (`x1' and `x2' above) > would live in this script, which is clearer IMO. Agreed, see new libguile/calibrate.scm file. > 3. Invoke `make' recursively, which should rebuild libguile with the > appropriate calibration factor (typically, only `stackchk.lo' would > need to be recompiled). I've done this part a bit differently - see the libguile/Makefile.am changes - because I couldn't see exactly how the recursive make approach would work. If you think recursive make would be significantly better, can you describe or propose the detailed changes that would be needed? > Also, the on-line and Texi documentation of `eval-options' must be > updated to specify that the stack depth unit is "abstract" and > (hopefully) portable across platforms. I will do this (and also NEWS), but let's agree all the code first. Many thanks for your detailed review, BTW! Regards, Neil ------=_Part_35669_3612816.1222539632379 Content-Type: text/x-patch; name=0001-Avoid-stack-overflow-errors.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_flmkie820 Content-Disposition: attachment; filename=0001-Avoid-stack-overflow-errors.patch RnJvbSA2Zjg0YjUyYmQ3NmUyNzc3ZGJmZGRjZGE1NzFmNTJkYmM4Mjg5NWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOZWlsIEplcnJhbSA8bmVpbEBvc3NhdS51a2xpbnV4Lm5ldD4K RGF0ZTogU2F0LCAyNyBTZXAgMjAwOCAxOTowODowNyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEF2 b2lkIHN0YWNrIG92ZXJmbG93IGVycm9ycwoKLi4uIHdoZW4gYnVpbGRpbmcgYW5kIHRlc3Rpbmcg R3VpbGUsIGJ5IGFkanVzdGluZyBHdWlsZSdzIHN0YWNrCm92ZXJmbG93IGFsZ29yaXRobSBmb3Ig dGhlIGFjdHVhbCBhdmVyYWdlIGRlcHRoIG9mIHN0YWNrIHBlciBldmFsIGNhbGwKdGhhdCB0aGUg YnVpbGQgcGxhdGZvcm0gdXNlcy4KClRvIGF2b2lkIGEgcGVuYWx0eSBhdCBydW50aW1lIHdoZW4g dXNpbmcgYW4gaW5zdGFsbGVkIEd1aWxlLCB3ZSBidWlsZApHdWlsZSBpbiB0d28gc3RhZ2VzLiAg QW4gInVuY2FsaWJyYXRlZCIgR3VpbGUgKHVndWlsZSkgaXMgYnVpbHQgd2l0aAphbiBhcmJpdHJh cnkgYXNzdW1wdGlvbiBhYm91dCB0aGUgcGxhdGZvcm0ncyBzdGFjayB1c2FnZS4gIFRoZW4gd2Ug dXNlCnVndWlsZSB0byBydW4gYSBTY2hlbWUgc2NyaXB0IHRoYXQgbWVhc3VyZXMgYWN0dWFsIHN0 YWNrIHVzYWdlLCBhbmQKZ2VuZXJhdGVzIGEgbW9kaWZpZWQgQyBzb3VyY2UgZmlsZSAoc3RhY2tj aGstY2FsaWJyYXRlZC5jKSB0aGF0CmNvbnRhaW5zIHRoZXNlIG1lYXN1cmVtZW50cy4gIFRoZW4g d2UgYnVpbGQgYSBwcm9wZXJseSBjYWxpYnJhdGVkCkd1aWxlLCBmcm9tIHNvdXJjZXMgdGhhdCBp bmNsdWRlIHN0YWNrY2hrLWNhbGlicmF0ZWQuYy4KCiogYW0vcHJlLWluc3QtZ3VpbGUgKHByZWlu c3R1Z3VpbGUsIHByZWluc3R1Z3VpbGV0b29sKTogTmV3CiAgZGVmaW5pdGlvbnMuCgoqIGNvbmZp Z3VyZS5pbiAoVUdVSUxFX0ZPUl9CVUlMRCk6IFNldCB1cCBpbiB0aGUgc2FtZSB3YXkgYXMKICBH VUlMRV9GT1JfQlVJTEQuCiAgKHByZS1pbnN0LXVndWlsZSk6IEdlbmVyYXRlLCBmcm9tIHByZS1p bnN0LXVndWlsZS5pbi4KCiogbGliZ3VpbGUvTWFrZWZpbGUuYW0gKG5vaW5zdF9QUk9HUkFNUyk6 IEFkZCB1Z3VpbGUuCiAgKG5vaW5zdF9MVExJQlJBUklFUyk6IE5ldywgY29udGFpbmluZyBsaWJ1 Z3VpbGUubGEuCiAgKHVndWlsZV9MREFERCwgdWd1aWxlX0NGTEFHUywgdWd1aWxlX0xEQURELCB1 Z3VpbGVfTERGTEFHUyk6IE5ldy4KICAoTElCR1VJTEVfU09VUkNFUyk6IE5ldywgY29udGFpbmlu ZyB3aGF0IHVzZWQgdG8gYmUgaW4gbGliZ3VpbGVfbGFfU09VUkNFUywgbWludXMgc3RhY2tjaGsu Yy4KICAobGliZ3VpbGVfbGFfU09VUkNFUyk6IENoYW5nZWQgdG8gTElCR1VJTEVfU09VUkNFUyAr IHN0YWNrY2hrLWNhbGlicmF0ZWQuYy4KICAobGlidWd1aWxlX2xhX0NGTEFHUyk6IE5ldy4KICAo bGlidWd1aWxlX2xhX1NPVVJDRVMpOiBOZXcsIExJQkdVSUxFX1NPVVJDRVMgKyBzdGFja2Noay5j CiAgKEVYVFJBX2xpYnVndWlsZV9sYV9TT1VSQ0VTKTogTmV3LCBzYW1lIGFzIEVYVFJBX2xpYmd1 aWxlX2xhX1NPVVJDRVMuCiAgKGxpYnVndWlsZV9sYV9ERVBFTkRFTkNJRVMsIGxpYnVndWlsZV9s YV9MSUJBREQsCiAgbGlidWd1aWxlX2xhX0xERkxBR1MpOiBOZXcsIHNhbWUgYXMgY29ycmVzcG9u ZGluZyBsaWJndWlsZSoKICBkZWZpbml0aW9ucy4KICAoc3RhY2tjaGstY2FsaWJyYXRlZC5jKTog TmV3LCBidWlsdCBieSB1bmNhbGlicmF0ZWQgZ3VpbGUuCgoqIGxpYmd1aWxlL2NhbGlicmF0ZS5z Y206IE5ldywgdG8gZ2VuZXJhdGUgc3RhY2sgY2FsaWJyYXRpb24KICBtZWFzdXJlbWVudHMuCgoq IGxpYmd1aWxlL2RlYnVnLmggKFNDTV9SRVNFVF9ERUJVR19NT0RFKTogQWRkCiAgc2NtX2NhbGN1 bGF0ZV9zdGFja19saW1pdCAoKSBjYWxsLgoKKiBsaWJndWlsZS9zdGFja2Noay5jIChzY21fc3Rh Y2tfbGltaXQsIGNhbGlicmF0ZWRfbSwgY2FsaWJyYXRlZF9jKToKICBOZXcgdmFyaWFibGVzLgog IChzY21fc3lzX2dldF9zdGFja19kZXB0aCwgc2NtX2NhbGN1bGF0ZV9zdGFja19saW1pdCk6IE5l dyBmdW5jdGlvbnMuCiAgKHNjbV9pbml0X3N0YWNrY2hrKTogSWYgcG9zc2libGUsIGNhbGN1bGF0 ZSBub24tZGVmYXVsdCB2YWx1ZXMgZm9yCiAgY2FsaWJyYXRlZF9jIGFuZCBjYWxpYnJhdGVkX20u ICBBbHNvIGNhbGwgc2NtX2NhbGN1bGF0ZV9zdGFja19saW1pdCAoKS4KCiogbGliZ3VpbGUvc3Rh Y2tjaGsuaCAoU0NNX1NUQUNLX09WRVJGTE9XX1ApOiBSZXdyaXRlIHRvIHVzZQogIHNjbV9zdGFj a19saW1pdCBpbnN0ZWFkIG9mIFNDTV9TVEFDS19MSU1JVC4KICAoc2NtX3N0YWNrX2xpbWl0LCBz Y21fc3lzX2dldF9zdGFja19kZXB0aCwKICBzY21fY2FsY3VsYXRlX3N0YWNrX2xpbWl0KTogTmV3 IGRlY2xhcmF0aW9ucy4KCiogcHJlLWluc3QtdWd1aWxlLmluOiBOZXcgZmlsZSwganVzdCBsaWtl IHByZS1pbnN0LWd1aWxlLmluLCBidXQgdG8KICBydW4gdGhlIHVuY2FsaWJyYXRlZCBHdWlsZSBp bnN0ZWFkIG9mIHRoZSBjYWxpYnJhdGVkIG9uZS4KLS0tCiBhbS9wcmUtaW5zdC1ndWlsZSAgICAg IHwgICAgMyArCiBjb25maWd1cmUuaW4gICAgICAgICAgIHwgICAxNiArKysrKysrKwogbGliZ3Vp bGUvTWFrZWZpbGUuYW0gICB8ICAgMjggKysrKysrKysrKysrLQogbGliZ3VpbGUvY2FsaWJyYXRl LnNjbSB8ICAgMzIgKysrKysrKysrKysrKysrCiBsaWJndWlsZS9kZWJ1Zy5oICAgICAgIHwgICAg MSArCiBsaWJndWlsZS9zdGFja2Noay5jICAgIHwgICAzNCArKysrKysrKysrKysrKysrCiBsaWJn dWlsZS9zdGFja2Noay5oICAgIHwgICAxMiArKystLS0KIHByZS1pbnN0LXVndWlsZS5pbiAgICAg fCAgIDk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog OCBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJndWlsZS9jYWxpYnJhdGUuc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQg cHJlLWluc3QtdWd1aWxlLmluCgpkaWZmIC0tZ2l0IGEvYW0vcHJlLWluc3QtZ3VpbGUgYi9hbS9w cmUtaW5zdC1ndWlsZQppbmRleCBjMWE3NDA3Li4zNWJhNmMzIDEwMDY0NAotLS0gYS9hbS9wcmUt aW5zdC1ndWlsZQorKysgYi9hbS9wcmUtaW5zdC1ndWlsZQpAQCAtMzEsNCArMzEsNyBAQAogcHJl aW5zdGd1aWxlICAgICA9ICQodG9wX2J1aWxkZGlyX2Fic29sdXRlKS9wcmUtaW5zdC1ndWlsZQog cHJlaW5zdGd1aWxldG9vbCA9IEdVSUxFPSIkKHByZWluc3RndWlsZSkiICQodG9wX3NyY2Rpcikv c2NyaXB0cwogCitwcmVpbnN0dWd1aWxlICAgICA9ICQodG9wX2J1aWxkZGlyX2Fic29sdXRlKS9w cmUtaW5zdC11Z3VpbGUKK3ByZWluc3R1Z3VpbGV0b29sID0gR1VJTEU9IiQocHJlaW5zdHVndWls ZSkiICQodG9wX3NyY2Rpcikvc2NyaXB0cworCiAjIyBhbS9wcmUtaW5zdC1ndWlsZSBlbmRzIGhl cmUKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgppbmRleCA3MTNlNjM0 Li4zNTExOGNmIDEwMDY0NAotLS0gYS9jb25maWd1cmUuaW4KKysrIGIvY29uZmlndXJlLmluCkBA IC0xNDEzLDYgKzE0MTMsMjEgQEAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSAieWVzIjsg dGhlbgogZmkKIEFDX0FSR19WQVIoR1VJTEVfRk9SX0JVSUxELFtndWlsZSBmb3IgYnVpbGQgc3lz dGVtXSkKIEFDX1NVQlNUKEdVSUxFX0ZPUl9CVUlMRCkKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBp bGluZyIgPSAieWVzIjsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcodW5jYWxpYnJhdGVkIGd1aWxl IGZvciBidWlsZCkKKyAgVUdVSUxFX0ZPUl9CVUlMRD0iJHtVR1VJTEVfRk9SX0JVSUxELXVndWls ZX0iCitlbHNlCisgIFVHVUlMRV9GT1JfQlVJTEQ9JyQocHJlaW5zdHVndWlsZSknCitmaSAgIAor CisjIyBBQ19NU0dfQ0hFQ0tJTkcoImlmIHdlIGFyZSBjcm9zcyBjb21waWxpbmciKQorIyMgQUNf TVNHX1JFU1VMVCgkY3Jvc3NfY29tcGlsaW5nKQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIg PSAieWVzIjsgdGhlbgorICAgQUNfTVNHX1JFU1VMVCgkVUdVSUxFX0ZPUl9CVUlMRCkKK2ZpCitB Q19BUkdfVkFSKFVHVUlMRV9GT1JfQlVJTEQsW3VuY2FsaWJyYXRlZCBndWlsZSBmb3IgYnVpbGQg c3lzdGVtXSkKK0FDX1NVQlNUKFVHVUlMRV9GT1JfQlVJTEQpCiAgIAkJCQogIyMgSWYgd2UncmUg dXNpbmcgR0NDLCBhc2sgZm9yIGFnZ3Jlc3NpdmUgd2FybmluZ3MuCiBjYXNlICIkR0NDIiBpbgpA QCAtMTU1Niw2ICsxNTcxLDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtiZW5jaG1hcmstZ3VpbGVdLCBb Y2htb2QgK3ggYmVuY2htYXJrLWd1aWxlXSkKIEFDX0NPTkZJR19GSUxFUyhbZ3VpbGUtdG9vbHNd LCBbY2htb2QgK3ggZ3VpbGUtdG9vbHNdKQogQUNfQ09ORklHX0ZJTEVTKFtwcmUtaW5zdC1ndWls ZV0sIFtjaG1vZCAreCBwcmUtaW5zdC1ndWlsZV0pCiBBQ19DT05GSUdfRklMRVMoW3ByZS1pbnN0 LWd1aWxlLWVudl0sIFtjaG1vZCAreCBwcmUtaW5zdC1ndWlsZS1lbnZdKQorQUNfQ09ORklHX0ZJ TEVTKFtwcmUtaW5zdC11Z3VpbGVdLCBbY2htb2QgK3ggcHJlLWluc3QtdWd1aWxlXSkKIEFDX0NP TkZJR19GSUxFUyhbbGliZ3VpbGUvZ3VpbGUtc25hcmZdLAogICAgICAgICAgICAgICAgIFtjaG1v ZCAreCBsaWJndWlsZS9ndWlsZS1zbmFyZl0pCiBBQ19DT05GSUdfRklMRVMoW2xpYmd1aWxlL2d1 aWxlLWRvYy1zbmFyZl0sCmRpZmYgLS1naXQgYS9saWJndWlsZS9NYWtlZmlsZS5hbSBiL2xpYmd1 aWxlL01ha2VmaWxlLmFtCmluZGV4IGViNzYyMzcuLjQzOThlMTQgMTAwNjQ0Ci0tLSBhL2xpYmd1 aWxlL01ha2VmaWxlLmFtCisrKyBiL2xpYmd1aWxlL01ha2VmaWxlLmFtCkBAIC00MCw3ICs0MCw4 IEBAIEVUQUdTX0FSR1MgPSAtLXJlZ2V4PScvU0NNX1woR0xPQkFMX1wpP1woRz9QUk9DXHxHP1BS T0MxXHxTWU1CT0xcfFZDRUxMXHxDT05TVF9MCiBsaWJfTFRMSUJSQVJJRVMgPSBsaWJndWlsZS5s YQogYmluX1BST0dSQU1TID0gZ3VpbGUKIAotbm9pbnN0X1BST0dSQU1TID0gZ3VpbGVfZmlsdGVy X2RvY19zbmFyZmFnZSBnZW4tc2NtY29uZmlnCitub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJ1Z3Vp bGUubGEKK25vaW5zdF9QUk9HUkFNUyA9IGd1aWxlX2ZpbHRlcl9kb2Nfc25hcmZhZ2UgZ2VuLXNj bWNvbmZpZyB1Z3VpbGUKIAogZ2VuX3NjbWNvbmZpZ19TT1VSQ0VTID0gZ2VuLXNjbWNvbmZpZy5j CiAKQEAgLTk2LDkgKzk3LDE0IEBAIGd1aWxlX0NGTEFHUyA9ICQoR1VJTEVfQ0ZMQUdTKQogZ3Vp bGVfTERBREQgPSBsaWJndWlsZS5sYQogZ3VpbGVfTERGTEFHUyA9IEBETFBSRU9QRU5AICQoR1VJ TEVfQ0ZMQUdTKQogCit1Z3VpbGVfU09VUkNFUyA9IGd1aWxlLmMKK3VndWlsZV9DRkxBR1MgPSAk KEdVSUxFX0NGTEFHUykKK3VndWlsZV9MREFERCA9IGxpYnVndWlsZS5sYQordWd1aWxlX0xERkxB R1MgPSBARExQUkVPUEVOQCAkKEdVSUxFX0NGTEFHUykKKwogbGliZ3VpbGVfbGFfQ0ZMQUdTID0g JChHVUlMRV9DRkxBR1MpCiAKLWxpYmd1aWxlX2xhX1NPVVJDRVMgPSBhbGlzdC5jIGFyYml0ZXJz LmMgYXN5bmMuYyBiYWNrdHJhY2UuYyBib29sZWFuLmMJXAorTElCR1VJTEVfU09VUkNFUyA9IGFs aXN0LmMgYXJiaXRlcnMuYyBhc3luYy5jIGJhY2t0cmFjZS5jIGJvb2xlYW4uYwlcCiAgICAgY2hh cnMuYyBjb250aW51YXRpb25zLmMgY29udmVydC5jIGRlYnVnLmMgZGVwcmVjYXRpb24uYwkJXAog ICAgIGRlcHJlY2F0ZWQuYyBkaXNjb3VyYWdlZC5jIGR5bndpbmQuYyBlbnZpcm9ubWVudHMuYyBl cS5jIGVycm9yLmMJXAogICAgIGV2YWwuYyBldmFsZXh0LmMgZXh0ZW5zaW9ucy5jIGZlYXR1cmUu YyBmbHVpZHMuYyBmcG9ydHMuYwkJXApAQCAtMTEwLDExICsxMTYsMTcgQEAgbGliZ3VpbGVfbGFf U09VUkNFUyA9IGFsaXN0LmMgYXJiaXRlcnMuYyBhc3luYy5jIGJhY2t0cmFjZS5jIGJvb2xlYW4u YwlcCiAgICAgbW9kdWxlcy5jIG51bWJlcnMuYyBvYmplY3RzLmMgb2JqcHJvcC5jIG9wdGlvbnMu YyBwYWlycy5jIHBvcnRzLmMJXAogICAgIHByaW50LmMgcHJvY3Byb3AuYyBwcm9jcy5jIHByb3Bl cnRpZXMuYyByYW5kb20uYyByZGVsaW0uYyByZWFkLmMJXAogICAgIHJvb3QuYyBydy5jIHNjbXNp Z3MuYyBzY3JpcHQuYyBzaW1wb3MuYyBzbW9iLmMgc29ydC5jIHNyY3Byb3AuYwlcCi0gICAgc3Rh Y2tjaGsuYyBzdGFja3MuYyBzdGltZS5jIHN0cmluZ3MuYyBzcmZpLTQuYyBzcmZpLTEzLmMgc3Jm aS0xNC5jCVwKKyAgICBzdGFja3MuYyBzdGltZS5jIHN0cmluZ3MuYyBzcmZpLTQuYyBzcmZpLTEz LmMgc3JmaS0xNC5jCSAgICAgICAgXAogICAgIHN0cm9yZGVyLmMgc3RycG9ydHMuYyBzdHJ1Y3Qu YyBzeW1ib2xzLmMgdGhyZWFkcy5jIG51bGwtdGhyZWFkcy5jCVwKICAgICB0aHJvdy5jIHZhbHVl cy5jIHZhcmlhYmxlLmMgdmVjdG9ycy5jIHZlcnNpb24uYyB2cG9ydHMuYyB3ZWFrcy5jCVwKICAg ICByYW1hcC5jIHVuaWYuYwogCitsaWJndWlsZV9sYV9TT1VSQ0VTID0gc3RhY2tjaGstY2FsaWJy YXRlZC5jICQoTElCR1VJTEVfU09VUkNFUykKKworbGlidWd1aWxlX2xhX0NGTEFHUyA9ICQoR1VJ TEVfQ0ZMQUdTKQorCitsaWJ1Z3VpbGVfbGFfU09VUkNFUyA9IHN0YWNrY2hrLmMgJChMSUJHVUlM RV9TT1VSQ0VTKQorCiBET1RfWF9GSUxFUyA9IGFsaXN0LnggYXJiaXRlcnMueCBhc3luYy54IGJh Y2t0cmFjZS54IGJvb2xlYW4ueCBjaGFycy54CVwKICAgICBjb250aW51YXRpb25zLnggZGVidWcu eCBkZXByZWNhdGlvbi54IGRlcHJlY2F0ZWQueCBkaXNjb3VyYWdlZC54CVwKICAgICBkeW5sLngg ZHlud2luZC54IGVudmlyb25tZW50cy54IGVxLnggZXJyb3IueCBldmFsLnggZXZhbGV4dC54CVwK QEAgLTE2Miw2ICsxNzQsOCBAQCBFWFRSQV9saWJndWlsZV9sYV9TT1VSQ0VTID0gX3NjbS5oCQlc CiAgICAgZGVidWctbWFsbG9jLmMgbWtzdGVtcC5jCVwKICAgICB3aW4zMi11bmFtZS5jIHdpbjMy LWRpcmVudC5jIHdpbjMyLXNvY2tldC5jCiAKK0VYVFJBX2xpYnVndWlsZV9sYV9TT1VSQ0VTID0g JChFWFRSQV9saWJndWlsZV9sYV9TT1VSQ0VTKQorCiAjIyBkZWxldGUgZ3VpbGUtc25hcmYuYXdr IGZyb20gdGhlIGluc3RhbGxhdGlvbiBiaW5kaXIsIGluIGNhc2UgaXQncwogIyMgbGluZ2VyaW5n IHRoZXJlIGR1ZSB0byBhbiBlYXJsaWVyIGd1aWxlIHZlcnNpb24gbm90IGhhdmluZyBiZWVuCiAj IyB3aXBlZCBvdXQuCkBAIC0xODMsNiArMTk3LDEwIEBAIGxpYmd1aWxlX2xhX0RFUEVOREVOQ0lF UyA9IEBMSUJMT0JKU0AKIGxpYmd1aWxlX2xhX0xJQkFERCA9IEBMSUJMT0JKU0AKIGxpYmd1aWxl X2xhX0xERkxBR1MgPSBATFRMSUJJTlRMQCAtdmVyc2lvbi1pbmZvIEBMSUJHVUlMRV9JTlRFUkZB Q0VfQ1VSUkVOVEA6QExJQkdVSUxFX0lOVEVSRkFDRV9SRVZJU0lPTkA6QExJQkdVSUxFX0lOVEVS RkFDRV9BR0VAIC1leHBvcnQtZHluYW1pYyAtbm8tdW5kZWZpbmVkCiAKK2xpYnVndWlsZV9sYV9E RVBFTkRFTkNJRVMgPSAkKGxpYmd1aWxlX2xhX0RFUEVOREVOQ0lFUykKK2xpYnVndWlsZV9sYV9M SUJBREQgPSAkKGxpYmd1aWxlX2xhX0xJQkFERCkKK2xpYnVndWlsZV9sYV9MREZMQUdTID0gJChs aWJndWlsZV9sYV9MREZMQUdTKQorCiAjIFRoZXNlIGFyZSBoZWFkZXJzIHZpc2libGUgYXMgPGd1 aWxlL211bWJsZS5oPgogcGtnaW5jbHVkZV9IRUFERVJTID0gZ2guaAogCkBAIC0yOTQsNiArMzEy LDEwIEBAIGFsbGRvdGRvY2ZpbGVzICAgID0gJChET1RfRE9DX0ZJTEVTKSAkKEVYVFJBX0RPVF9E T0NfRklMRVMpCiBzbmFyZjJjaGVja2VkdGV4aSA9IEdVSUxFPSIkKEdVSUxFX0ZPUl9CVUlMRCki ICQodG9wX3NyY2Rpcikvc2NyaXB0cy9zbmFyZi1jaGVjay1hbmQtb3V0cHV0LXRleGkKIGRvdGRv YzJ0ZXhpICAgICAgID0gY2F0ICQoYWxsZG90ZG9jZmlsZXMpIHwgJChzbmFyZjJjaGVja2VkdGV4 aSkKIAorc3RhY2tjaGstY2FsaWJyYXRlZC5jOiB1Z3VpbGUkKEVYRUVYVCkKKwkkKFVHVUlMRV9G T1JfQlVJTEQpIC1zIGNhbGlicmF0ZS5zY20gPiAkQAorCWNhdCBzdGFja2Noay5jID4+ICRACisK IGd1aWxlLnRleGk6ICQoYWxsZG90ZG9jZmlsZXMpIGd1aWxlJChFWEVFWFQpCiAJJChkb3Rkb2My dGV4aSkgLS1tYW51YWwgPiAkQCB8fCB7IHJtICRAOyBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9s aWJndWlsZS9jYWxpYnJhdGUuc2NtIGIvbGliZ3VpbGUvY2FsaWJyYXRlLnNjbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWFiYzdiCi0tLSAvZGV2L251bGwKKysrIGIvbGli Z3VpbGUvY2FsaWJyYXRlLnNjbQpAQCAtMCwwICsxLDMyIEBACisKKzs7OyBTdGFjayBkZXB0aCBj YWxpYnJhdGlvbiwgZm9yIHRoZSAnc3RhY2sgZGVidWcgb3B0aW9uLgorCis7OyBNYWtlIHN1cmUg d2UgZG9uJ3Qgb3ZlcmZsb3cgd2hpbGUgcGVyZm9ybWluZyB0aGlzIGNhbGlicmF0aW9uIQorKGRl YnVnLXNldCEgc3RhY2sgMCkKKworOzsgU2VsZWN0IHRoZSBkZWJ1Z2dpbmcgZXZhbHVhdG9yLgor KGRlYnVnLWVuYWJsZSAnZGVidWcpCisKKzs7IE5vdGUgdGhhdCB0aGlzIGxvb3AgbXVzdCBiZSBu b24tdGFpbC1yZWN1cnNpdmUhICAxNzAgYW5kIDY5MCBhcmUKKzs7IHRoZSB2YWx1ZXMgdGhhdCB3 ZSBnZXQgZm9yIG1lYXN1cmVkLWRlcHRoMSBhbmQgbWVhc3VyZWQtZGVwdGgyIHdoZW4KKzs7IHdl IHJ1biB0aGlzIGNvZGUgb24gYSBEZWJpYW4gR05VL0xpbnV4IGlhMzIgc3lzdGVtIC0gd2hpY2gg d2UgdGFrZQorOzsgYXMgb3VyIGNhbm9uaWNhbCBzeXN0ZW0uCisobGV0ICgocmVmZXJlbmNlLWRl cHRoMSAxNzApCisgICAgICAocmVmZXJlbmNlLWRlcHRoMiA2OTApCisgICAgICAobWVhc3VyZWQt ZGVwdGgxICglZ2V0LXN0YWNrLWRlcHRoKSkKKyAgICAgIChtZWFzdXJlZC1kZXB0aDIgMCkpCisg IChsZXQgbG9vcCAoKGNvdW50IDEwKSkKKyAgICAoaWYgKHplcm8/IGNvdW50KQorCShzZXQhIG1l YXN1cmVkLWRlcHRoMiAoJWdldC1zdGFjay1kZXB0aCkpCisJKGNvbnMgY291bnQgKGxvb3AgKC0g Y291bnQgMSkpKSkpCisgIChmb3JtYXQgI3QKKwkgICIKKyNkZWZpbmUgR1VJTEVfQ0FMSUJSQVRJ T05fUkVGRVJFTkNFX0RFUFRIXzEgfmEKKyNkZWZpbmUgR1VJTEVfQ0FMSUJSQVRJT05fUkVGRVJF TkNFX0RFUFRIXzIgfmEKKyNkZWZpbmUgR1VJTEVfQ0FMSUJSQVRJT05fTUVBU1VSRURfREVQVEhf MSB+YQorI2RlZmluZSBHVUlMRV9DQUxJQlJBVElPTl9NRUFTVVJFRF9ERVBUSF8yIH5hCisiCisJ ICByZWZlcmVuY2UtZGVwdGgxCisJICByZWZlcmVuY2UtZGVwdGgyCisJICBtZWFzdXJlZC1kZXB0 aDEKKwkgIG1lYXN1cmVkLWRlcHRoMikpCmRpZmYgLS1naXQgYS9saWJndWlsZS9kZWJ1Zy5oIGIv bGliZ3VpbGUvZGVidWcuaAppbmRleCBjMjkyMDA0Li5mNmIxNjA4IDEwMDY0NAotLS0gYS9saWJn dWlsZS9kZWJ1Zy5oCisrKyBiL2xpYmd1aWxlL2RlYnVnLmgKQEAgLTc1LDYgKzc1LDcgQEAgZG8g e1wKICAgICAmJiBzY21faXNfdHJ1ZSAoU0NNX0VYSVRfRlJBTUVfSERMUik7XAogICBzY21fZGVi dWdfbW9kZV9wID0gU0NNX0RFVkFMX1BcCiAgICAgfHwgc2NtX2NoZWNrX2VudHJ5X3AgfHwgc2Nt X2NoZWNrX2FwcGx5X3AgfHwgc2NtX2NoZWNrX2V4aXRfcDtcCisgIHNjbV9jYWxjdWxhdGVfc3Rh Y2tfbGltaXQgKCk7XAogfSB3aGlsZSAoMCkKIAogLyoge0V2YWx1YXRvcn0KZGlmZiAtLWdpdCBh L2xpYmd1aWxlL3N0YWNrY2hrLmMgYi9saWJndWlsZS9zdGFja2Noay5jCmluZGV4IDM5MWNlMjEu LmY3NzA4MjIgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL3N0YWNrY2hrLmMKKysrIGIvbGliZ3VpbGUv c3RhY2tjaGsuYwpAQCAtMzMsNiArMzMsMTMgQEAKIAogI2lmZGVmIFNUQUNLX0NIRUNLSU5HCiBp bnQgc2NtX3N0YWNrX2NoZWNraW5nX2VuYWJsZWRfcDsKK2ludCBzY21fc3RhY2tfbGltaXQ7CisK Ky8qIEFzIGluIHkgPSBteCArIGMuICBUaGVzZSBudW1iZXJzIGRlZmluZSBhIGxpbmVhciB0cmFu c2Zvcm1hdGlvbgorICAgZnJvbSB0aGUgc3RhY2sgZGVwdGggc3BlY2lmaWVkIGFzIHRoZSAnc3Rh Y2sgZGVidWcgb3B0aW9uLCB0byB0aGUKKyAgIGFjdHVhbCBtYXggc3RhY2sgZGVwdGggdGhhdCB3 ZSBhbGxvdy4gKi8KK3N0YXRpYyBkb3VibGUgY2FsaWJyYXRlZF9tID0gMTsKK3N0YXRpYyBkb3Vi bGUgY2FsaWJyYXRlZF9jID0gMDsKIAogU0NNX1NZTUJPTCAoc2NtX3N0YWNrX292ZXJmbG93X2tl eSwgInN0YWNrLW92ZXJmbG93Iik7CiAKQEAgLTQ3LDYgKzU0LDI0IEBAIHNjbV9yZXBvcnRfc3Rh Y2tfb3ZlcmZsb3cgKCkKIAkgICAgIFNDTV9CT09MX0YpOwogfQogCisvKiBTdGFjayBkZXB0aCBj YWxpYnJhdGlvbi4gKi8KKworU0NNX0RFRklORSAoc2NtX3N5c19nZXRfc3RhY2tfZGVwdGgsICIl Z2V0LXN0YWNrLWRlcHRoIiwgMCwgMCwgMCwKKwkgICAgKCksCisJICAgICJSZXR1cm4gY3VycmVu dCBzdGFjayBkZXB0aC4iKQorI2RlZmluZSBGVU5DX05BTUUgc19zY21fc3lzX2dldF9zdGFja19k ZXB0aAoreworICBTQ01fU1RBQ0tJVEVNIHN0YWNrOworICByZXR1cm4gc2NtX2Zyb21faW50IChT Q01fU1RBQ0tfREVQVEggKCZzdGFjaykpOworfQorI3VuZGVmIEZVTkNfTkFNRQorCit2b2lkCitz Y21fY2FsY3VsYXRlX3N0YWNrX2xpbWl0ICgpCit7CisgIHNjbV9zdGFja19saW1pdCA9IChpbnQp IChjYWxpYnJhdGVkX20gKiBTQ01fU1RBQ0tfTElNSVQgKyBjYWxpYnJhdGVkX2MpOworfQorCiAj ZW5kaWYKIAogbG9uZwpAQCAtODEsNiArMTA2LDE1IEBAIHNjbV9zdGFja19yZXBvcnQgKCkKIHZv aWQKIHNjbV9pbml0X3N0YWNrY2hrICgpCiB7CisjaWZkZWYgR1VJTEVfQ0FMSUJSQVRJT05fTUVB U1VSRURfREVQVEhfMQorICAvKiBDYWxjdWxhdGUgY2FsaWJyYXRlZCBzdGFjayBkZXB0aCBsaW1p dC4gKi8KKyAgY2FsaWJyYXRlZF9tID0gKChkb3VibGUpIChHVUlMRV9DQUxJQlJBVElPTl9NRUFT VVJFRF9ERVBUSF8yIC0gR1VJTEVfQ0FMSUJSQVRJT05fTUVBU1VSRURfREVQVEhfMSkpCisgICAg LyAoR1VJTEVfQ0FMSUJSQVRJT05fUkVGRVJFTkNFX0RFUFRIXzIgLSBHVUlMRV9DQUxJQlJBVElP Tl9SRUZFUkVOQ0VfREVQVEhfMSk7CisgIGNhbGlicmF0ZWRfYyA9ICgoZG91YmxlKSBHVUlMRV9D QUxJQlJBVElPTl9NRUFTVVJFRF9ERVBUSF8yKQorICAgIC0gY2FsaWJyYXRlZF9tICogR1VJTEVf Q0FMSUJSQVRJT05fUkVGRVJFTkNFX0RFUFRIXzI7CisjZW5kaWYKKyAgc2NtX2NhbGN1bGF0ZV9z dGFja19saW1pdCAoKTsKKwogI2luY2x1ZGUgImxpYmd1aWxlL3N0YWNrY2hrLngiCiB9CiAKZGlm ZiAtLWdpdCBhL2xpYmd1aWxlL3N0YWNrY2hrLmggYi9saWJndWlsZS9zdGFja2Noay5oCmluZGV4 IDlhNWM1OWYuLmQxNGU5NTkgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL3N0YWNrY2hrLmgKKysrIGIv bGliZ3VpbGUvc3RhY2tjaGsuaApAQCAtMzUsMTQgKzM1LDExIEBACiAKICNpZmRlZiBTVEFDS19D SEVDS0lORwogIyBpZiBTQ01fU1RBQ0tfR1JPV1NfVVAKLSMgIGRlZmluZSBTQ01fU1RBQ0tfT1ZF UkZMT1dfUChzKVwKLSAgIChTQ01fU1RBQ0tfUFRSIChzKSBcCi0gICAgPiAoU0NNX0lfQ1VSUkVO VF9USFJFQUQtPmJhc2UgKyBTQ01fU1RBQ0tfTElNSVQpKQorIyAgZGVmaW5lIFNDTV9TVEFDS19E RVBUSChzKSAoU0NNX1NUQUNLX1BUUiAocykgLSBTQ01fSV9DVVJSRU5UX1RIUkVBRC0+YmFzZSkK ICMgZWxzZQotIyAgZGVmaW5lIFNDTV9TVEFDS19PVkVSRkxPV19QKHMpXAotICAgKFNDTV9TVEFD S19QVFIgKHMpIFwKLSAgICA8IChTQ01fSV9DVVJSRU5UX1RIUkVBRC0+YmFzZSAtIFNDTV9TVEFD S19MSU1JVCkpCisjICBkZWZpbmUgU0NNX1NUQUNLX0RFUFRIKHMpIChTQ01fSV9DVVJSRU5UX1RI UkVBRC0+YmFzZSAtIFNDTV9TVEFDS19QVFIgKHMpKQogIyBlbmRpZgorIyBkZWZpbmUgU0NNX1NU QUNLX09WRVJGTE9XX1AocykgKFNDTV9TVEFDS19ERVBUSCAocykgPiBzY21fc3RhY2tfbGltaXQp CiAjIGRlZmluZSBTQ01fQ0hFQ0tfU1RBQ0tcCiAgICAge1wKICAgICAgICBTQ01fU1RBQ0tJVEVN IHN0YWNrO1wKQEAgLTU0LDEwICs1MSwxMyBAQAogI2VuZGlmIC8qIFNUQUNLX0NIRUNLSU5HICov CiAKIFNDTV9BUEkgaW50IHNjbV9zdGFja19jaGVja2luZ19lbmFibGVkX3A7CitTQ01fQVBJIGlu dCBzY21fc3RhY2tfbGltaXQ7CiAKIAwKIAogU0NNX0FQSSB2b2lkIHNjbV9yZXBvcnRfc3RhY2tf b3ZlcmZsb3cgKHZvaWQpOworU0NNX0FQSSBTQ00gc2NtX3N5c19nZXRfc3RhY2tfZGVwdGggKHZv aWQpOworU0NNX0FQSSB2b2lkIHNjbV9jYWxjdWxhdGVfc3RhY2tfbGltaXQgKHZvaWQpOwogU0NN X0FQSSBsb25nIHNjbV9zdGFja19zaXplIChTQ01fU1RBQ0tJVEVNICpzdGFydCk7CiBTQ01fQVBJ IHZvaWQgc2NtX3N0YWNrX3JlcG9ydCAodm9pZCk7CiBTQ01fQVBJIHZvaWQgc2NtX2luaXRfc3Rh Y2tjaGsgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvcHJlLWluc3QtdWd1aWxlLmluIGIvcHJlLWluc3Qt dWd1aWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOGZmYzMKLS0t IC9kZXYvbnVsbAorKysgYi9wcmUtaW5zdC11Z3VpbGUuaW4KQEAgLTAsMCArMSw5OSBAQAorIyEv YmluL3NoCisKKyMJQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbgorIworIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdVSUxFLgorIworIyAgIEdV SUxFIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzCisjICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yCisjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyMKKyMgICBHVUlMRSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisjICAgTGljZW5zZSBhbG9uZyB3aXRo IEdVSUxFOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUKKyMgICB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo CisjICAgRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworIyBOT1RFOiBhdCBzb21l IHBvaW50IHdlIG1pZ2h0IGNvbnNpZGVyIGludm9raW5nIHRoaXMgdW5kZXIKKyMgcHJlLWluc3Qt Z3VpbGUtZW52LiAgSWYgdGhpcyB3aWxsIHdvcmssIHRoZW4gbW9zdCBvZiB0aGUgY29kZSBiZWxv dworIyBjYW4gYmUgcmVtb3ZlZC4KKworIyBOT1RFOiBJZiB5b3UgdXBkYXRlIHRoaXMgZmlsZSwg cGxlYXNlIHVwZGF0ZSBwcmUtaW5zdC1ndWlsZS1lbnYuaW4KKyMgYXMgd2VsbCwgaWYgYXBwcm9w cmlhdGUuCisKKyMgQ29tbWVudGFyeToKKworIyBVc2FnZTogcHJlLWluc3QtdWd1aWxlIFtBUkdT XQorIworIyBUaGlzIHNjcmlwdCBhcnJhbmdlcyBmb3IgdGhlIGVudmlyb25tZW50IHRvIHN1cHBv cnQsIGFuZCBldmVudGF1bGx5IGV4ZWNzLAorIyB0aGUgdW5pbnN0YWxsZWQgYmluYXJ5IHVuY2Fs aWJyYXRlZCBndWlsZSBleGVjdXRhYmxlIGxvY2F0ZWQgdW5kZXIgbGliZ3VpbGUvLAorIyBwYXNz aW5nIEFSR1MgdG8gaXQuICBJbiB0aGUgcHJvY2VzcywgZW52IHZhciBHVUlMRSBpcyBjbG9iYmVy ZWQsIGFuZCB0aGUKKyMgZm9sbG93aW5nIGVudiB2YXJzIGFyZSBtb2RpZmllZCAoYnV0IG5vdCBj bG9iYmVyZWQpOgorIyAgIEdVSUxFX0xPQURfUEFUSAorIyAgIExURExfTElCUkFSWV9QQVRICisj CisjIFRoaXMgc2NyaXB0IGNhbiBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3Ig JGJpbmRpci9ndWlsZTsKKyMgaWYgdGhlcmUgaXMgYSBkaXNjcmVwZW5jeSBpbiBiZWhhdmlvciwg dGhhdCdzIGEgYnVnLgorCisjIENvZGU6CisKKyMgY29uZmlnCitzdWJkaXJzX3dpdGhfbHRsaWJz PSJzcmZpIGd1aWxlLXJlYWRsaW5lIiAgICAgICAjIG1haW50YWluIG1lCisKKyMgZW52IChzZXQg YnkgY29uZmlndXJlKQordG9wX3NyY2Rpcj0iQHRvcF9zcmNkaXJfYWJzb2x1dGVAIgordG9wX2J1 aWxkZGlyPSJAdG9wX2J1aWxkZGlyX2Fic29sdXRlQCIKKworWyB4IiR0b3Bfc3JjZGlyIiAgID0g eCAtbyAhIC1kICIkdG9wX3NyY2RpciIgLW8gXAorICB4IiR0b3BfYnVpbGRkaXIiID0geCAtbyAh IC1kICIkdG9wX2J1aWxkZGlyIiBdICYmIHsKKyAgICBlY2hvICQwOiBiYWQgZW52aXJvbm1lbnQK KyAgICBlY2hvIHRvcF9zcmNkaXI9JHRvcF9zcmNkaXIKKyAgICBlY2hvIHRvcF9idWlsZGRpcj0k dG9wX2J1aWxkZGlyCisgICAgZXhpdCAxCit9CisKKyMgaGFuZGxlIEdVSUxFX0xPQURfUEFUSCAo bm8gY2xvYmJlcikKK2lmIFsgeCIkR1VJTEVfTE9BRF9QQVRIIiA9IHggXQordGhlbgorICAgIEdV SUxFX0xPQURfUEFUSD0iJHt0b3Bfc3JjZGlyfS9ndWlsZS1yZWFkbGluZToke3RvcF9zcmNkaXJ9 IgorZWxzZQorICBmb3IgZCBpbiAiJHt0b3Bfc3JjZGlyfSIgIiR7dG9wX3NyY2Rpcn0vZ3VpbGUt cmVhZGxpbmUiCisgIGRvCisgICAgIyBUaGlzIGhhaXIgcHJldmVudHMgZG91YmxlIGluY2x1c2lv bi4KKyAgICAjIFRoZSAiOiIgcHJldmVudHMgcHJlZml4IGFsaWFzaW5nLgorICAgIGNhc2UgeCIk R1VJTEVfTE9BRF9QQVRIIiBpbgorICAgICAgeCoke2R9OiopIDs7CisgICAgICAqKSBHVUlMRV9M T0FEX1BBVEg9IiR7ZH06JEdVSUxFX0xPQURfUEFUSCIgOzsKKyAgICBlc2FjCisgIGRvbmUKK2Zp CitleHBvcnQgR1VJTEVfTE9BRF9QQVRICisKKyMgaGFuZGxlIExURExfTElCUkFSWV9QQVRIIChu byBjbG9iYmVyKQorbHRkbF9wcmVmaXg9IiIKK2R5bGRfcHJlZml4PSIiCitmb3IgZGlyIGluICRz dWJkaXJzX3dpdGhfbHRsaWJzIDsgZG8KKyAgICBsdGRsX3ByZWZpeD0iJHt0b3BfYnVpbGRkaXJ9 LyR7ZGlyfToke2x0ZGxfcHJlZml4fSIKKyAgICBkeWxkX3ByZWZpeD0iJHt0b3BfYnVpbGRkaXJ9 LyR7ZGlyfS8ubGliczoke2R5bGRfcHJlZml4fSIKK2RvbmUKK0xURExfTElCUkFSWV9QQVRIPSIk e2x0ZGxfcHJlZml4fSRMVERMX0xJQlJBUllfUEFUSCIKK2V4cG9ydCBMVERMX0xJQlJBUllfUEFU SAorRFlMRF9MSUJSQVJZX1BBVEg9IiR7ZHlsZF9wcmVmaXh9JHt0b3BfYnVpbGRkaXJ9L2xpYmd1 aWxlLy5saWJzOiREWUxEX0xJQlJBUllfUEFUSCIKK2V4cG9ydCBEWUxEX0xJQlJBUllfUEFUSAor CisjIHNldCBHVUlMRSAoY2xvYmJlcikKK0dVSUxFPSR7dG9wX2J1aWxkZGlyfS9saWJndWlsZS91 Z3VpbGUKK2V4cG9ydCBHVUlMRQorCisjIGRvIGl0CitleGVjICRHVUlMRSAiJEAiCisKKyMgbmV2 ZXIgcmVhY2hlZAorZXhpdCAxCisKKyMgcHJlLWluc3QtdWd1aWxlIGVuZHMgaGVyZQotLSAKMS41 LjYuNQoK ------=_Part_35669_3612816.1222539632379--