From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Date: Fri, 13 May 2016 14:27:45 +0000 Subject: Re: [PATCH] drm: expand cea861 mode timing table Message-Id: <87futmf2xq.fsf@intel.com> List-Id: References: <1463081853-14942-1-git-send-email-eric.yang2@amd.com> In-Reply-To: <1463081853-14942-1-git-send-email-eric.yang2@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Cc: tomi.valkeinen@ti.com, plagnioj@jcrosoft.com, Eric Yang On Thu, 12 May 2016, Eric Yang wrote: > This patch expand the cea861 mode timing table to include vic 65 > to 107. This allows more modes to be reported on newer displays, > including 4k@60Hz on HDMI, which was previously only reported if > the display edid has a detailed timing descriptor block specifying > the exact timing Just a quick drive-by note, please don't change the indentation in the middle of the table. BR, Jani. > > Signed-off-by: Eric Yang > --- > drivers/gpu/drm/drm_edid.c | 215 +++++++++++++++++++++++++++++++++++++++++++++ > drivers/video/hdmi.c | 4 + > include/linux/hdmi.h | 2 + > 3 files changed, 221 insertions(+) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 04cb487..34ed001 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -988,6 +988,221 @@ static const struct drm_display_mode edid_cea_modes[] = { > 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, > DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 65 - 1280x720@24Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59341, 1280, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 66 - 1280x720@25Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, > + 3740, 3960, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 67 - 1280x720@30Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74176, 1280, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 68 - 1280x720@50Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, > + 1760, 1980, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 69 - 1280x720@60Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74176, 1280, 1390, > + 1430, 1650, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 70 - 1280x720@100Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, > + 1760, 1980, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 71 - 1280x720@120Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148352, 1280, 1390, > + 1430, 1650, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 72 - 1920x1080@24Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74176, 1920, 2558, > + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 73 - 1920x1080@25Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 74 - 1920x1080@30Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74176, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 75 - 1920x1080@50Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 76 - 1920x1080@60Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148352, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 77 - 1920x1080@100Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 78 - 1920x1080@120Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 296704, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 79 - 1680x720@24Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59341, 1680, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 80 - 1680x720@25Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, > + 2948, 3168, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 81 - 1680x720@30Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59341, 1680, 2380, > + 2420, 2640, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 82 - 1680x720@50Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, > + 1980, 2200, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 83 - 1680x720@60Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 98902, 1680, 1940, > + 1980, 2200, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 84 - 1680x720@100Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, > + 1780, 2000, 0, 720, 725, 730, 825, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 85 - 1680x720@120Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 197802, 1680, 1740, > + 1780, 2000, 0, 720, 725, 730, 825, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 86 - 2560x1080@24Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 98902, 2560, 3558, > + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 87 - 2560x1080@25Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, > + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 88 - 2560x1080@30Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118682, 2560, 3328, > + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 89 - 2560x1080@50Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, > + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 90 - 2560x1080@60Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 197803, 2560, 2808, > + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 91 - 2560x1080@100Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, > + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 92 - 2560x1080@120Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 494506, 2560, 3108, > + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 93 - 3840x2160@24Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 296704, 3840, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 94 - 3840x2160@25Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 95 - 3840x2160@30Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 296704, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 96 - 3840x2160@50Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 97 - 3840x2160@60Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 593407, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 98 - 4096x2160@24Hz */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 296704, 4096, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, > + /* 99 - 4096x2160@25Hz */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, > + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, > + /* 100 - 4096x2160@30Hz */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 296704, 4096, 4184, > + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, > + /* 101 - 4096x2160@50Hz */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, > + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, > + /* 102 - 4096x2160@60Hz */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 593408, 4096, 4184, > + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, > + /* 103 - 3840x2160@24Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 296704, 3840, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 104 - 3840x2160@25Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 105 - 3840x2160@30Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 296704, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 106 - 3840x2160@50Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 107 - 3840x2160@60Hz */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 593407, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > }; > > /* > diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c > index 1626892..1cf907e 100644 > --- a/drivers/video/hdmi.c > +++ b/drivers/video/hdmi.c > @@ -533,6 +533,10 @@ hdmi_picture_aspect_get_name(enum hdmi_picture_aspect picture_aspect) > return "4:3"; > case HDMI_PICTURE_ASPECT_16_9: > return "16:9"; > + case HDMI_PICTURE_ASPECT_64_27: > + return "64:27"; > + case HDMI_PICTURE_ASPECT_256_135: > + return "256:135"; > case HDMI_PICTURE_ASPECT_RESERVED: > return "Reserved"; > } > diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h > index e974420..edbb4fc 100644 > --- a/include/linux/hdmi.h > +++ b/include/linux/hdmi.h > @@ -78,6 +78,8 @@ enum hdmi_picture_aspect { > HDMI_PICTURE_ASPECT_NONE, > HDMI_PICTURE_ASPECT_4_3, > HDMI_PICTURE_ASPECT_16_9, > + HDMI_PICTURE_ASPECT_64_27, > + HDMI_PICTURE_ASPECT_256_135, > HDMI_PICTURE_ASPECT_RESERVED, > }; -- Jani Nikula, Intel Open Source Technology Center From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm: expand cea861 mode timing table Date: Fri, 13 May 2016 17:27:45 +0300 Message-ID: <87futmf2xq.fsf@intel.com> References: <1463081853-14942-1-git-send-email-eric.yang2@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 0F77B6E3C9 for ; Fri, 13 May 2016 14:27:48 +0000 (UTC) In-Reply-To: <1463081853-14942-1-git-send-email-eric.yang2@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Cc: tomi.valkeinen@ti.com, plagnioj@jcrosoft.com, Eric Yang List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAxMiBNYXkgMjAxNiwgRXJpYyBZYW5nIDxlcmljLnlhbmcyQGFtZC5jb20+IHdyb3Rl Ogo+IFRoaXMgcGF0Y2ggZXhwYW5kIHRoZSBjZWE4NjEgbW9kZSB0aW1pbmcgdGFibGUgdG8gaW5j bHVkZSB2aWMgNjUKPiB0byAxMDcuIFRoaXMgYWxsb3dzIG1vcmUgbW9kZXMgdG8gYmUgcmVwb3J0 ZWQgb24gbmV3ZXIgZGlzcGxheXMsCj4gaW5jbHVkaW5nIDRrQDYwSHogb24gSERNSSwgd2hpY2gg d2FzIHByZXZpb3VzbHkgb25seSByZXBvcnRlZCBpZgo+IHRoZSBkaXNwbGF5IGVkaWQgaGFzIGEg ZGV0YWlsZWQgdGltaW5nIGRlc2NyaXB0b3IgYmxvY2sgc3BlY2lmeWluZwo+IHRoZSBleGFjdCB0 aW1pbmcKCkp1c3QgYSBxdWljayBkcml2ZS1ieSBub3RlLCBwbGVhc2UgZG9uJ3QgY2hhbmdlIHRo ZSBpbmRlbnRhdGlvbiBpbiB0aGUKbWlkZGxlIG9mIHRoZSB0YWJsZS4KCkJSLApKYW5pLgoKPgo+ IFNpZ25lZC1vZmYtYnk6IEVyaWMgWWFuZyA8ZXJpYy55YW5nMkBhbWQuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyB8IDIxNSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy92aWRlby9oZG1pLmMgICAgICAgfCAgIDQg Kwo+ICBpbmNsdWRlL2xpbnV4L2hkbWkuaCAgICAgICB8ICAgMiArCj4gIDMgZmlsZXMgY2hhbmdl ZCwgMjIxIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2VkaWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gaW5kZXggMDRjYjQ4Ny4uMzRl ZDAwMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gQEAgLTk4OCw2ICs5ODgsMjIxIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBlZGlkX2NlYV9tb2Rlc1tdID0gewo+ICAJCSAg IDI0OTIsIDI2NDAsIDAsIDEwODAsIDEwODQsIDEwOTQsIDExMjUsIDAsCj4gIAkJICAgRFJNX01P REVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gIAkgLnZyZWZyZXNoID0g MTAwLCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzE2XzksIH0s Cj4gKwkvKiA2NSAtIDEyODB4NzIwQDI0SHogKi8KPiArCXsgRFJNX01PREUoIjEyODB4NzIwIiwg RFJNX01PREVfVFlQRV9EUklWRVIsIDU5MzQxLCAxMjgwLCAzMDQwLAo+ICsJICAgMzA4MCwgMzMw MCwgMCwgNzIwLCA3MjUsIDczMCwgNzUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMg fCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSAyNCwgLnBpY3R1cmVfYXNw ZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDY2IC0gMTI4 MHg3MjBAMjVIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTI4MHg3MjAiLCBEUk1fTU9ERV9UWVBFX0RS SVZFUiwgNzQyNTAsIDEyODAsIDM3MDAsCj4gKwkgICAzNzQwLCAzOTYwLCAwLCA3MjAsIDcyNSwg NzMwLCA3NTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdf UFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI1LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1J X1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ICsJLyogNjcgLSAxMjgweDcyMEAzMEh6ICovCj4g Kwl7IERSTV9NT0RFKCIxMjgweDcyMCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCA3NDE3NiwgMTI4 MCwgMzA0MCwKPiArCSAgIDMwODAsIDMzMDAsIDAsIDcyMCwgNzI1LCA3MzAsIDc1MCwgMCwKPiAr CSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZy ZWZyZXNoID0gMzAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1Rf NjRfMjcsIH0sCj4gKwkvKiA2OCAtIDEyODB4NzIwQDUwSHogKi8KPiArCXsgRFJNX01PREUoIjEy ODB4NzIwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDc0MjUwLCAxMjgwLCAxNzIwLAo+ICsJICAg MTc2MCwgMTk4MCwgMCwgNzIwLCA3MjUsIDczMCwgNzUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxB R19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSA1MCwgLnBp Y3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8q IDY5IC0gMTI4MHg3MjBANjBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTI4MHg3MjAiLCBEUk1fTU9E RV9UWVBFX0RSSVZFUiwgNzQxNzYsIDEyODAsIDEzOTAsCj4gKwkgICAxNDMwLCAxNjUwLCAwLCA3 MjAsIDcyNSwgNzMwLCA3NTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9N T0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDYwLCAucGljdHVyZV9hc3BlY3RfcmF0 aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ICsJLyogNzAgLSAxMjgweDcyMEAx MDBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTI4MHg3MjAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwg MTQ4NTAwLCAxMjgwLCAxNzIwLAo+ICsJICAgMTc2MCwgMTk4MCwgMCwgNzIwLCA3MjUsIDczMCwg NzUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lO QyksCj4gKwkudnJlZnJlc2ggPSAxMDAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElD VFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA3MSAtIDEyODB4NzIwQDEyMEh6ICovCj4gKwl7 IERSTV9NT0RFKCIxMjgweDcyMCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAxNDgzNTIsIDEyODAs IDEzOTAsCj4gKwkgICAxNDMwLCAxNjUwLCAwLCA3MjAsIDcyNSwgNzMwLCA3NTAsIDAsCj4gKwkg ICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVm cmVzaCA9IDEyMCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82 NF8yNywgfSwKPiArCS8qIDcyIC0gMTkyMHgxMDgwQDI0SHogKi8KPiArCXsgRFJNX01PREUoIjE5 MjB4MTA4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCA3NDE3NiwgMTkyMCwgMjU1OCwKPiArCSAg IDI2MDIsIDI3NTAsIDAsIDEwODAsIDEwODQsIDEwODksIDExMjUsIDAsCj4gKwkgICBEUk1fTU9E RV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI0 LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ ICsJLyogNzMgLSAxOTIweDEwODBAMjVIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTkyMHgxMDgwIiwg RFJNX01PREVfVFlQRV9EUklWRVIsIDc0MjUwLCAxOTIwLCAyNDQ4LAo+ICsJICAgMjQ5MiwgMjY0 MCwgMCwgMTA4MCwgMTA4NCwgMTA4OSwgMTEyNSwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhT WU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZyZWZyZXNoID0gMjUsIC5waWN0dXJl X2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA3NCAt IDE5MjB4MTA4MEAzMEh6ICovCj4gKwl7IERSTV9NT0RFKCIxOTIweDEwODAiLCBEUk1fTU9ERV9U WVBFX0RSSVZFUiwgNzQxNzYsIDE5MjAsIDIwMDgsCj4gKwkgICAyMDUyLCAyMjAwLCAwLCAxMDgw LCAxMDg0LCAxMDg5LCAxMTI1LCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1f TU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSAzMCwgLnBpY3R1cmVfYXNwZWN0X3Jh dGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDc1IC0gMTkyMHgxMDgw QDUwSHogKi8KPiArCXsgRFJNX01PREUoIjE5MjB4MTA4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVS LCAxNDg1MDAsIDE5MjAsIDI0NDgsCj4gKwkgICAyNDkyLCAyNjQwLCAwLCAxMDgwLCAxMDg0LCAx MDg5LCAxMTI1LCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFH X1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSA1MCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERN SV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDc2IC0gMTkyMHgxMDgwQDYwSHogKi8K PiArCXsgRFJNX01PREUoIjE5MjB4MTA4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAxNDgzNTIs IDE5MjAsIDIwMDgsCj4gKwkgICAyMDUyLCAyMjAwLCAwLCAxMDgwLCAxMDg0LCAxMDg5LCAxMTI1 LCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyks Cj4gKwkudnJlZnJlc2ggPSA2MCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJF X0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDc3IC0gMTkyMHgxMDgwQDEwMEh6ICovCj4gKwl7IERS TV9NT0RFKCIxOTIweDEwODAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgMjk3MDAwLCAxOTIwLCAy NDQ4LAo+ICsJICAgMjQ5MiwgMjY0MCwgMCwgMTA4MCwgMTA4NCwgMTA4OSwgMTEyNSwgMCwKPiAr CSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZy ZWZyZXNoID0gMTAwLCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNU XzY0XzI3LCB9LAo+ICsJLyogNzggLSAxOTIweDEwODBAMTIwSHogKi8KPiArCXsgRFJNX01PREUo IjE5MjB4MTA4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAyOTY3MDQsIDE5MjAsIDIwMDgsCj4g KwkgICAyMDUyLCAyMjAwLCAwLCAxMDgwLCAxMDg0LCAxMDg5LCAxMTI1LCAwLAo+ICsJICAgRFJN X01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2gg PSAxMjAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcs IH0sCj4gKwkvKiA3OSAtIDE2ODB4NzIwQDI0SHogKi8KPiArCXsgRFJNX01PREUoIjE2ODB4NzIw IiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDU5MzQxLCAxNjgwLCAzMDQwLAo+ICsJICAgMzA4MCwg MzMwMCwgMCwgNzIwLCA3MjUsIDczMCwgNzUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZ TkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSAyNCwgLnBpY3R1cmVf YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDgwIC0g MTY4MHg3MjBAMjVIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTY4MHg3MjAiLCBEUk1fTU9ERV9UWVBF X0RSSVZFUiwgNTk0MDAsIDE2ODAsIDI5MDgsCj4gKwkgICAyOTQ4LCAzMTY4LCAwLCA3MjAsIDcy NSwgNzMwLCA3NTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZM QUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI1LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBI RE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ICsJLyogODEgLSAxNjgweDcyMEAzMEh6ICov Cj4gKwl7IERSTV9NT0RFKCIxNjgweDcyMCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCA1OTM0MSwg MTY4MCwgMjM4MCwKPiArCSAgIDI0MjAsIDI2NDAsIDAsIDcyMCwgNzI1LCA3MzAsIDc1MCwgMCwK PiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJ LnZyZWZyZXNoID0gMzAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BF Q1RfNjRfMjcsIH0sCj4gKwkvKiA4MiAtIDE2ODB4NzIwQDUwSHogKi8KPiArCXsgRFJNX01PREUo IjE2ODB4NzIwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDgyNTAwLCAxNjgwLCAxOTQwLAo+ICsJ ICAgMTk4MCwgMjIwMCwgMCwgNzIwLCA3MjUsIDczMCwgNzUwLCAwLAo+ICsJICAgRFJNX01PREVf RkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSA1MCwg LnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiAr CS8qIDgzIC0gMTY4MHg3MjBANjBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTY4MHg3MjAiLCBEUk1f TU9ERV9UWVBFX0RSSVZFUiwgOTg5MDIsIDE2ODAsIDE5NDAsCj4gKwkgICAxOTgwLCAyMjAwLCAw LCA3MjAsIDcyNSwgNzMwLCA3NTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERS TV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDYwLCAucGljdHVyZV9hc3BlY3Rf cmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ICsJLyogODQgLSAxNjgweDcy MEAxMDBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMTY4MHg3MjAiLCBEUk1fTU9ERV9UWVBFX0RSSVZF UiwgMTY1MDAwLCAxNjgwLCAxNzQwLAo+ICsJICAgMTc4MCwgMjAwMCwgMCwgNzIwLCA3MjUsIDcz MCwgODI1LCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BW U1lOQyksCj4gKwkudnJlZnJlc2ggPSAxMDAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlf UElDVFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA4NSAtIDE2ODB4NzIwQDEyMEh6ICovCj4g Kwl7IERSTV9NT0RFKCIxNjgweDcyMCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAxOTc4MDIsIDE2 ODAsIDE3NDAsCj4gKwkgICAxNzgwLCAyMDAwLCAwLCA3MjAsIDcyNSwgNzMwLCA4MjUsIDAsCj4g KwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52 cmVmcmVzaCA9IDEyMCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVD VF82NF8yNywgfSwKPiArCS8qIDg2IC0gMjU2MHgxMDgwQDI0SHogKi8KPiArCXsgRFJNX01PREUo IjI1NjB4MTA4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCA5ODkwMiwgMjU2MCwgMzU1OCwKPiAr CSAgIDM2MDIsIDM3NTAsIDAsIDEwODAsIDEwODQsIDEwODksIDExMDAsIDAsCj4gKwkgICBEUk1f TU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9 IDI0LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9 LAo+ICsJLyogODcgLSAyNTYweDEwODBAMjVIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMjU2MHgxMDgw IiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDkwMDAwLCAyNTYwLCAzMDA4LAo+ICsJICAgMzA1Miwg MzIwMCwgMCwgMTA4MCwgMTA4NCwgMTA4OSwgMTEyNSwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdf UEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZyZWZyZXNoID0gMjUsIC5waWN0 dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA4 OCAtIDI1NjB4MTA4MEAzMEh6ICovCj4gKwl7IERSTV9NT0RFKCIyNTYweDEwODAiLCBEUk1fTU9E RV9UWVBFX0RSSVZFUiwgMTE4NjgyLCAyNTYwLCAzMzI4LAo+ICsJICAgMzM3MiwgMzUyMCwgMCwg MTA4MCwgMTA4NCwgMTA4OSwgMTEyNSwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwg RFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZyZWZyZXNoID0gMzAsIC5waWN0dXJlX2FzcGVj dF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA4OSAtIDI1NjB4 MTA4MEA1MEh6ICovCj4gKwl7IERSTV9NT0RFKCIyNTYweDEwODAiLCBEUk1fTU9ERV9UWVBFX0RS SVZFUiwgMTg1NjI1LCAyNTYwLCAzMTA4LAo+ICsJICAgMzE1MiwgMzMwMCwgMCwgMTA4MCwgMTA4 NCwgMTA4OSwgMTEyNSwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVf RkxBR19QVlNZTkMpLAo+ICsJLnZyZWZyZXNoID0gNTAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9 IEhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA5MCAtIDI1NjB4MTA4MEA2MEh6 ICovCj4gKwl7IERSTV9NT0RFKCIyNTYweDEwODAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgMTk3 ODAzLCAyNTYwLCAyODA4LAo+ICsJICAgMjg1MiwgMzAwMCwgMCwgMTA4MCwgMTA4NCwgMTA4OSwg MTEwMCwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZ TkMpLAo+ICsJLnZyZWZyZXNoID0gNjAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElD VFVSRV9BU1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiA5MSAtIDI1NjB4MTA4MEAxMDBIeiAqLwo+ICsJ eyBEUk1fTU9ERSgiMjU2MHgxMDgwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDM3MTI1MCwgMjU2 MCwgMjc3OCwKPiArCSAgIDI4MjIsIDI5NzAsIDAsIDEwODAsIDEwODQsIDEwODksIDEyNTAsIDAs Cj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiAr CS52cmVmcmVzaCA9IDEwMCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FT UEVDVF82NF8yNywgfSwKPiArCS8qIDkyIC0gMjU2MHgxMDgwQDEyMEh6ICovCj4gKwl7IERSTV9N T0RFKCIyNTYweDEwODAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgNDk0NTA2LCAyNTYwLCAzMTA4 LAo+ICsJICAgMzE1MiwgMzMwMCwgMCwgMTA4MCwgMTA4NCwgMTA4OSwgMTI1MCwgMCwKPiArCSAg IERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZyZWZy ZXNoID0gMTIwLCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0 XzI3LCB9LAo+ICsJLyogOTMgLSAzODQweDIxNjBAMjRIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMzg0 MHgyMTYwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDI5NjcwNCwgMzg0MCwgNTExNiwKPiArCSAg IDUyMDQsIDU1MDAsIDAsIDIxNjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9E RV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI0 LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzE2XzksIH0sCj4g KwkvKiA5NCAtIDM4NDB4MjE2MEAyNUh6ICovCj4gKwl7IERSTV9NT0RFKCIzODQweDIxNjAiLCBE Uk1fTU9ERV9UWVBFX0RSSVZFUiwgMjk3MDAwLCAzODQwLCA0ODk2LAo+ICsJICAgNDk4NCwgNTI4 MCwgMCwgMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwgMCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhT WU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ICsJLnZyZWZyZXNoID0gMjUsIC5waWN0dXJl X2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfMTZfOSwgfSwKPiArCS8qIDk1IC0g Mzg0MHgyMTYwQDMwSHogKi8KPiArCXsgRFJNX01PREUoIjM4NDB4MjE2MCIsIERSTV9NT0RFX1RZ UEVfRFJJVkVSLCAyOTY3MDQsIDM4NDAsIDQwMTYsCj4gKwkgICA0MTA0LCA0NDAwLCAwLCAyMTYw LCAyMTY4LCAyMTc4LCAyMjUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1f TU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSAzMCwgLnBpY3R1cmVfYXNwZWN0X3Jh dGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF8xNl85LCB9LAo+ICsJLyogOTYgLSAzODQweDIxNjBA NTBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMzg0MHgyMTYwIiwgRFJNX01PREVfVFlQRV9EUklWRVIs IDU5NDAwMCwgMzg0MCwgNDg5NiwKPiArCSAgIDQ5ODQsIDUyODAsIDAsIDIxNjAsIDIxNjgsIDIx NzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdf UFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDUwLCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1J X1BJQ1RVUkVfQVNQRUNUXzE2XzksIH0sCj4gKwkvKiA5NyAtIDM4NDB4MjE2MEA2MEh6ICovCj4g Kwl7IERSTV9NT0RFKCIzODQweDIxNjAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgNTkzNDA3LCAz ODQwLCA0MDE2LAo+ICsJICAgNDEwNCwgNDQwMCwgMCwgMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwg MCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ ICsJLnZyZWZyZXNoID0gNjAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9B U1BFQ1RfMTZfOSwgfSwKPiArCS8qIDk4IC0gNDA5NngyMTYwQDI0SHogKi8KPiArCXsgRFJNX01P REUoIjQwOTZ4MjE2MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAyOTY3MDQsIDQwOTYsIDUxMTYs Cj4gKwkgICA1MjA0LCA1NTAwLCAwLCAyMTYwLCAyMTY4LCAyMTc4LCAyMjUwLCAwLAo+ICsJICAg RFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJl c2ggPSAyNCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF8yNTZf MTM1LCB9LAo+ICsJLyogOTkgLSA0MDk2eDIxNjBAMjVIeiAqLwo+ICsJeyBEUk1fTU9ERSgiNDA5 NngyMTYwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDI5NzAwMCwgNDA5NiwgNTA2NCwKPiArCSAg IDUxNTIsIDUyODAsIDAsIDIxNjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9E RV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI1 LCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzI1Nl8xMzUsIH0s Cj4gKwkvKiAxMDAgLSA0MDk2eDIxNjBAMzBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiNDA5NngyMTYw IiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDI5NjcwNCwgNDA5NiwgNDE4NCwKPiArCSAgIDQyNzIs IDQ0MDAsIDAsIDIxNjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFH X1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDMwLCAucGlj dHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzI1Nl8xMzUsIH0sCj4gKwkv KiAxMDEgLSA0MDk2eDIxNjBANTBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiNDA5NngyMTYwIiwgRFJN X01PREVfVFlQRV9EUklWRVIsIDU5NDAwMCwgNDA5NiwgNTA2NCwKPiArCSAgIDUxNTIsIDUyODAs IDAsIDIxNjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lO QyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDUwLCAucGljdHVyZV9h c3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzI1Nl8xMzUsIH0sCj4gKwkvKiAxMDIg LSA0MDk2eDIxNjBANjBIeiAqLwo+ICsJeyBEUk1fTU9ERSgiNDA5NngyMTYwIiwgRFJNX01PREVf VFlQRV9EUklWRVIsIDU5MzQwOCwgNDA5NiwgNDE4NCwKPiArCSAgIDQyNzIsIDQ0MDAsIDAsIDIx NjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERS TV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDYwLCAucGljdHVyZV9hc3BlY3Rf cmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzI1Nl8xMzUsIH0sCj4gKwkvKiAxMDMgLSAzODQw eDIxNjBAMjRIeiAqLwo+ICsJeyBEUk1fTU9ERSgiMzg0MHgyMTYwIiwgRFJNX01PREVfVFlQRV9E UklWRVIsIDI5NjcwNCwgMzg0MCwgNTExNiwKPiArCSAgIDUyMDQsIDU1MDAsIDAsIDIxNjAsIDIx NjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RF X0ZMQUdfUFZTWU5DKSwKPiArCS52cmVmcmVzaCA9IDI0LCAucGljdHVyZV9hc3BlY3RfcmF0aW8g PSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3LCB9LAo+ICsJLyogMTA0IC0gMzg0MHgyMTYwQDI1 SHogKi8KPiArCXsgRFJNX01PREUoIjM4NDB4MjE2MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAy OTcwMDAsIDM4NDAsIDQ4OTYsCj4gKwkgICA0OTg0LCA1MjgwLCAwLCAyMTYwLCAyMTY4LCAyMTc4 LCAyMjUwLCAwLAo+ICsJICAgRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BW U1lOQyksCj4gKwkudnJlZnJlc2ggPSAyNSwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9Q SUNUVVJFX0FTUEVDVF82NF8yNywgfSwKPiArCS8qIDEwNSAtIDM4NDB4MjE2MEAzMEh6ICovCj4g Kwl7IERSTV9NT0RFKCIzODQweDIxNjAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgMjk2NzA0LCAz ODQwLCA0MDE2LAo+ICsJICAgNDEwNCwgNDQwMCwgMCwgMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwg MCwKPiArCSAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19QVlNZTkMpLAo+ ICsJLnZyZWZyZXNoID0gMzAsIC5waWN0dXJlX2FzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9B U1BFQ1RfNjRfMjcsIH0sCj4gKwkvKiAxMDYgLSAzODQweDIxNjBANTBIeiAqLwo+ICsJeyBEUk1f TU9ERSgiMzg0MHgyMTYwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDU5NDAwMCwgMzg0MCwgNDg5 NiwKPiArCSAgIDQ5ODQsIDUyODAsIDAsIDIxNjAsIDIxNjgsIDIxNzgsIDIyNTAsIDAsCj4gKwkg ICBEUk1fTU9ERV9GTEFHX1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DKSwKPiArCS52cmVm cmVzaCA9IDUwLCAucGljdHVyZV9hc3BlY3RfcmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUXzY0 XzI3LCB9LAo+ICsJLyogMTA3IC0gMzg0MHgyMTYwQDYwSHogKi8KPiArCXsgRFJNX01PREUoIjM4 NDB4MjE2MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCA1OTM0MDcsIDM4NDAsIDQwMTYsCj4gKwkg ICA0MTA0LCA0NDAwLCAwLCAyMTYwLCAyMTY4LCAyMTc4LCAyMjUwLCAwLAo+ICsJICAgRFJNX01P REVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX1BWU1lOQyksCj4gKwkudnJlZnJlc2ggPSA2 MCwgLnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF82NF8yNywgfSwK PiAgfTsKPiAgCj4gIC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaGRtaS5jIGIvZHJp dmVycy92aWRlby9oZG1pLmMKPiBpbmRleCAxNjI2ODkyLi4xY2Y5MDdlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vaGRtaS5jCj4gKysrIGIvZHJpdmVycy92aWRlby9oZG1pLmMKPiBAQCAt NTMzLDYgKzUzMywxMCBAQCBoZG1pX3BpY3R1cmVfYXNwZWN0X2dldF9uYW1lKGVudW0gaGRtaV9w aWN0dXJlX2FzcGVjdCBwaWN0dXJlX2FzcGVjdCkKPiAgCQlyZXR1cm4gIjQ6MyI7Cj4gIAljYXNl IEhETUlfUElDVFVSRV9BU1BFQ1RfMTZfOToKPiAgCQlyZXR1cm4gIjE2OjkiOwo+ICsJY2FzZSBI RE1JX1BJQ1RVUkVfQVNQRUNUXzY0XzI3Ogo+ICsJCXJldHVybiAiNjQ6MjciOwo+ICsJY2FzZSBI RE1JX1BJQ1RVUkVfQVNQRUNUXzI1Nl8xMzU6Cj4gKwkJcmV0dXJuICIyNTY6MTM1IjsKPiAgCWNh c2UgSERNSV9QSUNUVVJFX0FTUEVDVF9SRVNFUlZFRDoKPiAgCQlyZXR1cm4gIlJlc2VydmVkIjsK PiAgCX0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oZG1pLmggYi9pbmNsdWRlL2xpbnV4 L2hkbWkuaAo+IGluZGV4IGU5NzQ0MjAuLmVkYmI0ZmMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9s aW51eC9oZG1pLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L2hkbWkuaAo+IEBAIC03OCw2ICs3OCw4 IEBAIGVudW0gaGRtaV9waWN0dXJlX2FzcGVjdCB7Cj4gIAlIRE1JX1BJQ1RVUkVfQVNQRUNUX05P TkUsCj4gIAlIRE1JX1BJQ1RVUkVfQVNQRUNUXzRfMywKPiAgCUhETUlfUElDVFVSRV9BU1BFQ1Rf MTZfOSwKPiArCUhETUlfUElDVFVSRV9BU1BFQ1RfNjRfMjcsCj4gKwlIRE1JX1BJQ1RVUkVfQVNQ RUNUXzI1Nl8xMzUsCj4gIAlIRE1JX1BJQ1RVUkVfQVNQRUNUX1JFU0VSVkVELAo+ICB9OwoKLS0g CkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK