From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.bugs Subject: bug#51296: [PATCH] Add WebP format support Date: Thu, 21 Oct 2021 11:36:45 -0700 Message-ID: References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000042f06a05cee12d35" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11036"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51296@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Oct 21 20:37:34 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mdcwX-0002eO-4v for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 21 Oct 2021 20:37:33 +0200 Original-Received: from localhost ([::1]:50206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdcwV-0004FT-UT for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 21 Oct 2021 14:37:31 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48598) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdcw2-0004Et-OC for bug-gnu-emacs@gnu.org; Thu, 21 Oct 2021 14:37:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:47001) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mdcw2-0007AT-FA for bug-gnu-emacs@gnu.org; Thu, 21 Oct 2021 14:37:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mdcw2-0003AA-4b for bug-gnu-emacs@gnu.org; Thu, 21 Oct 2021 14:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 18:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163484142012151 (code B ref 51296); Thu, 21 Oct 2021 18:37:02 +0000 Original-Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 18:37:00 +0000 Original-Received: from localhost ([127.0.0.1]:58547 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcvv-00039o-5g for submit@debbugs.gnu.org; Thu, 21 Oct 2021 14:37:00 -0400 Original-Received: from mail-pl1-f178.google.com ([209.85.214.178]:35426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcvr-00039H-Io for 51296@debbugs.gnu.org; Thu, 21 Oct 2021 14:36:53 -0400 Original-Received: by mail-pl1-f178.google.com with SMTP id u6so1046817ple.2 for <51296@debbugs.gnu.org>; Thu, 21 Oct 2021 11:36:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=0gm1KKYI/6QHq+mMHbpy7uEzMWL1ZZVmujGc2iHfWZU=; b=qmW6+0ZsTsSNUUbOM2CgtuW/sH5h4DVi0GrP9iYXNjni3dTkSIbuCxXOn98ykm+uKQ qYSRA9uHjtx3ieEvv/TKueSAfKmO8RBuFTip8xzbqZsuavk5d7IM8g8Goc0nzpE2Wkel FWxxjuK+cNQHR3PHHV62WCO3KUi+Q1ROUK7R0edKAb94soda615ZTjLpge+YpncpdvVJ EZ4emH9pyHUZo6cgPllekVENoUBYMW3DkQNFIPic1YiSg2NqdOl64hm9N3maqWyXajgx pNVVbxROOqBoZ/dk09CR1UkbkowYVgVG8rDABPmqiZBKlBHInbgjh/Q5jYs0nrTVK2ok kbxQ== X-Gm-Message-State: AOAM530W7HBQ/01ttyLyVC5WWyCBrhThIPDEH4ghmzHiQcVjpJAu1OWa OIdU0uKFh2zdmAcksylqJMLEZAgcGF30+Q/svIg= X-Google-Smtp-Source: ABdhPJwib2cLqtibhd276NBlRQbVLSf2ot7N0IoRGRvvFCc8gAk2Btzd4iboovH4+gueKaVuSOwdRfw0X0sRhZKfU+s= X-Received: by 2002:a17:90a:c70d:: with SMTP id o13mr8647393pjt.143.1634841405870; Thu, 21 Oct 2021 11:36:45 -0700 (PDT) Original-Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 21 Oct 2021 11:36:45 -0700 In-Reply-To: <8335ouaixr.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:217799 Archived-At: --00000000000042f06a05cee12d35 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Eli Zaretskii writes: > Thanks, now only a few minor issues remain: All your comments should be fixed, see below for details. I've also attached an updated patch. Thank you for reviewing. > That's OK, but I believe you should also add WEBP to the list of Emacs > configuration features around line 5885 in configure.ac, so that WebP > support could be reported by system-configuration-features. Ah, right. Fixed. > Our style is to separate the '*' from the type, like this: > > DEF_DLL_FN (int, WebPGetInfo, (const uint8_t *, size_t, int *, int *)); > ^^ ^^ ^^ > Also note that there's no need to use names of parameters in > prototypes, they just make the code longer, but don't add anything > useful. So I removed them in the above. Fixed. >> + if (!(library =3D w32_delayed_load (Qwebp))) >> + return 0; > ^^^^^^^^ > "return false" is more consistent. Fixed. >> + contents =3D (uint8_t*) SSDATA (specified_data); > > Space before '*' again. Also, is the type cast really needed? If > not, it is better to drop it. Fixed the style issue. The cast fixes this warning, so I kept it and added a comment saying "Casting avoids a GCC warning": image.c: In function =E2=80=98webp_load=E2=80=99: image.c:8878:16: warning: pointer targets in assignment from =E2=80=98char = *=E2=80=99 to =E2=80=98uint8_t *=E2=80=99 {aka =E2=80=98unsigned char *=E2=80=99} diff= er in signedness [-Wpointer-sign] 8878 | contents =3D SSDATA (specified_data); | ^ >> + /* Validate the WebP image header. */ >> + if (!WebPGetInfo (contents, size, NULL, NULL)) >> + { >> + if (!NILP (specified_data)) >> + image_error ("Not a WebP file: `%s'", file); >> + else >> + image_error ("Invalid WebP data"); > > This last error message could IMO be more useful, if it said something > like "Non-WebP header in WebP image data". I went with: "Invalid header in WebP image data". >> + image_error ("Error when interpreting WebP data: `%s'", file); > > Suggest to say "Error when interpreting WebP data from file `%s'" > instead, otherwise it may not be clear to the user what is that string > after the colon. > >> + image_error ("Error when interpreting WebP data"); > > I'd suggest "Error when interpreting WebP image data". Yes, that's better. Fixed. --00000000000042f06a05cee12d35 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f160ea2d5ea89eb3_0.1 RnJvbSBmNGJlNTNkYjZjYmY5M2M2OTk4OGUzNWRjZTIwNzI5NGZkZjFmNTc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogVGh1LCAyMSBPY3QgMjAyMSAyMDoyNDoxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgooZW1hY3NfY29uZmlnX2ZlYXR1cmVzKTog QWRkIHdlYnAuCiogc3JjL2ltYWdlLmMgKGVudW0gd2VicF9rZXl3b3JkX2luZGV4KSBbSEFWRV9X RUJQXTogTmV3IGVudW0uCih3ZWJwX2Zvcm1hdCkgW0hBVkVfV0VCUF06IE5ldyB2YXJpYWJsZS4K KHdlYnBfaW1hZ2VfcCwgaW5pdF93ZWJwX2Z1bmN0aW9ucywgd2VicF9sb2FkKSBbSEFWRV9XRUJQ XTogTmV3CmZ1bmN0aW9ucyBmb3IgV2ViUCBzdXBwb3J0LgooaW1hZ2VfdHlwZXMpIFtIQVZFX1dF QlBdOiBEZWZpbmUgV2ViUCBmb3JtYXQuCihzeW1zX29mX2ltYWdlKSA8UXdlYnA+IFtIQVZFX1dF QlBdOiBOZXcgREVGU1lNLiAgQWRkIGltYWdlIHR5cGUgUXdlYnAuCiogc3JjL01ha2VmaWxlLmlu IChMSUJJTUFHRSk6IEFkZCBXRUJQX0xJQlMuCgoqIGxpc3AvZmlsZXMuZWwgKGF1dG8tbW9kZS1h bGlzdCk6CiogbGlzcC9pbWFnZS1maWxlLmVsIChpbWFnZS1maWxlLW5hbWUtZXh0ZW5zaW9ucyk6 CiogbGlzcC9pbWFnZS5lbCAoaW1hZ2UtdHlwZS1oZWFkZXItcmVnZXhwcykKKGltYWdlLXR5cGUt ZmlsZS1uYW1lLXJlZ2V4cHMsIGltYWdlLXR5cGUtYXV0by1kZXRlY3RhYmxlKTogQWRkIFdlYlAK c3VwcG9ydC4KKiBsaXNwL3Rlcm0vdzMyLXdpbi5lbCAoZHluYW1pYy1saWJyYXJ5LWFsaXN0KTog QWRkIHRoZSBsaWJ3ZWJwIERMTC4KCiogSU5TVEFMTDoKKiBhZG1pbi9DUFAtREVGSU5FUzoKKiBk b2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgKEltYWdlIEZvcm1hdHMsIE90aGVyIEltYWdlIFR5cGVz KToKKiBudC9JTlNUQUxMOiBEb2N1bWVudCBXZWJQIHN1cHBvcnQuCgoqIHRlc3QvbGlzcC9pbWFn ZS10ZXN0cy5lbCAoaW1hZ2UtZmluZC1pbWFnZSkKKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUp OiBFeHBhbmQgdGVzdHMuCiogdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLXRlc3RzLS1m aWxlcyk6IEFkZCBXZWJQLgooaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS93ZWJwLCBpbWFnZS10ZXN0 cy1pbWFnZS1tYXNrLXAvd2VicCkKKGltYWdlLXRlc3RzLWltYWdlLW1ldGFkYXRhL3dlYnApOiBO ZXcgdGVzdHMuCiogdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnA6IE5ldyBmaWxlLgotLS0KIElO U1RBTEwgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGFkbWluL0NQUC1ERUZJTkVTICAgICAg ICAgIHwgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgIDI4ICsrKy0KIGRvYy9s aXNwcmVmL2Rpc3BsYXkudGV4aSAgIHwgIDExICstCiBldGMvTkVXUyAgICAgICAgICAgICAgICAg ICB8ICAgNiArCiBsaXNwL2ZpbGVzLmVsICAgICAgICAgICAgICB8ICAgMSArCiBsaXNwL2ltYWdl LWZpbGUuZWwgICAgICAgICB8ICAgMiArLQogbGlzcC9pbWFnZS5lbCAgICAgICAgICAgICAgfCAg IDMgKwogbGlzcC90ZXJtL3czMi13aW4uZWwgICAgICAgfCAgIDEgKwogbnQvSU5TVEFMTCAgICAg ICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9NYWtlZmlsZS5pbiAgICAgICAgICAgIHwgICAyICst CiBzcmMvaW1hZ2UuYyAgICAgICAgICAgICAgICB8IDI4MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCB8IEJpbiAwIC0+IDM3 NzgwIGJ5dGVzCiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgICB8ICAgOCArLQogdGVzdC9zcmMv aW1hZ2UtdGVzdHMuZWwgICAgfCAgMjMgKystCiAxNSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0 aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9kYXRhL2lt YWdlL2JsYWNrLndlYnAKCmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCA2MjA3 ZjQzY2VjLi4yMTI5ODQyMmFmIDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAg LTE4Nyw2ICsxODcsNyBAQCBYMTEgaXMgYmVpbmcgdXNlZC4KICAgWCBsaWJ0aWZmIGZvciBUSUZG OiBodHRwOi8vd3d3LnNpbXBsZXN5c3RlbXMub3JnL2xpYnRpZmYvCiAgIFggbGliZ2lmIGZvciBH SUY6ICAgaHR0cDovL2dpZmxpYi5zb3VyY2Vmb3JnZS5uZXQvCiAgICAgbGlicnN2ZzIgZm9yIFNW RzogaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9MaWJSc3ZnCisgICAgbGlid2VicCBm b3IgV2ViUDogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8KIAogSWYg eW91IHN1cHBseSB0aGUgYXBwcm9wcmlhdGUgLS13aXRob3V0LUxJQiBvcHRpb24sICdjb25maWd1 cmUnIHdpbGwKIG9taXQgdGhlIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBmcm9tIEVtYWNzLCBldmVu IGlmIHRoYXQgbWFrZXMgZm9yIGEKQEAgLTMxMyw2ICszMTQsNyBAQCBvciBtb3JlIG9mIHRoZXNl IG9wdGlvbnM6CiAgIC0td2l0aG91dC1naWYgICAgICAgICAgZm9yIEdJRiBpbWFnZSBzdXBwb3J0 CiAgIC0td2l0aG91dC1wbmcgICAgICAgICAgZm9yIFBORyBpbWFnZSBzdXBwb3J0CiAgIC0td2l0 aG91dC1yc3ZnICAgICAgICAgZm9yIFNWRyBpbWFnZSBzdXBwb3J0CisgIC0td2l0aG91dC13ZWJw ICAgICAgICAgZm9yIFdlYlAgaW1hZ2Ugc3VwcG9ydAogCiBBbHRob3VnaCBJbWFnZU1hZ2ljayBz dXBwb3J0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgZHVlIHRvIHNlY3VyaXR5CiBhbmQgc3RhYmls aXR5IGNvbmNlcm5zLCB5b3UgY2FuIGVuYWJsZSBpdCB3aXRoIC0td2l0aC1pbWFnZW1hZ2ljay4K ZGlmZiAtLWdpdCBhL2FkbWluL0NQUC1ERUZJTkVTIGIvYWRtaW4vQ1BQLURFRklORVMKaW5kZXgg NjhjMTI0MzhmNS4uNjM0ZDZmM2YzYiAxMDA2NDQKLS0tIGEvYWRtaW4vQ1BQLURFRklORVMKKysr IGIvYWRtaW4vQ1BQLURFRklORVMKQEAgLTI4Nyw2ICsyODcsNyBAQCBIQVZFX1VUSU1FTlNBVAog SEFWRV9VVE1QX0gKIEhBVkVfVkZPUksKIEhBVkVfVkZPUktfSAorSEFWRV9XRUJQCiBIQVZFX1dD SEFSX0gKIEhBVkVfV0NIQVJfVAogSEFWRV9XSU5ET1dfU1lTVEVNCmRpZmYgLS1naXQgYS9jb25m aWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggOWFiMDMxNDQyOC4uZDA5MTg2NmI4NyAxMDA2 NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDQ3LDYgKzQ0Nyw3 IEBAIEFDX0RFRlVOCiBPUFRJT05fREVGQVVMVF9PTihbZ2lmXSxbZG9uJ3QgY29tcGlsZSB3aXRo IEdJRiBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtwbmddLFtkb24ndCBjb21w aWxlIHdpdGggUE5HIGltYWdlIHN1cHBvcnRdKQogT1BUSU9OX0RFRkFVTFRfT04oW3JzdmddLFtk b24ndCBjb21waWxlIHdpdGggU1ZHIGltYWdlIHN1cHBvcnRdKQorT1BUSU9OX0RFRkFVTFRfT04o W3dlYnBdLFtkb24ndCBjb21waWxlIHdpdGggV2ViUCBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9E RUZBVUxUX09OKFtsY21zMl0sW2Rvbid0IGNvbXBpbGUgd2l0aCBMaXR0bGUgQ01TIHN1cHBvcnRd KQogT1BUSU9OX0RFRkFVTFRfT04oW2xpYnN5c3RlbWRdLFtkb24ndCBjb21waWxlIHdpdGggbGli c3lzdGVtZCBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtjYWlyb10sW2Rvbid0IGNvbXBp bGUgd2l0aCBDYWlybyBkcmF3aW5nXSkKQEAgLTI1ODgsNiArMjU4OSwyOCBAQCBBQ19ERUZVTgog ICBmaQogZmkKIAorIyMjIFVzZSAtbHdlYnAgaWYgYXZhaWxhYmxlLCB1bmxlc3MgJy0td2l0aC13 ZWJwPW5vJworIyMjIG1pbmd3MzIgZG9lc24ndCB1c2UgLWx3ZWJwLCBzaW5jZSBpdCBsb2FkcyB0 aGUgbGlicmFyeSBkeW5hbWljYWxseS4KK0hBVkVfV0VCUD1ubworaWYgdGVzdCAiJHt3aXRoX3dl YnB9IiAhPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0ICIkb3BzeXMiID0gbWluZ3czMjsgdGhlbgor ICAgICAgQUNfQ0hFQ0tfSEVBREVSKFt3ZWJwL2RlY29kZS5oXSwgW0hBVkVfV0VCUD15ZXNdKQor ICAgZWxpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIke0hBVkVfVzMyfSIg PSAieWVzIiBcCisgICAgICAgICB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiOyB0aGVuCisg ICAgICBXRUJQX1JFUVVJUkVEPTAuNi4wCisgICAgICBXRUJQX01PRFVMRT0ibGlid2VicCA+PSAk V0VCUF9SRVFVSVJFRCIKKworICAgICAgRU1BQ1NfQ0hFQ0tfTU9EVUxFUyhbV0VCUF0sIFskV0VC UF9NT0RVTEVdKQorICAgICAgQUNfU1VCU1QoV0VCUF9DRkxBR1MpCisgICAgICBBQ19TVUJTVChX RUJQX0xJQlMpCisKKyAgICAgIGlmIHRlc3QgJEhBVkVfV0VCUCA9IHllczsgdGhlbgorICAgICAg ICBBQ19ERUZJTkUoSEFWRV9XRUJQLCAxLCBbRGVmaW5lIHRvIDEgaWYgdXNpbmcgbGlid2VicC5d KQorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFdFQlBfQ0ZMQUdTIgorICAgICAgZmkKKyAgIGZp CitmaQorCiBIQVZFX0lNQUdFTUFHSUNLPW5vCiBpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVz IiB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7SEFWRV9XMzJ9IiA9ICJ5 ZXMiOyB0aGVuCiAgIGlmIHRlc3QgIiR7d2l0aF9pbWFnZW1hZ2lja30iICE9ICJubyI7IHRoZW4K QEAgLTU4ODIsOCArNTkwNSw4IEBAIEFDX0RFRlVOCiBmb3Igb3B0IGluIEFDTCBDQUlSTyBEQlVT IEZSRUVUWVBFIEdDT05GIEdJRiBHTElCIEdNUCBHTlVUTFMgR1BNIEdTRVRUSU5HUyBcCiAgSEFS RkJVWlogSU1BR0VNQUdJQ0sgSlBFRyBKU09OIExDTVMyIExJQk9URiBMSUJTRUxJTlVYIExJQlNZ U1RFTUQgTElCWE1MMiBcCiAgTTE3Tl9GTFQgTU9EVUxFUyBOQVRJVkVfQ09NUCBOT1RJRlkgTlMg T0xEWE1FTlUgUERVTVBFUiBQTkcgUlNWRyBTRUNDT01QIFwKLSBTT1VORCBUSFJFQURTIFRJRkYg XAotIFRPT0xLSVRfU0NST0xMX0JBUlMgVU5FWEVDIFgxMSBYQVczRCBYREJFIFhGVCBYSU0gWFBN IFhXSURHRVRTIFhfVE9PTEtJVCBcCisgU09VTkQgVEhSRUFEUyBUSUZGIFRPT0xLSVRfU0NST0xM X0JBUlMgXAorIFVORVhFQyBXRUJQIFgxMSBYQVczRCBYREJFIFhGVCBYSU0gWFBNIFhXSURHRVRT IFhfVE9PTEtJVCBcCiAgWkxJQjsgZG8KIAogICAgIGNhc2UgJG9wdCBpbgpAQCAtNTkyOCw2ICs1 OTUxLDcgQEAgQUNfREVGVU4KICAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGlicmFyeT8gICAgICAg ICAgICAgICAgICAgICAgICAgICAke0hBVkVfR0lGfSAkTElCR0lGCiAgIERvZXMgRW1hY3MgdXNl IGEgcG5nIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX1BOR30gJExJ QlBORwogICBEb2VzIEVtYWNzIHVzZSAtbHJzdmctMj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICR7SEFWRV9SU1ZHfQorICBEb2VzIEVtYWNzIHVzZSAtbHdlYnA/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9XRUJQfQogICBEb2VzIEVtYWNzIHVzZSBjYWly bz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9DQUlST30KICAgRG9l cyBFbWFjcyB1c2UgLWxsY21zMj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hB VkVfTENNUzJ9CiAgIERvZXMgRW1hY3MgdXNlIGltYWdlbWFnaWNrPyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHtIQVZFX0lNQUdFTUFHSUNLfQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYv ZGlzcGxheS50ZXhpIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCmluZGV4IDE2NTc3ZDEzYzEu LjljMzc4YTMwMjcgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQorKysgYi9k b2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKQEAgLTUyNjQsMTMgKzUyNjQsMTMgQEAgSW1hZ2UgRm9y bWF0cwogICBTdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cyAoYW5kIHRoZSByZXF1aXJlZCBzdXBwb3J0 IGxpYnJhcmllcykgaW5jbHVkZQogUEJNIGFuZCBYQk0gKHdoaWNoIGRvIG5vdCBkZXBlbmQgb24g c3VwcG9ydCBsaWJyYXJpZXMgYW5kIGFyZSBhbHdheXMKIGF2YWlsYWJsZSksIFhQTSAoQGNvZGV7 bGliWHBtfSksIEdJRiAoQGNvZGV7bGliZ2lmfSBvcgotQGNvZGV7bGlidW5naWZ9KSwgSlBFRyAo QGNvZGV7bGlianBlZ30pLCBUSUZGCi0oQGNvZGV7bGlidGlmZn0pLCBQTkcgKEBjb2Rle2xpYnBu Z30pLCBhbmQgU1ZHIChAY29kZXtsaWJyc3ZnfSkuCitAY29kZXtsaWJ1bmdpZn0pLCBKUEVHIChA Y29kZXtsaWJqcGVnfSksIFRJRkYgKEBjb2Rle2xpYnRpZmZ9KSwgUE5HCisoQGNvZGV7bGlicG5n fSksIFNWRyAoQGNvZGV7bGlicnN2Z30pLCBhbmQgV2ViUCAoQGNvZGV7bGlid2VicH0pLgogCiAg IEVhY2ggb2YgdGhlc2UgaW1hZ2UgZm9ybWF0cyBpcyBhc3NvY2lhdGVkIHdpdGggYW4gQGRmbntp bWFnZSB0eXBlCiBzeW1ib2x9LiAgVGhlIHN5bWJvbHMgZm9yIHRoZSBhYm92ZSBmb3JtYXRzIGFy ZSwgcmVzcGVjdGl2ZWx5LAotQGNvZGV7cGJtfSwgQGNvZGV7eGJtfSwgQGNvZGV7eHBtfSwgQGNv ZGV7Z2lmfSwKLUBjb2Rle2pwZWd9LCBAY29kZXt0aWZmfSwgQGNvZGV7cG5nfSwgYW5kIEBjb2Rl e3N2Z30uCitAY29kZXtwYm19LCBAY29kZXt4Ym19LCBAY29kZXt4cG19LCBAY29kZXtnaWZ9LCBA Y29kZXtqcGVnfSwKK0Bjb2Rle3RpZmZ9LCBAY29kZXtwbmd9LCBAY29kZXtzdmd9LCBhbmQgQGNv ZGV7d2VicH0uCiAKICAgRnVydGhlcm1vcmUsIGlmIHlvdSBidWlsZCBFbWFjcyB3aXRoIEltYWdl TWFnaWNrCiAoQGNvZGV7bGliTWFnaWNrV2FuZH0pIHN1cHBvcnQsIEVtYWNzIGNhbiBkaXNwbGF5 IGFueSBpbWFnZSBmb3JtYXQKQEAgLTYyNzQsNiArNjI3NCw5IEBAIE90aGVyIEltYWdlIFR5cGVz CiBAaXRlbSBUSUZGCiBJbWFnZSB0eXBlIEBjb2Rle3RpZmZ9LgogU3VwcG9ydHMgdGhlIEBjb2Rl ezppbmRleH0gcHJvcGVydHkuICBAeHJlZntNdWx0aS1GcmFtZSBJbWFnZXN9LgorCitAaXRlbSBX ZWJQCitJbWFnZSB0eXBlIEBjb2Rle3dlYnB9LgogQGVuZCB0YWJsZQogCiBAbm9kZSBEZWZpbmlu ZyBJbWFnZXMKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYzFiOGFkYzUx MS4uMzZkMDRhYTJkOCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTYx LDYgKzYxLDEyIEBAIEVtYWNzIHByZXZpb3VzbHkgZGlkbid0IGRpc3Rpbmd1aXNoIGJldHdlZW4g dGhlICJyZWd1bGFyIiB3ZWlnaHQgYW5kCiB0aGUgIm1lZGl1bSIgd2VpZ2h0LCBidXQgaXQgbm93 IGFsc28gc3VwcG9ydHMgdGhlIChoZWF2aWVyKSAibWVkaXVtIgogd2VpZ2h0LgogCisrKysKKyoq IFN1cHBvcnQgZm9yIHRoZSBXZWJQIGltYWdlIGZvcm1hdC4KK1RoaXMgc3VwcG9ydCBpcyBidWls dCBieSBkZWZhdWx0IHdoZW4gdGhlIGxpYndlYnAgbGlicmFyeSBpcworYXZhaWxhYmxlLiAgVG8g ZGlzYWJsZSBpdCwgdXNlIHRoZSAnLS13aXRob3V0LXdlYnAnIGNvbmZpZ3VyZSBmbGFnLgorSW1h Z2Ugc3BlY2lmaWVycyBjYW4gbm93IHVzZSAnOnR5cGUgd2VicCcuCisKIAwKICogRWRpdGluZyBD aGFuZ2VzIGluIEVtYWNzIDI5LjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9maWxlcy5lbCBiL2xpc3Av ZmlsZXMuZWwKaW5kZXggNWE2YTMzNzIxYi4uZTZiOTRhNGExYSAxMDA2NDQKLS0tIGEvbGlzcC9m aWxlcy5lbAorKysgYi9saXNwL2ZpbGVzLmVsCkBAIC0yNzU4LDYgKzI3NTgsNyBAQCBhdXRvLW1v ZGUtYWxpc3QKICAgICAgKCJcXC5naWZcXCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC5wbmdc XCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC5qcGU/Z1xcJyIgLiBpbWFnZS1tb2RlKQorICAg ICAoIlxcLndlYnBcXCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC50ZT94dFxcJyIgLiB0ZXh0 LW1vZGUpCiAgICAgICgiXFwuW3RUXWVbeFhdXFwnIiAuIHRleC1tb2RlKQogICAgICAoIlxcLmlu c1xcJyIgLiB0ZXgtbW9kZSkJCTtJbnN0YWxsYXRpb24gZmlsZXMgZm9yIFRlWCBwYWNrYWdlcy4K ZGlmZiAtLWdpdCBhL2xpc3AvaW1hZ2UtZmlsZS5lbCBiL2xpc3AvaW1hZ2UtZmlsZS5lbAppbmRl eCBmYmM5ZWFhZjk0Li42ZGY0M2Y3MzdkIDEwMDY0NAotLS0gYS9saXNwL2ltYWdlLWZpbGUuZWwK KysrIGIvbGlzcC9pbWFnZS1maWxlLmVsCkBAIC0zNyw3ICszNyw3IEBACiAKIDs7OyMjI2F1dG9s b2FkCiAoZGVmY3VzdG9tIGltYWdlLWZpbGUtbmFtZS1leHRlbnNpb25zCi0gIChwdXJlY29weSAn KCJwbmciICJqcGVnIiAianBnIiAiZ2lmIiAidGlmZiIgInRpZiIgInhibSIgInhwbSIgInBibSIg InBnbSIgInBwbSIgInBubSIgInN2ZyIpKQorICAocHVyZWNvcHkgJygicG5nIiAianBlZyIgImpw ZyIgImdpZiIgInRpZmYiICJ0aWYiICJ4Ym0iICJ4cG0iICJwYm0iICJwZ20iICJwcG0iICJwbm0i ICJzdmciICJ3ZWJwIikpCiAgICJBIGxpc3Qgb2YgaW1hZ2UtZmlsZSBmaWxlbmFtZSBleHRlbnNp b25zLgogRmlsZW5hbWVzIGhhdmluZyBvbmUgb2YgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgY29uc2lk ZXJlZCBpbWFnZSBmaWxlcywKIGluIGFkZGl0aW9uIHRvIHRob3NlIG1hdGNoaW5nIGBpbWFnZS1m aWxlLW5hbWUtcmVnZXhwcycuCmRpZmYgLS1naXQgYS9saXNwL2ltYWdlLmVsIGIvbGlzcC9pbWFn ZS5lbAppbmRleCAyMDIyYjQxZDFmLi41MzQzZTI2ZDAzIDEwMDY0NAotLS0gYS9saXNwL2ltYWdl LmVsCisrKyBiL2xpc3AvaW1hZ2UuZWwKQEAgLTQ4LDYgKzQ4LDcgQEAgaW1hZ2UtdHlwZS1oZWFk ZXItcmVnZXhwcwogICAgICgiXFxgXFwoPzpNTVwwXFwqXFx8SUlcXCpcMFxcKSIgLiB0aWZmKQog ICAgICgiXFxgW1x0XG5cciBdKiUhUFMiIC4gcG9zdHNjcmlwdCkKICAgICAoIlxcYFx4ZmZceGQ4 IiAuIGpwZWcpICAgIDsgdXNlZCB0byBiZSAoaW1hZ2UtanBlZy1wIC4ganBlZykKKyAgICAoIlxc YFJJRkYuLi4uV0VCUFZQOCIgLiB3ZWJwKQogICAgICgsKGxldCogKChpbmNvbW1lbnQtcmUgIlxc KD86W14tXVxcfC1bXi1dXFwpIikKIAkgICAgIChjb21tZW50LXJlIChjb25jYXQgIlxcKD86IS0t IiBpbmNvbW1lbnQtcmUgIiotLT5bIFx0XHJcbl0qPFxcKSIpKSkKIAkoY29uY2F0ICJcXCg/Ojxc XD94bWxbIFx0XHJcbl0rW14+XSo+XFwpP1sgXHRcclxuXSo8IgpAQCAtNjcsNiArNjgsNyBAQCBp bWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzCiAgICcoKCJcXC5wbmdcXCciIC4gcG5nKQogICAg ICgiXFwuZ2lmXFwnIiAuIGdpZikKICAgICAoIlxcLmpwZT9nXFwnIiAuIGpwZWcpCisgICAgKCJc XC53ZWJwXFwnIiAuIHdlYnApCiAgICAgKCJcXC5ibXBcXCciIC4gYm1wKQogICAgICgiXFwueHBt XFwnIiAuIHhwbSkKICAgICAoIlxcLnBibVxcJyIgLiBwYm0pCkBAIC05Miw2ICs5NCw3IEBAIGlt YWdlLXR5cGUtYXV0by1kZXRlY3RhYmxlCiAgICAgKGpwZWcgLiBtYXliZSkKICAgICAodGlmZiAu IG1heWJlKQogICAgIChzdmcgLiBtYXliZSkKKyAgICAod2VicCAuIG1heWJlKQogICAgIChwb3N0 c2NyaXB0IC4gbmlsKSkKICAgIkFsaXN0IG9mIChJTUFHRS1UWVBFIC4gQVVUT0RFVEVDVCkgcGFp cnMgdXNlZCB0byBhdXRvLWRldGVjdCBpbWFnZSBmaWxlcy4KIFwoU2VlIGBpbWFnZS10eXBlLWF1 dG8tZGV0ZWN0ZWQtcCcpLgpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3czMi13aW4uZWwgYi9saXNw L3Rlcm0vdzMyLXdpbi5lbAppbmRleCA1ZDFkYzYwNjY3Li4zNjY5OTJjYmJmIDEwMDY0NAotLS0g YS9saXNwL3Rlcm0vdzMyLXdpbi5lbAorKysgYi9saXNwL3Rlcm0vdzMyLXdpbi5lbApAQCAtMjc0 LDYgKzI3NCw3IEBAIGxpYmdudXRscy12ZXJzaW9uCiAJICAgICAnKGdpZiAibGliZ2lmLTYuZGxs IiAiZ2lmbGliNS5kbGwiICJnaWYuZGxsIikKIAkgJyhnaWYgImxpYmdpZi01LmRsbCIgImdpZmxp YjQuZGxsIiAibGlidW5naWY0LmRsbCIgImxpYnVuZ2lmLmRsbCIpKSkKICAgICAgICAnKHN2ZyAi bGlicnN2Zy0yLTIuZGxsIikKKyAgICAgICAnKGxpYndlYnAgImxpYndlYnAtNy5kbGwiICJsaWJ3 ZWJwLmRsbCIpCiAgICAgICAgJyhnZGstcGl4YnVmICJsaWJnZGtfcGl4YnVmLTIuMC0wLmRsbCIp CiAgICAgICAgJyhnbGliICJsaWJnbGliLTIuMC0wLmRsbCIpCiAgICAgICAgJyhnaW8gImxpYmdp by0yLjAtMC5kbGwiKQpkaWZmIC0tZ2l0IGEvbnQvSU5TVEFMTCBiL250L0lOU1RBTEwKaW5kZXgg OWY1NDMxNTFhOS4uYTM5MDU3YzY2YyAxMDA2NDQKLS0tIGEvbnQvSU5TVEFMTAorKysgYi9udC9J TlNUQUxMCkBAIC00ODgsNiArNDg4LDcgQEAgYnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBh bmQgbmV3ZXIgc3lzdGVtcykuCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGlicmFyeT8g ICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBhIHBu ZyBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogICAgICAgIERvZXMgRW1h Y3MgdXNlIC1scnN2Zy0yPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisgICAg ICAgRG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBjYWlybz8gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgLWxsY21zMj8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBpbWFnZW1h Z2ljaz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vCkBAIC01OTcsOCArNTk4LDggQEAg YnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAqIE9wdGlv bmFsIGltYWdlIGxpYnJhcnkgc3VwcG9ydAogCiAgIEluIGFkZGl0aW9uIHRvIGl0cyAibmF0aXZl IiBpbWFnZSBmb3JtYXRzIChwYm0gYW5kIHhibSksIEVtYWNzIGNhbgotICBoYW5kbGUgb3RoZXIg aW1hZ2UgdHlwZXM6IHhwbSwgdGlmZiwgZ2lmLCBwbmcsIGpwZWcgYW5kIGV4cGVyaW1lbnRhbAot ICBzdXBwb3J0IGZvciBzdmcuCisgIGhhbmRsZSBvdGhlciBpbWFnZSB0eXBlczogeHBtLCB0aWZm LCBnaWYsIHBuZywganBlZywgd2VicCBhbmQKKyAgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHN2 Zy4KIAogICBUbyBidWlsZCBFbWFjcyB3aXRoIHN1cHBvcnQgZm9yIHRoZW0sIHRoZSBjb3JyZXNw b25kaW5nIGhlYWRlcnMgbXVzdAogICBiZSBpbiB0aGUgaW5jbHVkZSBwYXRoIGFuZCBsaWJyYXJp ZXMgc2hvdWxkIGJlIHdoZXJlIHRoZSBsaW5rZXIKQEAgLTczNiw2ICs3MzcsMTAgQEAgYnVpbGQg d2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAgIHdpdGhvdXQgaXQg Ynkgc3BlY2lmeWluZyB0aGUgLS13aXRob3V0LXJzdmcgc3dpdGNoIHRvIHRoZSBjb25maWd1cmUK ICAgc2NyaXB0LgogCisgIEZvciBXZWJQIGltYWdlcyB5b3Ugd2lsbCBuZWVkIGxpYndlYnA6CisK KyAgICBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLworCiAgIEJpbmFy aWVzIGZvciB0aGUgb3RoZXIgaW1hZ2UgbGlicmFyaWVzIGNhbiBiZSBmb3VuZCBvbiB0aGUKICAg ZXp3aW5wb3J0cyBzaXRlIG9yIGF0IHRoZSBHbnVXaW4zMiBwcm9qZWN0ICh0aGUgbGF0dGVyIGFy ZSBnZW5lcmFsbHkKICAgdmVyeSBvbGQsIHNvIG5vdCByZWNvbW1lbmRlZCkuICBOb3RlIHNwZWNp ZmljYWxseSB0aGF0LCBkdWUgdG8gc29tZQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIv c3JjL01ha2VmaWxlLmluCmluZGV4IDZkNzVlMzUzN2EuLjdjOTc3ZTM0ZWEgMTAwNjQ0Ci0tLSBh L3NyYy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTEyNCw3ICsxMjQsNyBA QCBMSUJfTUFUSD0KICMjIC1scHRocmVhZCwgb3IgZW1wdHkuCiBMSUJfUFRIUkVBRD1ATElCX1BU SFJFQURACiAKLUxJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJQkdJRkAg QExJQlhQTUAKK0xJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJQkdJRkAg QExJQlhQTUAgQFdFQlBfTElCU0AKIAogWENCX0xJQlM9QFhDQl9MSUJTQAogWEZUX0xJQlM9QFhG VF9MSUJTQApkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCBmZjA1 NzQxYjJjLi5mNjVjMjMxODM2IDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9zcmMvaW1h Z2UuYwpAQCAtODczOSw4ICs4NzM5LDI4MSBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZykKICNlbmRpZiAvKiBIQVZFX0dJRiAqLwogCiAKKyNpZmRlZiBIQVZF X1dFQlAKKworDAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCQkJIFdlYlAKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworI2luY2x1ZGUgIndlYnAvZGVjb2RlLmgiCisKKy8qIEluZGljZXMgb2YgaW1hZ2Ugc3BlY2lm aWNhdGlvbiBmaWVsZHMgaW4gd2VicF9mb3JtYXQsIGJlbG93LiAgKi8KKworZW51bSB3ZWJwX2tl eXdvcmRfaW5kZXgKK3sKKyAgV0VCUF9UWVBFLAorICBXRUJQX0RBVEEsCisgIFdFQlBfRklMRSwK KyAgV0VCUF9BU0NFTlQsCisgIFdFQlBfTUFSR0lOLAorICBXRUJQX1JFTElFRiwKKyAgV0VCUF9B TEdPUklUSE0sCisgIFdFQlBfSEVVUklTVElDX01BU0ssCisgIFdFQlBfTUFTSywKKyAgV0VCUF9C QUNLR1JPVU5ELAorICBXRUJQX0xBU1QKK307CisKKy8qIFZlY3RvciBvZiBpbWFnZV9rZXl3b3Jk IHN0cnVjdHVyZXMgZGVzY3JpYmluZyB0aGUgZm9ybWF0CisgICBvZiB2YWxpZCB1c2VyLWRlZmlu ZWQgaW1hZ2Ugc3BlY2lmaWNhdGlvbnMuICAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdl X2tleXdvcmQgd2VicF9mb3JtYXRbV0VCUF9MQVNUXSA9Cit7CisgIHsiOnR5cGUiLAkJSU1BR0Vf U1lNQk9MX1ZBTFVFLAkJCTF9LAorICB7IjpkYXRhIiwJCUlNQUdFX1NUUklOR19WQUxVRSwJCQkw fSwKKyAgeyI6ZmlsZSIsCQlJTUFHRV9TVFJJTkdfVkFMVUUsCQkJMH0sCisgIHsiOmFzY2VudCIs CQlJTUFHRV9BU0NFTlRfVkFMVUUsCQkJMH0sCisgIHsiOm1hcmdpbiIsCQlJTUFHRV9OT05fTkVH QVRJVkVfSU5URUdFUl9WQUxVRV9PUl9QQUlSLCAwfSwKKyAgeyI6cmVsaWVmIiwJCUlNQUdFX0lO VEVHRVJfVkFMVUUsCQkJMH0sCisgIHsiOmNvbnZlcnNpb24iLAlJTUFHRV9ET05UX0NIRUNLX1ZB TFVFX1RZUEUsCQkwfSwKKyAgeyI6aGV1cmlzdGljLW1hc2siLAlJTUFHRV9ET05UX0NIRUNLX1ZB TFVFX1RZUEUsCQkwfSwKKyAgeyI6bWFzayIsCQlJTUFHRV9ET05UX0NIRUNLX1ZBTFVFX1RZUEUs CQkwfSwKKyAgeyI6YmFja2dyb3VuZCIsCUlNQUdFX1NUUklOR19PUl9OSUxfVkFMVUUsCQkwfQor fTsKKworLyogUmV0dXJuIHRydWUgaWYgT0JKRUNUIGlzIGEgdmFsaWQgV2ViUCBpbWFnZSBzcGVj aWZpY2F0aW9uLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfaW1hZ2VfcCAoTGlzcF9PYmplY3Qg b2JqZWN0KQoreworICBzdHJ1Y3QgaW1hZ2Vfa2V5d29yZCBmbXRbV0VCUF9MQVNUXTsKKyAgbWVt Y3B5IChmbXQsIHdlYnBfZm9ybWF0LCBzaXplb2YgZm10KTsKKworICBpZiAoIXBhcnNlX2ltYWdl X3NwZWMgKG9iamVjdCwgZm10LCBXRUJQX0xBU1QsIFF3ZWJwKSkKKyAgICByZXR1cm4gZmFsc2U7 CisKKyAgLyogTXVzdCBzcGVjaWZ5IGVpdGhlciB0aGUgOmRhdGEgb3IgOmZpbGUga2V5d29yZC4g ICovCisgIHJldHVybiBmbXRbV0VCUF9GSUxFXS5jb3VudCArIGZtdFtXRUJQX0RBVEFdLmNvdW50 ID09IDE7Cit9CisKKyNpZmRlZiBXSU5ET1dTTlQKKworLyogV2ViUCBsaWJyYXJ5IGRldGFpbHMu ICAqLworCitERUZfRExMX0ZOIChpbnQsIFdlYlBHZXRJbmZvLCAoY29uc3QgdWludDhfdCAqLCBz aXplX3QsIGludCAqLCBpbnQgKikpOworREVGX0RMTF9GTiAoVlA4U3RhdHVzQ29kZSwgV2ViUEdl dEZlYXR1cmVzLCAoY29uc3QgdWludDhfdCAqLCBzaXplX3QsIFdlYlBCaXRzdHJlYW1GZWF0dXJl cyAqKSk7CitERUZfRExMX0ZOICh1aW50OF90ICosIFdlYlBEZWNvZGVSR0IsIChjb25zdCB1aW50 OF90ICosIHNpemVfdCwgaW50ICosIGludCAqKSk7CitERUZfRExMX0ZOICh1aW50OF90ICosIFdl YlBEZWNvZGVCR1IsIChjb25zdCB1aW50OF90ICosIHNpemVfdCwgaW50ICosIGludCAqKSk7CitE RUZfRExMX0ZOICh2b2lkLCBXZWJQRnJlZURlY0J1ZmZlciAoV2ViUERlY0J1ZmZlciAqKSk7CisK K3N0YXRpYyBib29sCitpbml0X3dlYnBfZnVuY3Rpb25zICh2b2lkKQoreworICBITU9EVUxFIGxp YnJhcnk7CisKKyAgaWYgKCEobGlicmFyeSA9IHczMl9kZWxheWVkX2xvYWQgKFF3ZWJwKSkpCisg ICAgcmV0dXJuIGZhbHNlOworCisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0SW5mbyk7 CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0RmVhdHVyZXMpOworICBMT0FEX0RMTF9G TiAobGlicmFyeSwgV2ViUERlY29kZVJHQkEpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2Vi UERlY29kZVJHQik7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQRnJlZSk7CisgIHJldHVy biB0cnVlOworfQorCisjdW5kZWYgV2ViUEdldEluZm8KKyN1bmRlZiBXZWJQR2V0RmVhdHVyZXMK KyN1bmRlZiBXZWJQRGVjb2RlUkdCQQorI3VuZGVmIFdlYlBEZWNvZGVSR0IKKyN1bmRlZiBXZWJQ RnJlZQorCisjZGVmaW5lIFdlYlBHZXRJbmZvIGZuX1dlYlBHZXRJbmZvCisjZGVmaW5lIFdlYlBH ZXRGZWF0dXJlcyBmbl9XZWJQR2V0RmVhdHVyZXMKKyNkZWZpbmUgV2ViUERlY29kZVJHQkEgZm5f V2ViUERlY29kZVJHQkEKKyNkZWZpbmUgV2ViUERlY29kZVJHQiBmbl9XZWJQRGVjb2RlUkdCCisj ZGVmaW5lIFdlYlBGcmVlIGZuX1dlYlBGcmVlCisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKwor LyogTG9hZCBXZWJQIGltYWdlIElNRyBmb3IgdXNlIG9uIGZyYW1lIEYuICBWYWx1ZSBpcyB0cnVl IGlmCisgICBzdWNjZXNzZnVsLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfbG9hZCAoc3RydWN0 IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKK3sKKyAgcHRyZGlmZl90IHNpemUgPSAwOwor ICB1aW50OF90ICpjb250ZW50czsKKyAgTGlzcF9PYmplY3QgZmlsZTsKKworICAvKiBPcGVuIHRo ZSBXZWJQIGZpbGUuICAqLworICBMaXNwX09iamVjdCBzcGVjaWZpZWRfZmlsZSA9IGltYWdlX3Nw ZWNfdmFsdWUgKGltZy0+c3BlYywgUUNmaWxlLCBOVUxMKTsKKyAgTGlzcF9PYmplY3Qgc3BlY2lm aWVkX2RhdGEgPSBpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDZGF0YSwgTlVMTCk7CisK KyAgaWYgKE5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKyAgICB7CisgICAgICBpbnQgZmQ7CisgICAg ICBmaWxlID0gaW1hZ2VfZmluZF9pbWFnZV9mZCAoc3BlY2lmaWVkX2ZpbGUsICZmZCk7CisgICAg ICBpZiAoIVNUUklOR1AgKGZpbGUpKQorCXsKKwkgIGltYWdlX2Vycm9yICgiQ2Fubm90IGZpbmQg aW1hZ2UgZmlsZSBgJXMnIiwgc3BlY2lmaWVkX2ZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0K KworICAgICAgY29udGVudHMgPSAodWludDhfdCAqKSBzbHVycF9maWxlIChmZCwgJnNpemUpOwor ICAgICAgaWYgKGNvbnRlbnRzID09IE5VTEwpCisJeworCSAgaW1hZ2VfZXJyb3IgKCJFcnJvciBs b2FkaW5nIFdlYlAgaW1hZ2UgYCVzJyIsIGZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIVNUUklOR1AgKHNwZWNpZmllZF9kYXRhKSkK Kwl7CisJICBpbWFnZV9lcnJvciAoIkludmFsaWQgaW1hZ2UgZGF0YSBgJXMnIiwgc3BlY2lmaWVk X2RhdGEpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgIC8qIENhc3RpbmcgYXZvaWRzIGEg R0NDIHdhcm5pbmcuICAqLworICAgICAgY29udGVudHMgPSAodWludDhfdCAqKSBTU0RBVEEgKHNw ZWNpZmllZF9kYXRhKTsKKyAgICAgIHNpemUgPSBTQllURVMgKHNwZWNpZmllZF9kYXRhKTsKKyAg ICB9CisKKyAgLyogVmFsaWRhdGUgdGhlIFdlYlAgaW1hZ2UgaGVhZGVyLiAgKi8KKyAgaWYgKCFX ZWJQR2V0SW5mbyAoY29udGVudHMsIHNpemUsIE5VTEwsIE5VTEwpKQorICAgIHsKKyAgICAgIGlm ICghTklMUCAoc3BlY2lmaWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiTm90IGEgV2ViUCBmaWxl OiBgJXMnIiwgZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2VfZXJyb3IgKCJJbnZhbGlkIGhlYWRl ciBpbiBXZWJQIGltYWdlIGRhdGEiKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjE7CisgICAgfQor CisgIC8qIEdldCBXZWJQIGZlYXR1cmVzLiAgKi8KKyAgV2ViUEJpdHN0cmVhbUZlYXR1cmVzIGZl YXR1cmVzOworICBWUDhTdGF0dXNDb2RlIHJlc3VsdCA9IFdlYlBHZXRGZWF0dXJlcyAoY29udGVu dHMsIHNpemUsICZmZWF0dXJlcyk7CisgIHN3aXRjaCAocmVzdWx0KQorICAgIHsKKyAgICBjYXNl IFZQOF9TVEFUVVNfT0s6CisgICAgICBicmVhazsKKyAgICBjYXNlIFZQOF9TVEFUVVNfTk9UX0VO T1VHSF9EQVRBOgorICAgIGNhc2UgVlA4X1NUQVRVU19PVVRfT0ZfTUVNT1JZOgorICAgIGNhc2Ug VlA4X1NUQVRVU19JTlZBTElEX1BBUkFNOgorICAgIGNhc2UgVlA4X1NUQVRVU19CSVRTVFJFQU1f RVJST1I6CisgICAgY2FzZSBWUDhfU1RBVFVTX1VOU1VQUE9SVEVEX0ZFQVRVUkU6CisgICAgY2Fz ZSBWUDhfU1RBVFVTX1NVU1BFTkRFRDoKKyAgICBjYXNlIFZQOF9TVEFUVVNfVVNFUl9BQk9SVDoK KyAgICBkZWZhdWx0OgorICAgICAgLyogRXJyb3Igb3V0IGluIGFsbCBvdGhlciBjYXNlcy4gICov CisgICAgICBpZiAoIU5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKwlpbWFnZV9lcnJvciAoIkVycm9y IHdoZW4gaW50ZXJwcmV0aW5nIFdlYlAgaW1hZ2UgZGF0YTogYCVzJyIsIGZpbGUpOworICAgICAg ZWxzZQorCWltYWdlX2Vycm9yICgiRXJyb3Igd2hlbiBpbnRlcnByZXRpbmcgV2ViUCBpbWFnZSBk YXRhIik7CisgICAgICBnb3RvIHdlYnBfZXJyb3IxOworICAgIH0KKworICAvKiBEZWNvZGUgV2Vi UCBkYXRhLiAgKi8KKyAgdWludDhfdCAqZGVjb2RlZDsKKyAgaW50IHdpZHRoLCBoZWlnaHQ7Cisg IGlmIChmZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgLyogTGluZWFyIFtyMCwgZzAsIGIwLCBhMCwg cjEsIGcxLCBiMSwgYTEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29kZWQgPSBXZWJQRGVjb2Rl UkdCQSAoY29udGVudHMsIHNpemUsICZ3aWR0aCwgJmhlaWdodCk7CisgIGVsc2UKKyAgICAvKiBM aW5lYXIgW3IwLCBnMCwgYjAsIHIxLCBnMSwgYjEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29k ZWQgPSBXZWJQRGVjb2RlUkdCIChjb250ZW50cywgc2l6ZSwgJndpZHRoLCAmaGVpZ2h0KTsKKwor ICBpZiAoISh3aWR0aCA8PSBJTlRfTUFYICYmIGhlaWdodCA8PSBJTlRfTUFYCisJJiYgY2hlY2tf aW1hZ2Vfc2l6ZSAoZiwgd2lkdGgsIGhlaWdodCkpKQorICAgIHsKKyAgICAgIGltYWdlX3NpemVf ZXJyb3IgKCk7CisgICAgICBnb3RvIHdlYnBfZXJyb3IyOworICAgIH0KKworICAvKiBDcmVhdGUg dGhlIHggaW1hZ2UgYW5kIHBpeG1hcC4gICovCisgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZywg bWFza19pbWc7CisgIGlmICghaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1hcCAoZiwgaW1n LCB3aWR0aCwgaGVpZ2h0LCAwLCAmeGltZywgZmFsc2UpKQorICAgIGdvdG8gd2VicF9lcnJvcjI7 CisKKyAgLyogQ3JlYXRlIGFuIGltYWdlIGFuZCBwaXhtYXAgc2VydmluZyBhcyBtYXNrIGlmIHRo ZSBXZWJQIGltYWdlCisgICAgIGNvbnRhaW5zIGFuIGFscGhhIGNoYW5uZWwuICAqLworICBpZiAo ZmVhdHVyZXMuaGFzX2FscGhhCisgICAgICAmJiAhaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3Bp eG1hcCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAxLCAmbWFza19pbWcsIHRydWUpKQorICAgIHsK KyAgICAgIGltYWdlX2Rlc3Ryb3lfeF9pbWFnZSAoeGltZyk7CisgICAgICBpbWFnZV9jbGVhcl9p bWFnZV8xIChmLCBpbWcsIENMRUFSX0lNQUdFX1BJWE1BUCk7CisgICAgICBnb3RvIHdlYnBfZXJy b3IyOworICAgIH0KKworICAvKiBGaWxsIHRoZSBYIGltYWdlIGFuZCBtYXNrIGZyb20gV2ViUCBk YXRhLiAgKi8KKyAgaW5pdF9jb2xvcl90YWJsZSAoKTsKKworICB1aW50OF90ICpwID0gZGVjb2Rl ZDsKKyAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKKyAgICB7CisgICAgICBmb3Ig KGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpCisJeworCSAgaW50IHIgPSAqcCsrIDw8IDg7CisJ ICBpbnQgZyA9ICpwKysgPDwgODsKKwkgIGludCBiID0gKnArKyA8PCA4OworCSAgUFVUX1BJWEVM ICh4aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7CisKKwkgIC8qIEFu IGFscGhhIGNoYW5uZWwgYXNzb2NpYXRlcyB2YXJpYWJsZSB0cmFuc3BhcmVuY3kgd2l0aCBhbgor CSAgICAgaW1hZ2UuICBXZWJQIGFsbG93cyB1cCB0byAyNTYgbGV2ZWxzIG9mIHBhcnRpYWwgdHJh bnNwYXJlbmN5LgorCSAgICAgV2UgaGFuZGxlIHRoaXMgbGlrZSB3aXRoIFBORyAod2hpY2ggc2Vl KSwgdXNpbmcgdGhlIGZyYW1lJ3MKKwkgICAgIGJhY2tncm91bmQgY29sb3IgdG8gY29tYmluZSB0 aGUgaW1hZ2Ugd2l0aC4gICovCisJICBpZiAoZmVhdHVyZXMuaGFzX2FscGhhKQorCSAgICB7CisJ ICAgICAgaWYgKG1hc2tfaW1nKQorCQlQVVRfUElYRUwgKG1hc2tfaW1nLCB4LCB5LCAqcCA+IDAg PyBQSVhfTUFTS19EUkFXIDogUElYX01BU0tfUkVUQUlOKTsKKwkgICAgICArK3A7CisJICAgIH0K Kwl9CisgICAgfQorCisjaWZkZWYgQ09MT1JfVEFCTEVfU1VQUE9SVAorICAvKiBSZW1lbWJlciBj b2xvcnMgYWxsb2NhdGVkIGZvciB0aGlzIGltYWdlLiAgKi8KKyAgaW1nLT5jb2xvcnMgPSBjb2xv cnNfaW5fY29sb3JfdGFibGUgKCZpbWctPm5jb2xvcnMpOworICBmcmVlX2NvbG9yX3RhYmxlICgp OworI2VuZGlmIC8qIENPTE9SX1RBQkxFX1NVUFBPUlQgKi8KKworICAvKiBQdXQgeGltZyBpbnRv IHRoZSBpbWFnZS4gICovCisgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwor CisgIC8qIFNhbWUgZm9yIHRoZSBtYXNrLiAgKi8KKyAgaWYgKG1hc2tfaW1nKQorICAgIHsKKyAg ICAgIC8qIEZpbGwgaW4gdGhlIGJhY2tncm91bmRfdHJhbnNwYXJlbnQgZmllbGQgd2hpbGUgd2Ug aGF2ZSB0aGUKKwkgbWFzayBoYW5keS4gIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAq LworICAgICAgaW1hZ2VfYmFja2dyb3VuZF90cmFuc3BhcmVudCAoaW1nLCBmLCAoRW1hY3NfUGl4 X0NvbnRleHQpbWFza19pbWcpOworCisgICAgICBpbWFnZV9wdXRfeF9pbWFnZSAoZiwgaW1nLCBt YXNrX2ltZywgMSk7CisgICAgfQorCisgIGltZy0+d2lkdGggPSB3aWR0aDsKKyAgaW1nLT5oZWln aHQgPSBoZWlnaHQ7CisKKyAgLyogQ2xlYW4gdXAuICAqLworICBXZWJQRnJlZSAoZGVjb2RlZCk7 CisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNvbnRlbnRzKTsKKyAg cmV0dXJuIHRydWU7CisKKyB3ZWJwX2Vycm9yMjoKKyAgV2ViUEZyZWUgKGRlY29kZWQpOworCisg d2VicF9lcnJvcjE6CisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNv bnRlbnRzKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYgLyogSEFWRV9XRUJQICovCisK KwogI2lmZGVmIEhBVkVfSU1BR0VNQUdJQ0sKIAorDAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkJIElt YWdlTWFnaWNrCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwNzI1LDYgKzEwOTk4LDEwIEBAIGluaXRp YWxpemVfaW1hZ2VfdHlwZSAoc3RydWN0IGltYWdlX3R5cGUgY29uc3QgKnR5cGUpCiAjaWYgZGVm aW5lZCBIQVZFX1hQTSB8fCBkZWZpbmVkIEhBVkVfTlMKICB7IFNZTUJPTF9JTkRFWCAoUXhwbSks IHhwbV9pbWFnZV9wLCB4cG1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UsCiAgICBJTUFHRV9UWVBF X0lOSVQgKGluaXRfeHBtX2Z1bmN0aW9ucykgfSwKKyNlbmRpZgorI2lmIGRlZmluZWQgSEFWRV9X RUJQCisgeyBTWU1CT0xfSU5ERVggKFF3ZWJwKSwgd2VicF9pbWFnZV9wLCB3ZWJwX2xvYWQsIGlt YWdlX2NsZWFyX2ltYWdlLAorICAgSU1BR0VfVFlQRV9JTklUIChpbml0X3dlYnBfZnVuY3Rpb25z KSB9LAogI2VuZGlmCiAgeyBTWU1CT0xfSU5ERVggKFF4Ym0pLCB4Ym1faW1hZ2VfcCwgeGJtX2xv YWQsIGltYWdlX2NsZWFyX2ltYWdlIH0sCiAgeyBTWU1CT0xfSU5ERVggKFFwYm0pLCBwYm1faW1h Z2VfcCwgcGJtX2xvYWQsIGltYWdlX2NsZWFyX2ltYWdlIH0sCkBAIC0xMDg5MSw2ICsxMTE2OCwx MSBAQCBzeW1zX29mX2ltYWdlICh2b2lkKQogICBhZGRfaW1hZ2VfdHlwZSAoUXBuZyk7CiAjZW5k aWYKIAorI2lmIGRlZmluZWQgKEhBVkVfV0VCUCkKKyAgREVGU1lNIChRd2VicCwgIndlYnAiKTsK KyAgYWRkX2ltYWdlX3R5cGUgKFF3ZWJwKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoSEFWRV9J TUFHRU1BR0lDSykKICAgREVGU1lNIChRaW1hZ2VtYWdpY2ssICJpbWFnZW1hZ2ljayIpOwogICBh ZGRfaW1hZ2VfdHlwZSAoUWltYWdlbWFnaWNrKTsKZGlmZiAtLWdpdCBhL3Rlc3QvZGF0YS9pbWFn ZS9ibGFjay53ZWJwIGIvdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRi ZTcxNjQxNWIxNmU2MTExYWM5MmVjMzk3ODQxMWQ5NWJlMDhlMwpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgMzc3ODAKemNtZUh3NHxwNUpuZkpTK149YyQ1X0Y3U2RWcTYlPmlYKXBpa3NaZnpUdFpq Mlc4XmRlQ3ZpaWRsdUdgUyRSVitmCno/ZmZDN2JnZH1ITnorc3FIPjQ/MDxFQ2ohSVdBQzJJbSVI ZDFQQztSQFRaaD1KdWM5ZXFySEFUdUdqMUpgV15CMgp6OCVhKS1rYUc5KnlRZzxnJiU2RjwtPF5H RD1BQyFtZDFyUVpjZjdLeHYycGh1TUFzfi1ZaEstNHYmSyREYkFVRlkKenI5QDVqXzA2TFVyXkg0 I3Z+QkVEZ0czdjxgZz5QaVN0cig5ZCE0WlVqTzxpRUdpVnlra0dBI29ncW9YfE4kdn04Cnp6a1FW eWRGQUREbmJ3N1F7JFN7fF9LclJYcjNpMnNaOVRwSHBkK0JHeEFnWiZkTEwrNFRQKWZSYGhMKUpk TGJhXwp6KkpPQlduKk9EdipRTXhHcDxLTiFFOSs0PDdzQUU1RVY/eXxaajFHOTFXeSVze091ZE5r VW0/SnJyUlpiaT07UGgKeiphWD45bj1HTkRxdzhhPGFQJEwzYlJ7Kj5hJXZfKXQrYV9jWCNAM0JJ Z1ZXaj43JGpuVWlTeSQ3cENHakJVVVM3CnpiKXIlUEhCZEtncS1aS1ckdk9aSnd6SW5KVFJYb3A2 e0ktb2g7clZUbkUyO2VMe2AtQ2QmIUIzfDlrSm0jQ3V+egp6bUxDKDFjYiQjakp4V3liRjk9VmI0 ZkI3UUNfaDI7JGcjNnd0Iz1aQWAhKnVhazl3bEwoTnNQYntJYSFjaUdLWXgKenFHe0k+TytRSXd8 OUR6JnhGKWFEU0FJeTswJG5acEtHN0hWNlAydCgrU21WcWEmdHNEcXFoJl8kPjxOM0UyPEh4Cnol MGhRNVckcEEpJmB4QTlZaSNLd2VXeGNAe190eGo/eH1oYCRiO2lfYHQoMUh6VlpfP3Vscm01NkpN el8hQU1LaQp6RyZNZHkwQmRoNUJibGBodnIkdX5pVjd3ckwoNFJvVm80Un1kQz5VXmdZZ3IrMF9k UCslcl5paGNvWkJaM1lEREgKekBvbXItWFhzeW40ckYrdzY7PmViRyNxfm1SRHpicXMzUClvbVFG fFZibCNTaENrOT05Xl9aMlFWRGY8SHJLY0kwCnpweCopZ0dIOTd1NDJOSFFpWGV+Tm8xPE9QelY1 RWhIZm1VMlV3Jm57aVhIfCgqdj1mVVkrQndkRCg2LU49VF5kUQp6RHViMDN3SDNrSWliYk13ZXI/ c0YrUkJDMCt9cWpKLT9XXjlsPyV9Ul5BT3ZPVUNKZFpTTCg9YHFOTjZpWV5oKFYKejhLUFgwUDBe OH1XZl43Y1dBWHI5Ozc1Xmk9ISVKN1RMR3hxaD5AUUAtVSRZSWVpKF8kcWYoU1UtaGdjN2BEYk5K Cno5S1EjUiRtN3AwUDlHOGNBOHRZTS1ANE8oWXdyS09XdFh8ckVaUUdXd35JMj1eNCVHXzYwfnBW WX09V2dwLXFAaQp6RmV7dnJSI0gqTiFPSG5UT0VUU0ZZN3RrPiZ7dSgwWmNwPGxYaFpEd2JZODhK WFZ7Knl7cT4tOGhTVEFfcHNtQnsKemRfZlk9KDkoPS04NSRtZT4+MilUVjdnYDROfERWKDVTXjA0 RUdeSFg4b0U3Ozk/cWdeRyRWNkdGc097NEVoOElFCnp3YCtrJFc2OTkzWCsjJXxvbylOezY+Q2Fu PXwrX2RFISZOOUFrNzFrU2NhRDJtYUs1fkspUUA/ITVgI2chYWQ7OAp6dlVzYytUREU3TjY+aUkt P084T35RaHg4R1JYWFczVF5YIWNSMnpofHMxT3led1V3MiU3NHpYcS1YQTlHUDBBPVkKej17SGkm NmFpYTdOez9+WVRTMmVuIXt0ZnQqOyh8dzNAeHVNZ2RkV3JSeFZnYkhLMWlGV2NPRX1NUEhxdjtr QFckCno4TSpAVzhxbV5iSE4oUGckazF5KmU9PFd5Syh9Uys4MFoqaW5aOFZDZUhPaFRpfCkjelo8 NT4pdklsV3t2JT5xYgp6PT45QnZReD81Qml7Nj89Wl9BPVRsU0wxSlBDfjk4eFk+QXloTz8jWjg5 RTYlaylae0E+PC1YVXchQCVyMH1aMzIKeiEhWXlEZn1Ta25hMjk9TTdYOEk2ZFZod05gdXF9VHNu MTd7Jk00QHNLdEJRY1VlS3UpSjE8QkZHeUZrWmB4QHdSCnpXYkE8TkthPl56XihefVNFYyExJXJf ekJCYEFnOFVyI3h7SDxPVkl9S0x6XjFFZEdiRz14PTZkRGQpcGtedFY5RQp6eE5qcndCY1BASHpY Ymo1NDNDdWF1ZC07MVY2WmN5LSsrZ2lYPGYtUUVnNCRjVVBZRkQ9MG5MK3A5c1Z0RmVnUk4KektA PEYzaFVaQD1pMXVYWThLe3JsOEN1M14wa0BScmFgM01MRXFsLWcoMktMdTdnX3hDITZTOUQ1PEkk QHJxX2FBCnppfmlYX18lX2Y+R1c8QkR2TWhRXzdYNWsxRVpkZyFoOHF6I2pOQGE3WWk0TFI2Q047 JnwxMDI+ezdWclkkYmAlRAp6JH1GQ1M0QlozMCZCQHxma1ZTVzkocUQ7bXlyNmw2WGd9eEAoNVpU XzNmNWMmeChzUUwtQW90K1RXSkxKM0Q2KE8KeiU4TzxBcCQtaGVjfWgwMHAmViFaaVBjUWdRY2kw b1Q8Wkx1RVNfYl5SYkgxe1ZKMkw5O2c0cDgtPC13WTFNVyV3Cnp5RThoOFkkTm57UnluNG04MGM9 JENnYG84QmE/RHMpVkM3Q04pUHh1Z3MlViVINCVmP1VJIWluYlJwPWJPa1BzWAp6cUFaJXMkPTs9 XnJhVmlZc3RoZTwrTD1ZKW99c3MpRnFkYSYqfj07IVRCZWBPKDZedioxVChadSRIPnFpTmlvbXIK emI4WiZUV20pPiFtQms7KnFBJChSeGslXkJTPlpSTHl3Y3ZUTHdQQCgzNzdkXmt3dFUhWX45KGk9 K2VvMipBbmZgCnpzKjg/ezQjJHdASCF8clVOdmg3ITZLSTJ0Uz5hYl4oVkNnZyVZeG82Q3FwOX1R Wnd8b1d6VVVXJHx6QnJNRiZNPwp6WVBeI2s/XlJHeys7eyNfXjg5YnlDLXZ8QHJSLURrZH5pKW4+ RjB5Pl5RWFFfKWU5RVBVcUhCfW08UH4mdUBEa2UKenJCRzJiVW5+O3U0X04/QFI5VXI5UkVXdzJS cnN2e0F1YmUxfDBfTXhwU2xMOEB8KTdZbG1AMFdGcnxWMlk3THctCnpgP01mNEJlZnVpam5jaGt4 X18mbl5aVThWMT9VYngwMnpMb3okT1IkbFNpMn1Ib0VIU0A9JCZLbDJ4bSZVVUBDaQp6QjVidihL TUBTcHJ2NUclaDh1XmU/RV5IPnV2JWVEbnUqPz5Yc0drcy08PTNHd2tvNmY3Uk9rQXd8Tzkra19S ITEKel47fmB9b3loLSFfSTc/dyZPNzs9YSg8RWpfd3lkaHpoOFlrenE8R2RUPm19cjdIfHI5Q3xA eGojX2B7UWR3QGd2CnpgP1VNPXlHeChXfEpkeH5gVHN6Izw/bTV7bmc1QmhOQWo8dU19ZDkkM2hm NzsmLVpJRDx1ZnsmLSUwbzkyV15NKgp6byVCSGQ1JXg7ezN6cHlIVXJXRXZaPVYpSGRhWGJedW9q MmA+d3loRzd0ak9yMHt5XmRVQE5jPHhDT1dzRm84SWIKejAwd359VT5DMygqYUlaPENua28wNW53 T3kra0VvPDNnUGJweldrWlJ7YEAhbkNIV1BCME9Xcil8NUI+U3xIdDEyCnpeV1J+V2BEQ2ZlQUYp PVc5OU13JTBvP0gpYzElbj5neVh7d2xvZmFzY25wQXNtcHJZK0dfdEpNJGhIQjtFKnlJPwp6N3I/ WH0kXipDdD5qJihCMTVoPUViVT8kazFLX0xGP2pSUlgxaH09Z2ZBMGhld1F1QkhxUzVJeEBZUUhQ U04kNjAKelUhamV0YjJUZG88bClvYVZMfFE3Zm0rU040a0M+Ynp5I3ZKQVRTRHkwfHhISnBUT303 OTF9UG0xJEZeUlU8P1EmCnp7NHBHZGZaZmB9IzJ5QG5hb21zTlVCTGFvQXorYERQeG9sMXFaPDRJ QEJ4MEgjT2s2bFlrPWxqWWJqdCYoaXxXTgp6Uk5+c0BLbyFza3RPbCtGKSZMRGFvamh1a2dFXkRA VFk7c1ozbFlgYEk7e1BqZEtMODR0Zl9QWkA/SFpORDA3fG0KejRlTTRNeDhkanBAQWNZKD5GdjFJ M2FCYEw2dndxMXFoJmFAMEkhNFokNEtgTEBZJGBBSlF2YCFVWkhGZ1MxNHE0Cno1PVJgfXN1SHR1 e19leXpidFROcnppbGh6N09SSm9URXU1N20rKl5+d1V9MG4wUFIyclNJT1lfUTYydiNIU29fWAp6 alhiMWBeMXN1QF8oeVVOQE9pZF95dnc9fGVFV2dCZk9+KT5GYnM/VWR4MDNSOXcyVEk7fGQpRGVJ SWEpfDdQTEAKekZRVFdwUFJ8NDVKVkQzIzJwIzFJPXtiSEVgTUZPaTtaOCtCRSs2RSZBSUFyOXRV fXhYUD1AUHNhRDZXNUFtfmNhCnpEcmsqPWkjVUlwIWhERjlhKzctYUE/ayh2VFhFY208MUh4OXR2 TDRNeEVWKGlhcEZKJTd6Qm9aVUJHVCY1QWJgOwp6OztnfihJLW14cTEjU1NZMEEyLU4xNn5KeTQ3 PnE2JW1xQ0hFSk5PcEA9PHo+JjswUD9wcjYzQz53I1laY0VBRFQKejBuZ2NIRDxeQ2hFNj9NMjYz M1UyQUQoUWtlVGJYcEU0R1A9U0FvfW4qTVQxY3I9YShAUCt2YTwtaUgzKTtsJHB5CnorcFhgfFJy TUZaRllWKkRVKWxkdnNwY2Yhd2Rje1ZGP0lNR3lPbi14Y2hUPX57KEdHTkpJK3R6e0JXK1NKX0l9 cgp6Sk9WcmxKTyhAdEpPUjhyKGIoXyt5I2MkQyZwVFFISVRzaVE2MktyWjFuZEhLMUFCbFpGYnM/ VWR4M3F4ZSY4PFAKejk+NChWZkNpdXUybT8hald4IVF7ZUJRRFdYYVFDT0B8bndaITFjZmx6KU16 Pmp6T0xpITFJODcoKTY2UW9zSl4+CnotSEJCI201T31HRVQ1VkFmYT9IMTVDRj02OSZwZFdhVmAp OUR1RjdYOG1Jd2tmeTtwXzAwVXNhUlh7VmE1QC1QOwp6S3N5aXZUN2s4fGRZfWlgMkhYTnsyMzcr bHojMlRoLWhnOGxhMHZPfDJrWnE3MDApNmxVX1dwZGZYQTB8IWp8R2QKejB2SDVfZkwqfERVPU0p RGkhPWk0MUlCPVJmQyRoRXRPYTV+SkZwKHUzVHl6bmZOajduel4lWSRwY25HSUpGI1J7CnpFJE57 MDAyaSFGITt1M3t6eWE4U041SzZrQEVHdG9AQzVNZyNJXlBDRHd2e1d4ZUJTZDI1R3FnOzwrQk89 aiFDaAp6Yng8Q3o+M3xiKDBkQndwNmFxIUxmLVY3ezBHfCklZXhNfEc7dilnejJCY0F6WWpuKVhV QXVhMj8jQ0t9eG1DckwKeiRZWUlOclIoc0JfSWx0MypsQCZkbnlvOyktUSFzYyMxT1hMWm4xMkB1 P3JadEQ8bHhkMmlneW0qekZYc3t8JU1kCnoxPGdTTm9ORzVKaTExNEwxWGJDQ1JFXl9YSVI3YmQ4 dUFkVmpSN2o0MFVXUmM0aj5RRTBWbSlCKzwqcnQxZDQhNQp6ZkpjJHZWYHlpT0JkO2YqI3ZkY2lI LU13TGM3e0gqckgoRUttazttKkJ8cmN1MUxncDhmZ24lYFF+fWpNNE53YlEKejBsWWlXNmRJJmEp WXVxczA1fUw3MGAzRnUyT2E8cDB9bFpZMUNJY1kwKj9XWTE1V0BaWUJ2cmZmSShtZyphYWtrCnpW UEgzfjJOKGhOMHtlamR6K0ojUzBMRU9hOHU3WnojNihnNCVaJWFaMFdKWWxLbSN+bjJPS35pUHpk T042TDB9Owp6MEEqUWFyKDUkRihweT1OQ3hkUWk5Izg9ZEZ4PloybyVeRm9nWnI/dihmeFd9Knhs TUU1YmtzNWxpJSY2NStMQXEKelE8PU1yPF5YZnVeQ3s/Vk17NCFVb3YxVm5Ee1RIP2szSUV9Pjtw IVVRPHRWUkZyfFNoNE5QZlpOJnswR245eyhNCnoyQnRKSHJHWTY4T2xlP0IxNStCOSghaTdrclpo MDZmaGk0NFg8JGtOUXlRNGt6PzI1MkclJSVzREdmfCVVYGhqMQp6OGtvfCtwTyokMlJARkRocXVM VE9SMytnaEx5KzErSGREQjJyanY+QC1HflBVOHc4bSl8OX09NUY3QFJja1lBU3sKej1iZ09zRnV0 RjNRZUNLX1kxTHtAbTFubGcmdXFRO2trbkorIUVmUGc5bHU0aEZUb3FybShGPkVlbjRWdzdybTxa Cno9S2soOVMmSFhFdENtQEZiKy0xait5OHIoSURPRzlDdEZLM0h9NnRQbCR4OUdRPGhXaCo4Tkkr O198Smg9eHdfRQp6PHswPUYtI2opITdHdStITzByTnRXN2dBRVRWM3EjaUpIeFkkbV8hJmRrdU5q dH5BKXVpQUJ2ZkQ5MHZobVlkNEkKelFTfnlKU01eNnZBbTdAaTxFTXZOWklpSjAtQERANEEtMylH O3goQCpDUGZFIUR+Qmxabll+SXF3U0tBeT18cGRTCnpwMzBUeio0MnBId3o9aXNlZVpTTmdmRzE8 OCt3WV5ScXNXSUVAODdLSn5fQXRHOFpreyUwPyRIUz9xQGxlan4xJgp6b0c3YHt1Q3l0RVdwP0dY YUBwMEBoJkF0T0RafjckMVV2UUslJkpAMnNuZG5rWXVScEV4Vj9sNFcjTSlRSXx6Q2sKekA/QTlH Uiheb3JUSlYyKDs0YkI+TzZiPHpwcyhFS1hYRWNKT2RNcF9vVVlsdm8yQHdRRUI+a1NnVlNETEE/ ckVxCnpeYDQ7TWd6KDs/eFJndTFaLWY2KmslWD07eT4jcDg2VXdFUm52Q0FfNiZHNTVpKGk5JXBW b3g/bUgkSmwhWkJxVAp6VUVMX2x5UjZ9dHIqfnJZcns0ZDJFeFdRVntDbCM1PiFpLVpeKjY5PC0p bWlWbjd3PVk2SFV7JnFhZkdMYjlFYjYKemQ5S2Erc1NUUVNhckg7JEYxZSE2VW1iTWhkSX5TalF8 LT4mU3BfLU1eN0F3JiYmJGNyPDwzdUVITiVeS1FCVnxECnptZT89N3hRM1MlY3dDTylecUkzaTxQ OXZXblVoeWtJNzc0V2kkOWJYeHpXbnomR1h0XmIzWmhGUE87UEcoV21FSAp6UlgkeXg9RnN4M3Mj U0heRVI2QjF3JmtlV2hZSSFsYH50aH5iWCVSPUcwbVEqYyY4SXgtTCZlO2MmOTJqZEdJd2wKelVL dVNtNGJ4Jk9jbyE7Y2hGSGljY3RYOE55aFNsbjNEJW55TWJSQVlVX3NnTmRWNmRjaTUpRUpBWUVt SzM5QmJoCnojQXwjdFpuJXYmSXFoVVBMeFVlRHkzODs9XytXWDE5KTFPX2c7dHUlVjh9RyZxQmdW SzBWaHZkXmluRWRme3BEOQp6ailrdlJiXytHXjV7Wno/aFlkcEJZfGZ9SGVwQTlvM056dnM9NSh5 eTZXWFFrNGpvVnVyQWNFJXprXktPQig7PmgKejQ5aG98b3Z0UUxOcGpRaGpNc1ZOVlQkTlZxMVEj T2tSX3hwaStle3FYR0JQRzIxWEw0ZHVgNTs4RFlrNUM0dHhJCnpiaDI9RHoyMkBsOyljV1A0Q3pD OTBwbTs9N0J4Mj5fQStKQWRzbD9LVzkwSF9WJVNJK1NsN1QxVVVQe1djOUtlfQp6JDRVTipHTWdU Yk1fbHhmSTVfU3tjJW9GWiNaUkheT15eNlM4c2JneUNPelYkVTNsJkRmVXMlQTFRc3p1VmA4PTwK eiRVN1cxZDdNO1Q8JHwwQThYcStGOHFBeEZudDA8YiZyZTMmN0ZRVHw4WjwrciFBU0I9bSNgbD8o ZC1QM2RISVgyCnp5NkwmRWJhIX1IQiEwdiFKO3FJQyMyRUN0YmtxQSNpMExqZFhmUTAlcTw1STF2 MzYhX0VZPDU+bnhiQWlOWTFoYgp6fDhROTIyYW1XRVF9OWtHKlNwc2tpajNGflNOSiZ1OGxXSm0j JkZxMlg1RHteTWRJUDAlOUxjZ1gqQldATW5ZSE8KenE7dk85RG02KGp6KX1KdCZYMVBqWjkzUylO WFYtRFgte359TlkpU0d3ZFokQGN4aSh7VlZ3YD02dlpsWnV8SVN5CnozP3FZdSNEJlMzZ1ZFbG91 aWNDI01WdzM7P28xazI4UHFFTGNwV2NmWD1acldwN0JId05rYFo/WVpAVTkhYW0oVgp6aW5+Y2Ah ZlNISVV7aXc8cFhPNUJWUTQ5fHE7NUgzbl9PPXx1MHRXfF4hZ2EtRlZXPyU0M30zSlN5RCRkWkVU V0QKenAzNXVwSVFqTHVOO3prKSRaeSZ3ISFePiozNVJQLXJEOG9WSmV8NlFJOVpYPldEWVZIeGxN Km9vPT9oLUglcWFuCnooQFpnQGUkc0t5b35KMlVsRjRse3pDMXJtUGpXRDdVYig3ZTI8c1NwcDA7 N05qUlNOYWVHQEI9QnghKUlxZDB2QQp6RF9kLSVGVkdrMWZ6KkNDIVZ8RkdVMDcpQ0hYNmJANUQj SExNNUE7a1Z0KkN1T2woRTllSUNAOHV7T3hwQGNTaVAKemBBZSliRm9eSWs7QX10Z2NvNkZnak4k NT9OVC1XNzxMVXNZQTtpOER4RXJnaFlAdXRoMjJHNFVPKmJPezBsRkVvCno/ODBKaE9SK2wwM2Rw bi05R2tGTyUlPyRyN0F1WVQ7SjUxT1lBZ1dQTUlIRVUkTTFVUipHZUJrY3E3KVp4aDkyPQp6VitE eSVyWm5OZ2BXaGRoNUVoKWZueXk1ZVlkfWw9SU9xfnVLeV9HXldpfEZOUnVuT2lfdmF6flBEdTY7 cjJZblUKekd5PDhycG48S0Jad3RjNXB0Vk8oPk14PGh3fUpsX3RjY1QzSkhZcHMyJGtqRDNCNyVk PyFYbGo1fDFHanNrYUJ7CnpFNzB7Zj15cUphMUxAb2tQMk5ZfUxGaSRgeWF6aHpMbW9wJjtxJWJr Si05ank/d2U0KVBlQTUlJGgjTUVCJXFeQgp6JG1eMz53PEg4YVFUN3tBTHp9VXROZWBye3JBdHch Um5QPClIYGVmcEspTSo+VEN0WUtFTkd6fllwN2ZVZUp7dGcKelBhPS1BIVdtU0JsJHZtNTRSQUg7 TCQxQXtLfGZ4c2hTNVlITjlaYkNUWjh6MilNaVhxZFBxPUYodHN+aHdIaX0oCnpEM0JnVGV6PnV8 ZXppY04tUzhxOC1hYihfdnNodEs3TkFpUEYre3dITUZyUUZGJD9ge19HY35Xe1pWPzNqPy1WJAp6 X3B1SiMzM15GTUA5b2VgQy1rPXdURCVEaDRDPzFLcTBpNiRqM3ZFNE1iOUZJV0FxSC17fTd8Rl51 Nyk7Wi1rRHoKejVXRHZSQG9RJnF4MXskYz15fTlfOTVURUw4RDNWPmRrNW1MTDtNWWh5JUYqOElg PXUtJnFebHFLWj07Zz0/UXZ+CnpVWiZVU3E+fHB7IWlYfTNacDZQKHsoRE58bWh9RHxkSl4lVWYp cG4obEFKN20yV3RNdFJRI0pAVGtrTGJxTE5BWgp6cEczXjNYJmhSMzJAKmBeQTRBREVBZE4xPm1o dGd3YDhuSDlYTU1fJi1rKEM9LT1pYXR8SFo4UUo1IWJed2F8KykKemx2Q2IkQCVQTXslPk8ma3tg MDg2cnxDODFLUGk4RXN7QXRrT3xiMjlucyMzTk1ZRmJBKCkpSyU/a0RMbnIxQXNRCno7SDNPZ15Y c0FpamZtWmFffit+WUM7bVo4ZFZkMWFLWipLKDh1NEdDQTFkaXgpX2Y9UXcqbTJge085TXQkM0xu Ngp6emxQPmNwI0dtbD9TRyRNUk1OWF9rP1dEZDJFPjs3Z1ZDUn0pJVlqTkZLaDF6Xm5aZVcxcDlr TU4kPX5SelptNTIKemYmU3pJbmZPZllvYjlkUm49UkA2RENHWWhlOH53JkBGS21TcjF3c2dULXRB VSModk13fDh2RVk/UG5hO0l9UW42Cnprayg1LVB8fn1NellnQkRKMC0jVTx6SEJRbjxjJH03Y3Jr bDNOUGFLbHs1MFVxd0h6Pj5yMXUyXll1NWdfKlA0TAp6fDcrQ1RHcUNAWXNyczkmfDgpNX5Rbn0w YT5wSExlODtmdFRyMXZMTD94Kk94RGVYVWhQVyRVaj1gWEdTXlh2YXUKekB2dFNtZTs0X0dBTShF ZEV4dkgze0w9RSpxWHdrQEU+IT04U0AhYmBaMDg3NGRHI0ZxLUg3PD5rVkB8YiVpcmJTCnpZKVM4 cnJ8ZUpHfEgtV1F0dGsxMVJRIz9CPTZ9ckpYRyFuVWU7cjVwV3FlNEdAanVkWHJUeG5HQmtre2Vg KVFwdQp6PjNfYjkqaGtUUmV1KHx0YGl+KWdIPn5lTT9KdWB2dmkoMVV7R1VNIWRLbnJ4VG1OIUZT NlAxOXt4PjIyXlpvQiUKem8kKzVzQV5CNiM7MHV1Y3RwQW9SU0lSSC1jT219fm9qdXc5ekpzPj1F YkBPTHJON0RjQmlxMDlVKCRjZF9HM05JCnpleD9ObUViMDlTJH1jdFdCSytTQVhZNXpucE9qelB6 cyYhOWAqfCNvLVR0MHx7PVd6TmVmZjw0a2RuKDV5ZkchZwp6YF4oPX15MzNOQEE0bDFyTGk+RlZK MXBRI3xGSXRPY09hRlgzKSlZOVM7Q1V1cE1teXxMSF80YTBfKys4bGtVR2QKemskWWROez82Q2BD KDk8PS0/eCRQUTs3Y3hPOEAqQmAlbWp7OXJFc24ySClUUTMoSSFvcnVWMVZIYHh+VTd3bTdACnpj aTlWVXlPIVNmRDBgSHNWayE/UmdVVml8b1Z3TD4rIXNBbmRWZyt1ZjBSQVBaZSExfjd1Zl5zM0FS czU/fFlSeQp6bCRpMjQ8JCR0TnhlTV8+YjYpJWR2KXs9fUBCaHAkdyM+QyRYMVV1Xlh0fmt5SGMj KTVLQFlEaGZ8YXVxJUQqSDIKejgjKDlaQTIlNjNtS3gkNE1WP3xCI3V8QkY+azJqTmdCVE8zUkdf cXcycndIWHp3I344TEs7MnxheCUreShyPmRoCnpsTnNBaENSU28ydFc8V21seVpifVJHM0U2OUtx eXs4Rk1BfG90bFluRWJBMX0mfEROXitYcTRlQm5FdGUwNnVzawp6Rzc8P188bz1tU01lQSZjQm4o ckg+bXVTMzxIUU89U1l1TnFqQnMlQ3RPd1hRS0RVfn5nclNjTGJ2JlZ8M01FdjIKejRCdWp6NCYx fkZqcEdLTHN8TjFtPHIyOThFbUVOSGY7aTRAQlZ7U2c3JV9BfmlZaykzXytXJU42MiF1XiEqV1Fr CnppNzd+RjdSfSpBcDtwb3FWWj49MV9rP0MtXnZHejlzVzlKYS03ZGNlZ0RnbGJrYHZBZWdhI1BD ajN1OFRNa3ZwMgp6M0pUOXFSQVgzWlVOY08+JkRGNH5tfUN6UFFAbU1+My14aTwwY3wqI1phNTYk RX1MQTZ1Uig3WnBoTlhVckFqKykKekJJJWdOKWtAOEVVdit0TGskREUjXmt5MTF3MjB7eSRvdDRG U0hRSFhNfElzQyFVfSVlOzJQVnBZK099MnlAZ3coCnpkc2lPTCR1JENie15YZUlXeH0qTVhgb1VL UCUtZyl4dF4/Qm1aTGJEaTRXMlVHeGktZmgjOUN2Jmd1eGg9c01naAp6Q3w7QiZZfDYxR0I7dGF4 SSpXUzV1VkNKUzV7NFZCeGNrUjRhfFExKGkqSU9HNmEjRnw4cHNzJmBUP2hAbEY1P3kKempUQCU5 TG4hMyoheG9mZzJ5SW9BXnt6dCZIciEkYXh6e2o+N2FTTFFAeS1DdmRZYVY8b3F7U0BlWUA8Yzc+ fTVLCnpJVEI3NzhyS2NiN2wla3Q8c2xNMmdTQkRGSjdaaTNNb3x8JiUrJENFOEhxI09UKEA4ckdv VE1Kb3ExVi1gN0NjdQp6amktMCZ0KEZII0Y+VERJMlVKJmw+NXpDPmtUMyslbzFENEVSSEx9ITto aSk8N00tZExTMCEkR09zOEBueiktTE8KejB+MGYpb3wtVDBSSm5eKHR9OGtaQEktRVBJUWVzWWpB b2R8SHpSZVg0dnxvOEo7UnRrOFJmMks0ZDx7aE9oU3B+CnpjeTRvdWorPG5KJC1faUVPZT5qUzJM PW9HaVgxRT4/SGZqSjBhdzZQbXE2TjNAS1NzUjlgTV5KUHs/djlzaT5HVgp6WHp1T3gpa1NyIzM3 MUo7NyZLUmZpVnAtcUElOzdyJUdZUkxWRzlVJU5EYj51YyZzNn1fbXkjLVE+XjlHQ311WmMKejdL ZTAjXmtpfiM3bUx5TXhQbzx+Rj12NiN0WDt3IS01WVRRPklVXkFEdmZ4WlE4Qkk+bV5+dnM7Mmgt IXNmSkp3Cnp2eithZ1FKdXpBbn5zP0BPbkpsLU1Ce0o9ZncteUtPdjVuPjwzSk4wUlpYVXcmUjdI KUIkZyomM1ZNVkw3RnQ2VAp6VlhFZHxEQWI/PHhmeHBXRi0zNzwoTTNscU5sVXxgdGdNWnBEdCl1 TFp3cn0yMUFIaWVQbFBSWEF5PVQ7T0owK1kKem1MKWlPZUY1VkJoJD5LZjE4NiM8QmdCTlpPSHFl TU5nUytETytBM3lLU2lDbm9BZ1J1Q0AzPSore0RhV1NqVHRaCnpPci18WmF4eE0jezZyOEVZQjVG UCVeY0FqZmFmPyZURyhibUU3YSFALUR5e2lYSGgxS2Mlc3Q2c3RvPE9UR25XPwp6eik4Z3c5Ki1D U2NOfFRvbG1ZQCVWXnF3X1Qle3lYcV9EMj1DTmU2QXhiR0ZyJCZIV15RNGdyWDYpfndVP3Alc0UK eis+QUhfJDhBZyhDNzYzbmh5ciN9c00zcEl7WkdUQUQjT1l7aEk2KlRVOWt7ZmpfVGdRNk18fj9x QWpZXyUhZV5BCnpMPTBYRlpBcGhzUXJIdkZWfE4rSDJnZEJ2Y2R8JXdrbSt0K0g3XlA8UU54UVlf Xzk7clRVQkchPWJBJGl2clkrXwp6JDJIV1ZSS1V0bllCMTVwRmVVZWohUnF+UmRNPC1KSXl1UUNI S2drPj9VTDFERHk9Kz4lQ1RNWjVOd14jdjwxRFkKeiRNbnk1WFRaPldZNz97UDxiWTQzSUVwWiZv MnJsVEFrNEhSezM9KTJFNk5EOTJyQF8rOWE1PVlEeEd3cHFLaGJTCnpaKlFVTnowO1lZam5DMTRA KF8wbE5EOSsxMS1gU3NqTT4/fUk4KD9NfEI1PUtCOC13Vlh3WG1fO0p5VmEpblh1Mwp6b2prPXp1 dFA2KDVEUDQmZ2tweCpxTURnd1NjekxibXxTJm5RIWhBNHJXZnw0I28hM3JUNVNVJjRsZj5ZTG1L QVEKenllQEozV2kmPyh2dTJlaSZ8Zz52UCNSS1dCVFhrd2hAPSFuJFU9ZUxpZisrT1UxJDM4KFBY JlVMYyt4R0tuPDkhCnpoUn10OCplWDd4U0w+WEZJNEg1fG8ybHNEQnZqX0tCcDRZNlNgSGV0SnBs X3Q5a0peZyVjXjNlK2M2eiVraFNHRAp6KEwrMVhFcn1zQzR+eGQqIW8oRHV0NCF5NlduNGpKRCh3 YFE+WTJIWj4yfT5EUjF1eithRnRhWSFtN1M/MXx+UmwKeiVvM1VINHhke2FwZW11OElqbGpKcV9h VndmZkRuKExlUSs9cGNRNk5wdDlnTWhZQTlrNHJkWHJAO1FsTj40aFlJCnozcnY7djtqKVZ3NzFR STc9KiRndzxmT3JjPlAqYm8zTyhmWnh4XkAxdU5rSTxabzBebUNrNk18cytYRXhUX2oyTQp6Unpg RzxOXlh5PXUmYG9VcW0hP1c+Ul8ke2VZWTFNNH51YkZJKGhJJkFuNGI1PChTem52czJaQkQzJDZf JDZiTTgKenp2P0xBUjY/U0hCSUlKST5vU1hPRi1VTzNnJXg+bmAxci1neXFxT09QQFhHRThrI2ZD Q30hey1XPHE+eCRRNm5FCnpPIVVAaFhNUSFWSHRRaD00ZndHPj1NY2R5a2hjTSUqbUJVcU98STRA VmthcTRnTzlCRjA2WlQ/OCFhdzVFZ0xJRgp6JjV9YG9aWE0zWDVDZC1FN0NvYWItVCl0IzVIOSVn NUYzeVMxVFlwYjZuJG17TG0zYGE7bE5rbWskfH1+NWxGYEgKenBsa3FYKGc8JFdUNipBMTF+QG1E Yys2OUpVPFE5QWExcGNjNXAkNVkxYSFyRWVVY0ptJXYkRldSSlJuJHZZPUFwCnopSCpLcypMNmJg JkJWJmspUCN4M3ojMTE9LSZHZXcoTF4yUm9gNFgwMSlNTSU3RUZLPVFOdChjTE9qI1pFOSpXLQp6 d3QrZEpTUjlVUWA8dHJMVCElSWoyPFVkRnkjRVkyQG5OKUtwbkxuTThSNWxEYilsdWtMcS1Kczwp fDQ1a0Q5X04Kell6OEF8ME54VFUwYmNad3syZHJfa3JGfFZJY2hEe1ZAWkRlcWJvPVcxUE5BZCtm bTlReD1sZSg7cnRuNk5XVCpPCnojdF9WSilKMGw9YmVGJFF1YURiTW10flFfZlptVzhSPmwjV29R Ymt8OCYlRng3RVRBbT9VWkFvQGcpNHR4RVZuVQp6d3lGRiFsKyl4JipyflZ6JVBoP1UzOGdAMTBU ciFZJnFYX2RAdXxXUEpjKEF0ZWF4amBJU2BIfkI7PHdiTVZncUoKend9bilqOFdRVGJYK1dLSTJe dFRmKTQtNlBMSkhiMzhXIXFRcDlQaGRBdUZNY2p0cFI9Rj5zNiorTCVhc0M5a15fCnpvKVVKJSFA fT82JGw3K0dVTng+bll9WEZoTSsxZGFZVD5MNSpedyR1YHZAYEBfQHYrRjs+e2chUCQ1TSNZME97 Xwp6RyYhdjBQVHt+SWloSVh3KWFtUnEhXnlCcHF3cnFoRHFXZ3U2RWhrcHV7MyRnb2JAQ1Boa3tZ WiZsIWZxc091QUkKeiU9OUhoanZ0PXYoVil5TXNOMlN6bT4wbjRTMllldCV5UWpKMXQ/QztqMDlw N00pUmBFXit1YChOKXdYM003MzNrCnoxWT9mODBsaGl0aGR4NV5ReztnYjRoZGR3d3hYMjtSaihe RHRjVihvNUBGUnk3KEAqTHE+cENnaFJmbmBKWFNXWQp6RVRhfVkrSk1RSD5ZO1ktM0tqWUF1JUwm THNSV3hAeXtrZkZYaG5FVFkkfG9lcHR2KEpmRyRRNUQtejU7UWBTcz8KelZrMzV5Q3VpeDRiVDJw VEdebVYoJGFXRXBNdyQxcHV5Z21PdkIoSVQ1X2xWWSM8MURFejUhS0c8YlYtLWghNG9vCnpDMDZ7 ezdpUWRnPlpuKFojVS1uYSNkZz5uSmtqRFJvdnpGeCV+aSFPO152JUAmUT1qRExkXygmc1p3QzIk WX10Iwp6cGVOeV9Lb2w1XipPa3hValMoI1dHREk8eFQoUCg8KiMhT0lwXiFSbzhFMj4+d0sjI3tt QDVvezNYKzZncCZAPlYKekw/SVZRT0N2MFBWXkojJUpPJiQ5UlpNVnVENm1zZ1FkNVJRZXZZQSVV WFJyamFCbD5BXntQSEhiUEkreyspakNMCnpPP1UqUHNFVEd3QFkkUmphY3dYNmkjKCZDZ3Vsb2Ru bUhFUVJeOHFQM3xseik9ZnRCVmxJP05Zejc+KVdITlhAeAp6QWNsMz1EZShAditMK1QmNFd7ZWo+ R2xVSEF4eSh7ZH5kX2kkajIqe2w1aVhrSUBKYWs2MEM5OUshOyttUFE2TD4KekNjUyRDcnBsVzJv NnUhYWI3QGt6MUZBdDBsLVpqY3BqP1lsTF9XQ2hXRXJ+WGtZYnBuOShlYWUydCh2PnE3TF5iCnph NlVoZElNSGRGMSFtOFg1P0F5SDMrZE9JQS15cTRrcjtIMD1XcEo8Vk4pPjtaaDFJfD5kWXBTbTxX Y05PPXp6KQp6aj1OOzJgbFdhY3ZWfjxONiV2RH1wZ1ZHYEZSR0Q4MCRQWm9XLTAzI3ZXJTcqclFG YmN5VTYpPEk0R2ZgV2g3eCkKem5zUDgjSChDXm4hdF5wV2pBfjB6R1Q7aiZta2pibVhUcmJCd0Uy bUdhYnNWVHZ8eCgqQFdfTE5BQ0VISm9MODdwCnopKE1lOTxRVC1RNWdkQG0pNUt6Qz42Tnk8b059 Nk5hb0AwXzVmOFooYiZhPzs+QSVFNnpQJG97Y0VuO307MVY3Jgp6NT5YLXB0LWtXPkkpKmgpbjxs IytWUkd7VWNSKyNiIylEMmdUZztWZllAa35sSiNxd0lkNnZOZ3chP2ZsbXl+MzkKenVYeFZtNGti ZzNmfVc+c05vaklvY3AwOFNxU1lgZVMhJX1eKHVAcHxZR1lYQ0NUfTNZaHVTY2JvVm5sVD5qe2M0 CnphOz9jezcpfFBPM15gJCgrXk0zczcqdz5ebDB0ZnFRTVdRMnZ2O34oUDx2cHlIfHx3QTZYLU9T Oz1WSypDcHxKfgp6TlhQVDQ7U1MrdU0+QH1kY15xfihQREBKbyghZnFJbkB1Vm5qSC1HdilEbFRW RmYkZHlQJFV3XlAmSjlCdUJkOSUKekJuPnckTzBoRms9PCoyKUJAeyFqa2VrUShwcHskJDxQfFV+ UWBjaERIVjlTMGpkezlZSXU/cDZHfEZRN2I4JFI+CnokSXhuKUlRNHcjVTxCJVdpaVItdUhOYjFy UkREb2ErKzxTMXUlTlRoWT0+dlk0Ri1jUHpUTF80TEx4Uk9oR3Y3OAp6UURfKklhZmZXRyFyLUd7 Kkpye0FQMEw4SSFNfkdNTSY/NlUlQGZES09TZDxLXnF8P352TkBaRShFR0U5WD1ufXgKeikxLVNq eW51cFhCPWJAZTkqby1AIXI3cFA3XmdCXyUoU3MrIWYpYDtEaDtLQjkmUCN2SWRlPjhIZjlXQzRr OFloCno4QEs3QiF2c150dnV6NGtjdVUrYzlsS1NnbjlLQSkoek5fZT1XfSN0MUBVO2BfVCRyRm5Q Wjk+aCZRbTFEKGlicgp6SlZLR1VSfncpKWxpJUd5OXRlYz9rJnZxIzRKZHtfJlB1VkNlfUVTfURi eG5IWmlXJihWY2dNNHhLfCR9bis7cnMKelFqPWBVMkBlVkMqQFpjclR8Ujs0QmJiVzJLKGI/JDVm e1Q0K2A2RUFiUTBiWW81SkA4cllsWl5NdSo0PHE1dEMlCnpxayUmb0F5d0hHcGF6byotNUV9bi1y bChxNkBXaTgqO0kqelZ7KktLQSFkKyplcU9qZWQoak1RMnNnOTFVdVFBKwp6JHNTITRhTlJwPkNX NEwlRlNYKUU2Tn13Y25yNVVIRkQrb35TLUB9N1ktVXVPTEFifFo1IUtNUFpWdzh0Sjdsc0UKemc+ SGhlM1VwQSk+ZDwoXnNfY3EhYTw9Mnl2eXRkSU4tJDEhN0hoMDYmdD0/PWFxbkk7UGI0Q204MD0m UWg5ZVBGCnpGZyZIdG8yMTYzb0s3JEpJfT9zTElSd080VTUxe1VZO0lgNUY9Qj5ZO2JDZ0luVCl7 fDZmbjVremA5cSpHMGIhNQp6Xk09Y2tMWFheIV9lNkhoRyRWfkQ1Pyo8THRaXkVwTTNZOE9kcmJw bER1Iyt8aVd8UGJqQytJMkg2bXxQej58KTsKek05ezskUE8/Vmdoc2psM2h0ZFEpcD5SJmhra0Yh Vm1WNyZqTlBfbW89LSNfdkVUKTQweDhXYEgjelhTZkdKeWYpCnoydTVgPlhAbHhldE5KbF5nejg3 ZWhlPEtmUDhPXiRySTQkbWpATCFXMmk8dX5hRUY7SlckRzE2Zjk9Sj5iS3dHbQp6XmtKWGImK3RD WjhaLTJ6cmk1QHRPLX4lLVU8ZVYzdys9Kz42aWpYQCZFYkw+V159TXIhTmRrJGFMflE2IUJFbjAK eikjMFRQTXt9dHdmfXR0fkBFbVA9a09VM0opTEZqJGlaVTJaOFhgbkY0S14pRzd6PmFYO2FWdDNa VUp9VEp6MXlFCnpMRW5YODlPVzI/SWVMZXNqT0RmPDw3T2pxcnYrQWV4ZyF1YVQrZUVQX30rKmE5 N1RyI3I7RWx6cjZvbCRTS1RhMgp6K0xGaTc2JnB9OSkrYl5DSnJxfiRGPzZ5Ymh0TnxoT2dMa01S ayRBd25fPHtXQVRpRUQ3P2NFUGlTciQrO3hEQnIKelF7cEUlZ0k1Xjk5cXVWKklKe31wRyk+TTVe dVRfMj0tV2NAUStUaHo0NH04O0htfX1KSnpBOGxQLWktMHg5OHY7CnozfVpXSzdFUylRc1V+PGpi azw4YVokJnFTfEdoQSVuNWVVYXp+QyVxUUQ2fjxLVEh1K24kNlA/WiptQztXYjhvOwp6ISgxa0wq P35POFFrTSk1aHkwLShaPmotQjN9UUs+ZnRhJkFYKTwlenJfKmpCLSQheFREOGdjQGhySmQ9KkRH SzAKenAlcilecnllQ0dQdEAjV1ZofXhkaz5SdUAmPF4jO3g5Z3hXUHpod3NYcT89MXo+RUdjO1Bl bVhrT1JWQGtoQ04rCnpOSishWkVreHdEc20oaVYkKUZSWmFuK2NTYyFrPlBuKVlrS09iVzBfMGBL Mlk5c1heYk0rPSR2Pm9BfU0lQCY5agp6YWgteWRrNzdKR2pZUyF7VVJHQyl3dmp+TlcpYDZyMl81 cUBGfkljQHAkfnhIUko1a3lBdzhAfCtAJCMoY2JJdDMKeiRUJEA3Wk4wekxHQFFhfG09UjFfaiNI Ri1iTSM7K3J5dz1MNiVWMVJiZD9QMHh5TGNteUEzJXZsZiE0eTs1KFJBCnpeTFglYmpIPV8rczFS e1gwOzBkP2ItS3xnTV99UTIkUU5fVEFxX19TPS1POyhPdCRONiEoXkkxPlFySClUNFY8JQp6VEor RmZ4fXlUUWMofnkrRXpHP0pINzF5RzUhOHk7R1pxYj1HUm9vK2paYElXbkRDQGYyWTJUJUJRQUVN aDZ8ISgKeihAeVpFYWlKUWNPMHEhcE1NOE1yM2QxKSV4ZF4qcjJYZ1BTP1hgSENSdiZRJkN+JG5h anhxNmd6e0tkTCsofXg1CnpEJmhna0tAVTk7Q3BCIUQxQEVAI24hNVZ5UHxUQHFOJnswR245eyhN MkJ0SkhyR1k2OE9sZT9CMU9IPCthQWp6RAp6e2U5PGI7c2RzfFRUPEs1KDlqcFpffUJeZV5iJjhP JDM1TXQ9U18zdSZUIV5DYSYzQl4hPUNSRSk2ZUJ9Nl5Ob2oKendgK1FlKEdHcmFJYGdPSDdSKGUq MXotOHRUSz8tNGJmTiN1QElrNW5TTWkoM1dLRzNfaW1Ia1Z7NVIhYmEzTmphCnp7ejNXdkRYeFg7 N3RGNi1TV3tDJlMxLUdFZEdwNnNpUkUpRUQkQT5hOCNqdV4lREglV19VRSk9ejdDVFRuNmU8Owp6 Piowdk0zX1hyaCsrJml3WkVuNT0/fX4kI0plb3VuSnRJUilLODI7elNxKi1jcHx8QVYweWE3OCFm RTJRaUJxSTYKelpFVjV8STVJUHQ8aXl8TDRJSGolUnhPOEh0eVlfaitaYF5uaiRGcX49ayRFbmhZ QnlmPFVAcjtNWiFPS3coIWo8CnpFLURIdkVTKGRxc0gmPkVib1FkZkhJPGpvb25LV2M2SCNuNzh5 NGRCT3E9R1peY0ghfmUxIUwoQ01MJElmYTZeIwp6NnhONkx1QHA7ekdJMCFWKSNFPk9FMiVBQTZq QE08bnhrMnsmN0tRfVp8UER+N04lTnFhI1ImcEtQfl4mdlJhVmkKel5qM3RsPV97Z0UtJVlOe2Yh cHVwI2RReEpuWCZUNGNtNEJRZCplMntgeSRXRyFkV0c9MUVwbkUzdCk3TVlVPi04CnpHK3I1UVRE cSNgVzI+KmhLYm1pQT9ed0dvKjE1aX5mNzlrSVRXe1hCSitXaSh3eE9ON2hWS35wIXJuWGdlUjJR VAp6Un1Pc2o7TVdkKXtsMTYzYFM3PE1gU3pvS18xTXVUazNJR0RHc21CTz94bU1zYE42OXtlQzxj Q3p4bWNyZSlfWXcKenxOZm55fEtndjF7bTtNb20qNCpEQEJaIWd2UnR5OWxVdXJFPWFzN2Y8emxM OFFMVkNFM2ZtJEpVWkNjOUQ+UD9sCnpnKkFIOWJZSkJGY2glaX4/fUpCZCNxKEZiSkVPSnRNWjRR eV8yI1U5bDB7M0U+XzFucV8jYWlXR1gqPGF1R2goNwp6IUsqZ35tSThkVEBVQWBKWUYzdUdSPy0t emE+c1UrbmskeUwlKXI+TGgtPHxYVkdvUiU9VjQhdFlla3N0M0xIZUYKeld+SiQpTzkrZS03aCpt P0BgY1ZQNkM2ZE5lKztBYGxoVnIpe0hidzlWKzVgSkY7Sm1BJVh3UDlrZlEhdiF+VEJeCnpBWj4r OVg1c3ohS2g2cX5gTzBTTiNFKXByQEBEWk05PUJmcGsqeihed2lgUzhNUWd7cCZhVEQyZkJlcE9l V0o1ewp6dkcxQSUlWSh+JT5Oe2VjO2NkTWd0Rn5SJCh6Zmwhd25nb31rNmEteC0mKHRNVzYjRXB7 OzFmeGFZSSpNP2JnTTwKelhuU3tTTT1mWD5Ka0tYbUVkNGh3X1F8YTN5TCZyQykhZUdOIVNXP3JK MnpNUWtWYkYmK1MtKjNqaFBnMXclOFp6CnpAOShMZEh4QzEoeG0pSlg/ZTFNU3VMNDdoZEJNdGdt NmhlLUREUyh1dDNTSDZ5c05LeEdLR2VZelA4QFpwOG40Ngp6RStKRWx3c3Zwb1UraEV2RFp5fjFa T0sqeVdSak5Xc2Y3RmIrdmhkbXF6Vk5BIUBTQzF1JTxqJVN6ZnRGJUFQTE4KeiMtOFFOJiYySE5v MH1AKStfdnRHXlJgQk49MmdyTSZmQj4wNDBtN3VsRmV1SHhnZDk2JWdzRjxeSHo1QmIjTGx6Cno+ c1llNnFwUURvR1A5bHlvQkZjeitTSnp9Z0hwMD9Ya1ItSVZ5MUdPPGlFME1kR2leNXNqempPOCsl Z1JsNT4pKQp6ejNtSzcmISpsRHNxNWArXkV4KGtZKChhTE5VYEQhWi0zfDd2c0d9OHtQTX48bklu cmM+N0sobXNUWXwpbHZtcigKei1MXl5RKVlQIXBDazNvKz97NGRDdVQ3Q18rZ21GWkVUe15XUzF4 UjhGUiR0VndQQGttMT8zJlZudT5+IWl0NHNTCnozeGJwQkc8RWckTjR3Zk9XSTlOQlpZTDYxK2E2 dUNVX3R4QkA8c0VqN001NDdVRFFfSXg9MUZ7ejk9fDxRQl82Tgp6K0tUOTh7SHVGQVZjcFJVKzQ5 SkErTDJDOHV6SnlnKXthSHhINUNnV00+TmA2VWVuZ0d3bWpIWUdydUFqNE9VbVIKelJ7NGF+Y1d0 UC1YfGI8ekYycVdtSGdBYWJ1a0cmTHhZKU8+dnVvNFZPbFY4eiMqUzZ9UUtfUGU+aUpkR0hObEY3 CnozI3R+P0VMPlFiO2FKXyMrWHM3PE5tVF5yUndCNSl0K28qZk1QV2RsOD44enc9NTZVez9lUGh6 XyolI2c0TXdHZgp6QmdJc1NZVV9KRHFXI155RSMySzQ3Vzw/dUxNQTJLTThARTJtdnkoTHFORiVH K0I1Qn5GMWxfVyRhI081Pi07T0wKelYlPU4xeyk1PClKZDwlbHo1UUZkZHZDbkRfditVNTljfSU4 QW9seVlDZ1pQIUU5JmQteX05V1JpRzI9MytTMDteCnooY09EPENhK1o7SClXXnxvZyZwVFlvbCN4 NGZhSmhjZU1MNWZvLXY5KlNaZFBKRzZve1RqdkVWWkdQKmJnPjRJaQp6IVNZfm1lcnRKRVRrSEp0 WG0kMDFAJiY9Rl9KdGtNPlA2TVQxKFdnbnk0VXReaVN+QWMpfWhpK0ghJThDLUgxVFMKek1vSzY3 dyF9SjZvdEZoR0BzSUMoc1hDRn5EPW9LZD59V2heaXpHY2taSWQqTlJoeFF4SGd0Q01vLUpvOD9n YmduCnoyND45VjRATnFCSnIkP0V5WFImIW17fFlTVGU+Y3MpJSFTN0BzQFNBYiMoUTBVckBOTFl4 ODdEdi1+IzFOKEdAYQp1a21RLVo8JSRvdWk9TWhQckdZNjhPbGU/QjE1K0I5KCFpZ3EyRn43e2M2 NEVvd2d2WnxeIzFfWFhXc3xfCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS90 ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgYi90ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKaW5kZXgg YWE4NjAwNjA5Yy4uYzM0YzE1MmNjOSAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2ltYWdlLXRlc3Rz LmVsCisrKyBiL3Rlc3QvbGlzcC9pbWFnZS10ZXN0cy5lbApAQCAtNDksMTIgKzQ5LDE0IEBAIGlt YWdlLS1zZXQtcHJvcGVydHkKICAgICAoc2hvdWxkIChlcXVhbCBpbWFnZSAnKGltYWdlKSkpKSkK IAogKGVydC1kZWZ0ZXN0IGltYWdlLWZpbmQtaW1hZ2UgKCkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5 cGUgeHBtIDpmaWxlICJ1bmRvLnhwbSIpKSkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpm aWxlICJuZXdzdGlja2VyL3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpCisgIChzaG91 bGQgKGxpc3RwIChmaW5kLWltYWdlICcoKDp0eXBlIHhwbSA6ZmlsZSAidW5kby54cG0iKSkpKSkK KyAgKHNob3VsZCAobGlzdHAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpmaWxlICJuZXdzdGlj a2VyL3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpKQorICAoc2hvdWxkLW5vdCAoZmlu ZC1pbWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgImRvZXMtbm90LWV4aXN0LWZvby1iYXIucG5nIikp KSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICgpCiAgIChzaG91 bGQgKGVxIChpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICJmb28uanBnIikgJ2pwZWcpKQotICAo c2hvdWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9vLnBuZyIpICdwbmcpKSkK KyAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby5wbmciKSAncG5n KSkKKyAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby53ZWJwIikg J3dlYnApKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXR5cGUvZnJvbS1maWxlbmFtZSAoKQogICA7 OyBPbiBlbWJhLCBgaW1hZ2UtdHlwZXMnIGFuZCBgaW1hZ2UtbG9hZC1wYXRoJyBkbyBub3QgZXhp c3QuCmRpZmYgLS1naXQgYS90ZXN0L3NyYy9pbWFnZS10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2ltYWdl LXRlc3RzLmVsCmluZGV4IGQ1ZTNhN2NjNWMuLmI5MjE3MzlhMDUgMTAwNjQ0Ci0tLSBhL3Rlc3Qv c3JjL2ltYWdlLXRlc3RzLmVsCisrKyBiL3Rlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsCkBAIC00NCw2 ICs0NCw4IEBAIGltYWdlLXRlc3RzLS1maWxlcwogICAgICh0aWZmIC4gLChleHBhbmQtZmlsZS1u YW1lCiAgICAgICAgICAgICAgICJuZXh0c3RlcC9HTlVzdGVwL0VtYWNzLmJhc2UvUmVzb3VyY2Vz L2VtYWNzLnRpZmYiCiAgICAgICAgICAgICAgIHNvdXJjZS1kaXJlY3RvcnkpKQorICAgICh3ZWJw IC4gLChleHBhbmQtZmlsZS1uYW1lICJ0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtZGlyZWN0b3J5KSkKICAgICAoeGJtIC4g LChmaW5kLWltYWdlICcoKDpmaWxlICJnbnVzL2dudXMueGJtIiA6dHlwZSB4Ym0pKSkpCiAgICAg KHhwbSAuICwoZmluZC1pbWFnZSAnKCg6ZmlsZSAic3BsYXNoLnhwbSIgOnR5cGUgeHBtKSkpKQog ICAgIDs7IFRPRE86IGdpZgpAQCAtODYsNiArODgsMTMgQEAgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6 ZS90aWZmCiAgICAgIChzaG91bGQgKGZsb2F0cCBhKSkKICAgICAgKHNob3VsZCAoZmxvYXRwIGIp KSkpKQogCisoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS93ZWJwICgpCisgIChp bWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHBjYXNlIChpbWFnZS1zaXplIChjcmVhdGUtaW1h Z2UgKGNkciAoYXNzcSAnd2VicCBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpCisgICAgKGAoLGEgLiAs YikKKyAgICAgKHNob3VsZCAoZmxvYXRwIGEpKQorICAgICAoc2hvdWxkIChmbG9hdHAgYikpKSkp CisKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFnZS1zaXplL3hibSAoKQogICAoaW1hZ2Ut c2tpcC11bmxlc3MgJ3hibSkKICAgKHBjYXNlIChpbWFnZS1zaXplIChjZHIgKGFzc3EgJ3hibSBp bWFnZS10ZXN0cy0tZmlsZXMpKSkKQEAgLTEzMCw3ICsxMzksMTIgQEAgaW1hZ2UtdGVzdHMtaW1h Z2UtbWFzay1wL3N2ZwogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC90aWZm ICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAndGlmZikKICAgKHNob3VsZC1ub3QgKGltYWdlLW1h c2stcCAoY3JlYXRlLWltYWdlCi0JCQkgICAgIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMt LWZpbGVzKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ3Rp ZmYgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1p bWFnZS1tYXNrLXAvd2VicCAoKQorICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3dlYnApCisgIChzaG91 bGQtbm90IChpbWFnZS1tYXNrLXAgKGNyZWF0ZS1pbWFnZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2RyIChhc3NxICd3ZWJwIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQogCiAoZXJ0 LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3hibSAoKQogICAoaW1hZ2Utc2tpcC11 bmxlc3MgJ3hibSkKQEAgLTE3Myw3ICsxODcsMTIgQEAgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRh dGEvc3ZnCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEvdGlmZiAoKQog ICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3RpZmYpCiAgIChzaG91bGQtbm90IChpbWFnZS1tZXRhZGF0 YQotCSAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMtLWZp bGVzKSkpKSkpCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYg aW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFn ZS1tZXRhZGF0YS93ZWJwICgpCisgIChpbWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHNob3Vs ZC1ub3QgKGltYWdlLW1ldGFkYXRhCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIg KGFzc3EgJ3dlYnAgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFn ZS10ZXN0cy1pbWFnZS1tZXRhZGF0YS94Ym0gKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd4Ym0p Ci0tIAoyLjMwLjIKCg== --00000000000042f06a05cee12d35--