From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Date: Thu, 05 Dec 2019 09:37:07 +0000 Subject: Re: [Intel-gfx] [PATCH v3 08/12] video: constify fb ops across all drivers Message-Id: <875zivi058.fsf@intel.com> List-Id: References: In-Reply-To: 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: Daniel Vetter , intel-gfx@lists.freedesktop.org On Tue, 03 Dec 2019, Jani Nikula wrote: > Now that the fbops member of struct fb_info is const, we can start > making the ops const as well. > > This does not cover all drivers; some actually modify the fbops struct, > for example to adjust for different configurations, and others do more > involved things that I'd rather not touch in practically obsolete > drivers. Mostly this is the low hanging fruit where we can add "const" > and be done with it. > > v3: > - un-constify atyfb, mb862xx, nvidia and uvesabf (0day) > > v2: > - fix typo (Christophe de Dinechin) > - use "static const" instead of "const static" in mx3fb.c > - also constify smscufx.c > > Cc: linux-fbdev@vger.kernel.org > Reviewed-by: Daniel Vetter > Signed-off-by: Jani Nikula Pushed up to and including this patch to drm-misc-next, thanks for the reviews and acks. BR, Jani. > --- > drivers/video/fbdev/68328fb.c | 2 +- > drivers/video/fbdev/acornfb.c | 2 +- > drivers/video/fbdev/amba-clcd.c | 2 +- > drivers/video/fbdev/amifb.c | 2 +- > drivers/video/fbdev/arcfb.c | 2 +- > drivers/video/fbdev/arkfb.c | 2 +- > drivers/video/fbdev/asiliantfb.c | 2 +- > drivers/video/fbdev/atmel_lcdfb.c | 2 +- > drivers/video/fbdev/aty/aty128fb.c | 2 +- > drivers/video/fbdev/aty/radeon_base.c | 2 +- > drivers/video/fbdev/au1100fb.c | 2 +- > drivers/video/fbdev/au1200fb.c | 2 +- > drivers/video/fbdev/broadsheetfb.c | 2 +- > drivers/video/fbdev/bw2.c | 2 +- > drivers/video/fbdev/carminefb.c | 2 +- > drivers/video/fbdev/cg14.c | 2 +- > drivers/video/fbdev/cg3.c | 2 +- > drivers/video/fbdev/cg6.c | 2 +- > drivers/video/fbdev/chipsfb.c | 2 +- > drivers/video/fbdev/cirrusfb.c | 2 +- > drivers/video/fbdev/clps711x-fb.c | 2 +- > drivers/video/fbdev/cobalt_lcdfb.c | 2 +- > drivers/video/fbdev/controlfb.c | 2 +- > drivers/video/fbdev/cyber2000fb.c | 2 +- > drivers/video/fbdev/da8xx-fb.c | 2 +- > drivers/video/fbdev/dnfb.c | 2 +- > drivers/video/fbdev/efifb.c | 2 +- > drivers/video/fbdev/ep93xx-fb.c | 2 +- > drivers/video/fbdev/fb-puv3.c | 2 +- > drivers/video/fbdev/ffb.c | 2 +- > drivers/video/fbdev/fm2fb.c | 2 +- > drivers/video/fbdev/fsl-diu-fb.c | 2 +- > drivers/video/fbdev/g364fb.c | 2 +- > drivers/video/fbdev/gbefb.c | 2 +- > drivers/video/fbdev/geode/gx1fb_core.c | 2 +- > drivers/video/fbdev/geode/gxfb_core.c | 2 +- > drivers/video/fbdev/geode/lxfb_core.c | 2 +- > drivers/video/fbdev/goldfishfb.c | 2 +- > drivers/video/fbdev/grvga.c | 2 +- > drivers/video/fbdev/gxt4500.c | 2 +- > drivers/video/fbdev/hecubafb.c | 2 +- > drivers/video/fbdev/hgafb.c | 2 +- > drivers/video/fbdev/hitfb.c | 2 +- > drivers/video/fbdev/hpfb.c | 2 +- > drivers/video/fbdev/hyperv_fb.c | 2 +- > drivers/video/fbdev/i740fb.c | 2 +- > drivers/video/fbdev/imsttfb.c | 2 +- > drivers/video/fbdev/imxfb.c | 2 +- > drivers/video/fbdev/intelfb/intelfbdrv.c | 2 +- > drivers/video/fbdev/kyro/fbdev.c | 2 +- > drivers/video/fbdev/leo.c | 2 +- > drivers/video/fbdev/macfb.c | 2 +- > drivers/video/fbdev/matrox/matroxfb_crtc2.c | 2 +- > drivers/video/fbdev/maxinefb.c | 2 +- > drivers/video/fbdev/mbx/mbxfb.c | 2 +- > drivers/video/fbdev/metronomefb.c | 2 +- > drivers/video/fbdev/mmp/fb/mmpfb.c | 2 +- > drivers/video/fbdev/mx3fb.c | 5 +++-- > drivers/video/fbdev/neofb.c | 2 +- > drivers/video/fbdev/ocfb.c | 2 +- > drivers/video/fbdev/offb.c | 2 +- > drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 2 +- > drivers/video/fbdev/p9100.c | 2 +- > drivers/video/fbdev/platinumfb.c | 2 +- > drivers/video/fbdev/pm2fb.c | 2 +- > drivers/video/fbdev/pm3fb.c | 2 +- > drivers/video/fbdev/pmag-aa-fb.c | 2 +- > drivers/video/fbdev/pmag-ba-fb.c | 2 +- > drivers/video/fbdev/pmagb-b-fb.c | 2 +- > drivers/video/fbdev/ps3fb.c | 2 +- > drivers/video/fbdev/pvr2fb.c | 2 +- > drivers/video/fbdev/pxa168fb.c | 2 +- > drivers/video/fbdev/pxafb.c | 4 ++-- > drivers/video/fbdev/q40fb.c | 2 +- > drivers/video/fbdev/riva/fbdev.c | 2 +- > drivers/video/fbdev/s3c-fb.c | 2 +- > drivers/video/fbdev/s3c2410fb.c | 2 +- > drivers/video/fbdev/s3fb.c | 2 +- > drivers/video/fbdev/sa1100fb.c | 2 +- > drivers/video/fbdev/savage/savagefb_driver.c | 2 +- > drivers/video/fbdev/sh7760fb.c | 2 +- > drivers/video/fbdev/sh_mobile_lcdcfb.c | 4 ++-- > drivers/video/fbdev/simplefb.c | 2 +- > drivers/video/fbdev/sis/sis_main.c | 2 +- > drivers/video/fbdev/skeletonfb.c | 2 +- > drivers/video/fbdev/sm712fb.c | 2 +- > drivers/video/fbdev/smscufx.c | 2 +- > drivers/video/fbdev/ssd1307fb.c | 2 +- > drivers/video/fbdev/sstfb.c | 2 +- > drivers/video/fbdev/stifb.c | 2 +- > drivers/video/fbdev/sunxvr1000.c | 2 +- > drivers/video/fbdev/sunxvr2500.c | 2 +- > drivers/video/fbdev/sunxvr500.c | 2 +- > drivers/video/fbdev/tcx.c | 2 +- > drivers/video/fbdev/tdfxfb.c | 2 +- > drivers/video/fbdev/tgafb.c | 2 +- > drivers/video/fbdev/tmiofb.c | 2 +- > drivers/video/fbdev/tridentfb.c | 2 +- > drivers/video/fbdev/valkyriefb.c | 2 +- > drivers/video/fbdev/vfb.c | 2 +- > drivers/video/fbdev/vga16fb.c | 2 +- > drivers/video/fbdev/vt8500lcdfb.c | 2 +- > drivers/video/fbdev/vt8623fb.c | 2 +- > drivers/video/fbdev/w100fb.c | 2 +- > drivers/video/fbdev/wm8505fb.c | 2 +- > drivers/video/fbdev/xen-fbfront.c | 2 +- > drivers/video/fbdev/xilinxfb.c | 2 +- > 107 files changed, 111 insertions(+), 110 deletions(-) > > diff --git a/drivers/video/fbdev/68328fb.c b/drivers/video/fbdev/68328fb.c > index d48e96088f76..491fd5a82993 100644 > --- a/drivers/video/fbdev/68328fb.c > +++ b/drivers/video/fbdev/68328fb.c > @@ -96,7 +96,7 @@ static int mc68x328fb_pan_display(struct fb_var_screeninfo *var, > struct fb_info *info); > static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma); > > -static struct fb_ops mc68x328fb_ops = { > +static const struct fb_ops mc68x328fb_ops = { > .fb_check_var = mc68x328fb_check_var, > .fb_set_par = mc68x328fb_set_par, > .fb_setcolreg = mc68x328fb_setcolreg, > diff --git a/drivers/video/fbdev/acornfb.c b/drivers/video/fbdev/acornfb.c > index 7cacae5a8797..a3af49529173 100644 > --- a/drivers/video/fbdev/acornfb.c > +++ b/drivers/video/fbdev/acornfb.c > @@ -604,7 +604,7 @@ acornfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) > return 0; > } > > -static struct fb_ops acornfb_ops = { > +static const struct fb_ops acornfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = acornfb_check_var, > .fb_set_par = acornfb_set_par, > diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c > index 7de43be6ef2c..c3d55fc6c4e0 100644 > --- a/drivers/video/fbdev/amba-clcd.c > +++ b/drivers/video/fbdev/amba-clcd.c > @@ -423,7 +423,7 @@ static int clcdfb_mmap(struct fb_info *info, > return ret; > } > > -static struct fb_ops clcdfb_ops = { > +static const struct fb_ops clcdfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = clcdfb_check_var, > .fb_set_par = clcdfb_set_par, > diff --git a/drivers/video/fbdev/amifb.c b/drivers/video/fbdev/amifb.c > index 91ddc9602014..20e03e00b66d 100644 > --- a/drivers/video/fbdev/amifb.c > +++ b/drivers/video/fbdev/amifb.c > @@ -3493,7 +3493,7 @@ static irqreturn_t amifb_interrupt(int irq, void *dev_id) > } > > > -static struct fb_ops amifb_ops = { > +static const struct fb_ops amifb_ops = { > .owner = THIS_MODULE, > .fb_check_var = amifb_check_var, > .fb_set_par = amifb_set_par, > diff --git a/drivers/video/fbdev/arcfb.c b/drivers/video/fbdev/arcfb.c > index a48741aab240..314ab82e01c0 100644 > --- a/drivers/video/fbdev/arcfb.c > +++ b/drivers/video/fbdev/arcfb.c > @@ -491,7 +491,7 @@ static ssize_t arcfb_write(struct fb_info *info, const char __user *buf, > return err; > } > > -static struct fb_ops arcfb_ops = { > +static const struct fb_ops arcfb_ops = { > .owner = THIS_MODULE, > .fb_open = arcfb_open, > .fb_read = fb_sys_read, > diff --git a/drivers/video/fbdev/arkfb.c b/drivers/video/fbdev/arkfb.c > index f940e8b66b85..11ab9a153860 100644 > --- a/drivers/video/fbdev/arkfb.c > +++ b/drivers/video/fbdev/arkfb.c > @@ -917,7 +917,7 @@ static int arkfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info > > /* Frame buffer operations */ > > -static struct fb_ops arkfb_ops = { > +static const struct fb_ops arkfb_ops = { > .owner = THIS_MODULE, > .fb_open = arkfb_open, > .fb_release = arkfb_release, > diff --git a/drivers/video/fbdev/asiliantfb.c b/drivers/video/fbdev/asiliantfb.c > index ea31054a28ca..3e006da47752 100644 > --- a/drivers/video/fbdev/asiliantfb.c > +++ b/drivers/video/fbdev/asiliantfb.c > @@ -95,7 +95,7 @@ static int asiliantfb_set_par(struct fb_info *info); > static int asiliantfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, > u_int transp, struct fb_info *info); > > -static struct fb_ops asiliantfb_ops = { > +static const struct fb_ops asiliantfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = asiliantfb_check_var, > .fb_set_par = asiliantfb_set_par, > diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c > index 5ff8e0320d95..d567f5d56c13 100644 > --- a/drivers/video/fbdev/atmel_lcdfb.c > +++ b/drivers/video/fbdev/atmel_lcdfb.c > @@ -824,7 +824,7 @@ static int atmel_lcdfb_blank(int blank_mode, struct fb_info *info) > return ((blank_mode = FB_BLANK_NORMAL) ? 1 : 0); > } > > -static struct fb_ops atmel_lcdfb_ops = { > +static const struct fb_ops atmel_lcdfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = atmel_lcdfb_check_var, > .fb_set_par = atmel_lcdfb_set_par, > diff --git a/drivers/video/fbdev/aty/aty128fb.c b/drivers/video/fbdev/aty/aty128fb.c > index fc1e45d44719..d7e41c8dd533 100644 > --- a/drivers/video/fbdev/aty/aty128fb.c > +++ b/drivers/video/fbdev/aty/aty128fb.c > @@ -509,7 +509,7 @@ static void aty128_bl_set_power(struct fb_info *info, int power); > (readb(bios + (v) + 3) << 24)) > > > -static struct fb_ops aty128fb_ops = { > +static const struct fb_ops aty128fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = aty128fb_check_var, > .fb_set_par = aty128fb_set_par, > diff --git a/drivers/video/fbdev/aty/radeon_base.c b/drivers/video/fbdev/aty/radeon_base.c > index 4ca07866f2f6..3af00e3b965e 100644 > --- a/drivers/video/fbdev/aty/radeon_base.c > +++ b/drivers/video/fbdev/aty/radeon_base.c > @@ -1965,7 +1965,7 @@ static int radeonfb_set_par(struct fb_info *info) > } > > > -static struct fb_ops radeonfb_ops = { > +static const struct fb_ops radeonfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = radeonfb_check_var, > .fb_set_par = radeonfb_set_par, > diff --git a/drivers/video/fbdev/au1100fb.c b/drivers/video/fbdev/au1100fb.c > index 99941ae1f3a1..37a6512feda0 100644 > --- a/drivers/video/fbdev/au1100fb.c > +++ b/drivers/video/fbdev/au1100fb.c > @@ -348,7 +348,7 @@ int au1100fb_fb_mmap(struct fb_info *fbi, struct vm_area_struct *vma) > fbdev->fb_len); > } > > -static struct fb_ops au1100fb_ops > +static const struct fb_ops au1100fb_ops > { > .owner = THIS_MODULE, > .fb_setcolreg = au1100fb_fb_setcolreg, > diff --git a/drivers/video/fbdev/au1200fb.c b/drivers/video/fbdev/au1200fb.c > index 265d3b45efd0..c00e01a17368 100644 > --- a/drivers/video/fbdev/au1200fb.c > +++ b/drivers/video/fbdev/au1200fb.c > @@ -1483,7 +1483,7 @@ static int au1200fb_ioctl(struct fb_info *info, unsigned int cmd, > } > > > -static struct fb_ops au1200fb_fb_ops = { > +static const struct fb_ops au1200fb_fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = au1200fb_fb_check_var, > .fb_set_par = au1200fb_fb_set_par, > diff --git a/drivers/video/fbdev/broadsheetfb.c b/drivers/video/fbdev/broadsheetfb.c > index d6ba348deb9f..fd66f4d4a621 100644 > --- a/drivers/video/fbdev/broadsheetfb.c > +++ b/drivers/video/fbdev/broadsheetfb.c > @@ -1048,7 +1048,7 @@ static ssize_t broadsheetfb_write(struct fb_info *info, const char __user *buf, > return (err) ? err : count; > } > > -static struct fb_ops broadsheetfb_ops = { > +static const struct fb_ops broadsheetfb_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = broadsheetfb_write, > diff --git a/drivers/video/fbdev/bw2.c b/drivers/video/fbdev/bw2.c > index 436f10f3d375..0d9a6bb57a09 100644 > --- a/drivers/video/fbdev/bw2.c > +++ b/drivers/video/fbdev/bw2.c > @@ -37,7 +37,7 @@ static int bw2_ioctl(struct fb_info *, unsigned int, unsigned long); > * Frame buffer operations > */ > > -static struct fb_ops bw2_ops = { > +static const struct fb_ops bw2_ops = { > .owner = THIS_MODULE, > .fb_blank = bw2_blank, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/carminefb.c b/drivers/video/fbdev/carminefb.c > index 9f3be0258623..bf3f2a9598b1 100644 > --- a/drivers/video/fbdev/carminefb.c > +++ b/drivers/video/fbdev/carminefb.c > @@ -527,7 +527,7 @@ static int init_hardware(struct carmine_hw *hw) > return 0; > } > > -static struct fb_ops carminefb_ops = { > +static const struct fb_ops carminefb_ops = { > .owner = THIS_MODULE, > .fb_fillrect = cfb_fillrect, > .fb_copyarea = cfb_copyarea, > diff --git a/drivers/video/fbdev/cg14.c b/drivers/video/fbdev/cg14.c > index d80d99db3a46..a620b51cf7d0 100644 > --- a/drivers/video/fbdev/cg14.c > +++ b/drivers/video/fbdev/cg14.c > @@ -39,7 +39,7 @@ static int cg14_pan_display(struct fb_var_screeninfo *, struct fb_info *); > * Frame buffer operations > */ > > -static struct fb_ops cg14_ops = { > +static const struct fb_ops cg14_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = cg14_setcolreg, > .fb_pan_display = cg14_pan_display, > diff --git a/drivers/video/fbdev/cg3.c b/drivers/video/fbdev/cg3.c > index 09f616dddfd7..77f6470ce665 100644 > --- a/drivers/video/fbdev/cg3.c > +++ b/drivers/video/fbdev/cg3.c > @@ -39,7 +39,7 @@ static int cg3_ioctl(struct fb_info *, unsigned int, unsigned long); > * Frame buffer operations > */ > > -static struct fb_ops cg3_ops = { > +static const struct fb_ops cg3_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = cg3_setcolreg, > .fb_blank = cg3_blank, > diff --git a/drivers/video/fbdev/cg6.c b/drivers/video/fbdev/cg6.c > index d5888aecc2fb..a1c68cd48d7e 100644 > --- a/drivers/video/fbdev/cg6.c > +++ b/drivers/video/fbdev/cg6.c > @@ -44,7 +44,7 @@ static int cg6_pan_display(struct fb_var_screeninfo *, struct fb_info *); > * Frame buffer operations > */ > > -static struct fb_ops cg6_ops = { > +static const struct fb_ops cg6_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = cg6_setcolreg, > .fb_blank = cg6_blank, > diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c > index f4dc320dcafe..998067b701fa 100644 > --- a/drivers/video/fbdev/chipsfb.c > +++ b/drivers/video/fbdev/chipsfb.c > @@ -79,7 +79,7 @@ static int chipsfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, > u_int transp, struct fb_info *info); > static int chipsfb_blank(int blank, struct fb_info *info); > > -static struct fb_ops chipsfb_ops = { > +static const struct fb_ops chipsfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = chipsfb_check_var, > .fb_set_par = chipsfb_set_par, > diff --git a/drivers/video/fbdev/cirrusfb.c b/drivers/video/fbdev/cirrusfb.c > index e4ce5667b125..c3a3e344cee3 100644 > --- a/drivers/video/fbdev/cirrusfb.c > +++ b/drivers/video/fbdev/cirrusfb.c > @@ -1956,7 +1956,7 @@ static void cirrusfb_zorro_unmap(struct fb_info *info) > #endif /* CONFIG_ZORRO */ > > /* function table of the above functions */ > -static struct fb_ops cirrusfb_ops = { > +static const struct fb_ops cirrusfb_ops = { > .owner = THIS_MODULE, > .fb_open = cirrusfb_open, > .fb_release = cirrusfb_release, > diff --git a/drivers/video/fbdev/clps711x-fb.c b/drivers/video/fbdev/clps711x-fb.c > index cabbc721f894..c5d15c6db287 100644 > --- a/drivers/video/fbdev/clps711x-fb.c > +++ b/drivers/video/fbdev/clps711x-fb.c > @@ -153,7 +153,7 @@ static int clps711x_fb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops clps711x_fb_ops = { > +static const struct fb_ops clps711x_fb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = clps711x_fb_setcolreg, > .fb_check_var = clps711x_fb_check_var, > diff --git a/drivers/video/fbdev/cobalt_lcdfb.c b/drivers/video/fbdev/cobalt_lcdfb.c > index 544946901e8b..5f8b6324d2e8 100644 > --- a/drivers/video/fbdev/cobalt_lcdfb.c > +++ b/drivers/video/fbdev/cobalt_lcdfb.c > @@ -269,7 +269,7 @@ static int cobalt_lcdfb_cursor(struct fb_info *info, struct fb_cursor *cursor) > return 0; > } > > -static struct fb_ops cobalt_lcd_fbops = { > +static const struct fb_ops cobalt_lcd_fbops = { > .owner = THIS_MODULE, > .fb_read = cobalt_lcdfb_read, > .fb_write = cobalt_lcdfb_write, > diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c > index 9a680ef3ffc3..38b61cdb5ca4 100644 > --- a/drivers/video/fbdev/controlfb.c > +++ b/drivers/video/fbdev/controlfb.c > @@ -157,7 +157,7 @@ static int default_vmode __initdata = VMODE_NVRAM; > static int default_cmode __initdata = CMODE_NVRAM; > > > -static struct fb_ops controlfb_ops = { > +static const struct fb_ops controlfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = controlfb_check_var, > .fb_set_par = controlfb_set_par, > diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c > index 3a2d9ff0aa42..460826a7ad55 100644 > --- a/drivers/video/fbdev/cyber2000fb.c > +++ b/drivers/video/fbdev/cyber2000fb.c > @@ -1060,7 +1060,7 @@ static int cyber2000fb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops cyber2000fb_ops = { > +static const struct fb_ops cyber2000fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = cyber2000fb_check_var, > .fb_set_par = cyber2000fb_set_par, > diff --git a/drivers/video/fbdev/da8xx-fb.c b/drivers/video/fbdev/da8xx-fb.c > index 2d3dcc52fcf3..73c3c4c8cc12 100644 > --- a/drivers/video/fbdev/da8xx-fb.c > +++ b/drivers/video/fbdev/da8xx-fb.c > @@ -1294,7 +1294,7 @@ static int da8xxfb_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops da8xx_fb_ops = { > +static const struct fb_ops da8xx_fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = fb_check_var, > .fb_set_par = da8xxfb_set_par, > diff --git a/drivers/video/fbdev/dnfb.c b/drivers/video/fbdev/dnfb.c > index 8da517eaa4a3..3688f9165848 100644 > --- a/drivers/video/fbdev/dnfb.c > +++ b/drivers/video/fbdev/dnfb.c > @@ -108,7 +108,7 @@ > static int dnfb_blank(int blank, struct fb_info *info); > static void dnfb_copyarea(struct fb_info *info, const struct fb_copyarea *area); > > -static struct fb_ops dn_fb_ops = { > +static const struct fb_ops dn_fb_ops = { > .owner = THIS_MODULE, > .fb_blank = dnfb_blank, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c > index 51d97ec4f58f..f03f9fb60c26 100644 > --- a/drivers/video/fbdev/efifb.c > +++ b/drivers/video/fbdev/efifb.c > @@ -255,7 +255,7 @@ static void efifb_destroy(struct fb_info *info) > fb_dealloc_cmap(&info->cmap); > } > > -static struct fb_ops efifb_ops = { > +static const struct fb_ops efifb_ops = { > .owner = THIS_MODULE, > .fb_destroy = efifb_destroy, > .fb_setcolreg = efifb_setcolreg, > diff --git a/drivers/video/fbdev/ep93xx-fb.c b/drivers/video/fbdev/ep93xx-fb.c > index d04a047094fc..cda2ef337423 100644 > --- a/drivers/video/fbdev/ep93xx-fb.c > +++ b/drivers/video/fbdev/ep93xx-fb.c > @@ -402,7 +402,7 @@ static int ep93xxfb_setcolreg(unsigned int regno, unsigned int red, > return 0; > } > > -static struct fb_ops ep93xxfb_ops = { > +static const struct fb_ops ep93xxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = ep93xxfb_check_var, > .fb_set_par = ep93xxfb_set_par, > diff --git a/drivers/video/fbdev/fb-puv3.c b/drivers/video/fbdev/fb-puv3.c > index fa62c4dff7d1..75df6aabac21 100644 > --- a/drivers/video/fbdev/fb-puv3.c > +++ b/drivers/video/fbdev/fb-puv3.c > @@ -644,7 +644,7 @@ int unifb_mmap(struct fb_info *info, > return vm_iomap_memory(vma, info->fix.smem_start, info->fix.smem_len); > } > > -static struct fb_ops unifb_ops = { > +static const struct fb_ops unifb_ops = { > .fb_read = fb_sys_read, > .fb_write = fb_sys_write, > .fb_check_var = unifb_check_var, > diff --git a/drivers/video/fbdev/ffb.c b/drivers/video/fbdev/ffb.c > index cd2d1db239a2..948b73184433 100644 > --- a/drivers/video/fbdev/ffb.c > +++ b/drivers/video/fbdev/ffb.c > @@ -44,7 +44,7 @@ static int ffb_pan_display(struct fb_var_screeninfo *, struct fb_info *); > * Frame buffer operations > */ > > -static struct fb_ops ffb_ops = { > +static const struct fb_ops ffb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = ffb_setcolreg, > .fb_blank = ffb_blank, > diff --git a/drivers/video/fbdev/fm2fb.c b/drivers/video/fbdev/fm2fb.c > index ac7a4ebfd390..3b727d528fde 100644 > --- a/drivers/video/fbdev/fm2fb.c > +++ b/drivers/video/fbdev/fm2fb.c > @@ -165,7 +165,7 @@ static int fm2fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, > u_int transp, struct fb_info *info); > static int fm2fb_blank(int blank, struct fb_info *info); > > -static struct fb_ops fm2fb_ops = { > +static const struct fb_ops fm2fb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = fm2fb_setcolreg, > .fb_blank = fm2fb_blank, > diff --git a/drivers/video/fbdev/fsl-diu-fb.c b/drivers/video/fbdev/fsl-diu-fb.c > index d19f58263b4e..7cacabdd5f12 100644 > --- a/drivers/video/fbdev/fsl-diu-fb.c > +++ b/drivers/video/fbdev/fsl-diu-fb.c > @@ -1448,7 +1448,7 @@ static int fsl_diu_release(struct fb_info *info, int user) > return res; > } > > -static struct fb_ops fsl_diu_ops = { > +static const struct fb_ops fsl_diu_ops = { > .owner = THIS_MODULE, > .fb_check_var = fsl_diu_check_var, > .fb_set_par = fsl_diu_set_par, > diff --git a/drivers/video/fbdev/g364fb.c b/drivers/video/fbdev/g364fb.c > index 223896cc5f7d..845b79da2a7c 100644 > --- a/drivers/video/fbdev/g364fb.c > +++ b/drivers/video/fbdev/g364fb.c > @@ -111,7 +111,7 @@ static int g364fb_setcolreg(u_int regno, u_int red, u_int green, > static int g364fb_cursor(struct fb_info *info, struct fb_cursor *cursor); > static int g364fb_blank(int blank, struct fb_info *info); > > -static struct fb_ops g364fb_ops = { > +static const struct fb_ops g364fb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = g364fb_setcolreg, > .fb_pan_display = g364fb_pan_display, > diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c > index b9f6a82a0495..31270a8986e8 100644 > --- a/drivers/video/fbdev/gbefb.c > +++ b/drivers/video/fbdev/gbefb.c > @@ -1044,7 +1044,7 @@ static int gbefb_mmap(struct fb_info *info, > return 0; > } > > -static struct fb_ops gbefb_ops = { > +static const struct fb_ops gbefb_ops = { > .owner = THIS_MODULE, > .fb_check_var = gbefb_check_var, > .fb_set_par = gbefb_set_par, > diff --git a/drivers/video/fbdev/geode/gx1fb_core.c b/drivers/video/fbdev/geode/gx1fb_core.c > index 737e472fac14..5d34d89fb665 100644 > --- a/drivers/video/fbdev/geode/gx1fb_core.c > +++ b/drivers/video/fbdev/geode/gx1fb_core.c > @@ -252,7 +252,7 @@ static int parse_panel_option(struct fb_info *info) > return 0; > } > > -static struct fb_ops gx1fb_ops = { > +static const struct fb_ops gx1fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = gx1fb_check_var, > .fb_set_par = gx1fb_set_par, > diff --git a/drivers/video/fbdev/geode/gxfb_core.c b/drivers/video/fbdev/geode/gxfb_core.c > index 435ce2aa4240..d38a148d4746 100644 > --- a/drivers/video/fbdev/geode/gxfb_core.c > +++ b/drivers/video/fbdev/geode/gxfb_core.c > @@ -265,7 +265,7 @@ static int gxfb_map_video_memory(struct fb_info *info, struct pci_dev *dev) > return 0; > } > > -static struct fb_ops gxfb_ops = { > +static const struct fb_ops gxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = gxfb_check_var, > .fb_set_par = gxfb_set_par, > diff --git a/drivers/video/fbdev/geode/lxfb_core.c b/drivers/video/fbdev/geode/lxfb_core.c > index b0f07d676eb3..adc2d9c2395e 100644 > --- a/drivers/video/fbdev/geode/lxfb_core.c > +++ b/drivers/video/fbdev/geode/lxfb_core.c > @@ -386,7 +386,7 @@ static int lxfb_map_video_memory(struct fb_info *info, struct pci_dev *dev) > return 0; > } > > -static struct fb_ops lxfb_ops = { > +static const struct fb_ops lxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = lxfb_check_var, > .fb_set_par = lxfb_set_par, > diff --git a/drivers/video/fbdev/goldfishfb.c b/drivers/video/fbdev/goldfishfb.c > index f60ac276703d..9c83ec3f8e1f 100644 > --- a/drivers/video/fbdev/goldfishfb.c > +++ b/drivers/video/fbdev/goldfishfb.c > @@ -160,7 +160,7 @@ static int goldfish_fb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops goldfish_fb_ops = { > +static const struct fb_ops goldfish_fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = goldfish_fb_check_var, > .fb_set_par = goldfish_fb_set_par, > diff --git a/drivers/video/fbdev/grvga.c b/drivers/video/fbdev/grvga.c > index d22e8b0c906d..07dda03e0957 100644 > --- a/drivers/video/fbdev/grvga.c > +++ b/drivers/video/fbdev/grvga.c > @@ -251,7 +251,7 @@ static int grvga_pan_display(struct fb_var_screeninfo *var, > return 0; > } > > -static struct fb_ops grvga_ops = { > +static const struct fb_ops grvga_ops = { > .owner = THIS_MODULE, > .fb_check_var = grvga_check_var, > .fb_set_par = grvga_set_par, > diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c > index c7502fd8f447..13ded3a10708 100644 > --- a/drivers/video/fbdev/gxt4500.c > +++ b/drivers/video/fbdev/gxt4500.c > @@ -599,7 +599,7 @@ static const struct fb_fix_screeninfo gxt4500_fix = { > .mmio_len = 0x20000, > }; > > -static struct fb_ops gxt4500_ops = { > +static const struct fb_ops gxt4500_ops = { > .owner = THIS_MODULE, > .fb_check_var = gxt4500_check_var, > .fb_set_par = gxt4500_set_par, > diff --git a/drivers/video/fbdev/hecubafb.c b/drivers/video/fbdev/hecubafb.c > index 8577195cb533..00d77105161a 100644 > --- a/drivers/video/fbdev/hecubafb.c > +++ b/drivers/video/fbdev/hecubafb.c > @@ -197,7 +197,7 @@ static ssize_t hecubafb_write(struct fb_info *info, const char __user *buf, > return (err) ? err : count; > } > > -static struct fb_ops hecubafb_ops = { > +static const struct fb_ops hecubafb_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = hecubafb_write, > diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c > index 59e1cae57948..a45fcff1461f 100644 > --- a/drivers/video/fbdev/hgafb.c > +++ b/drivers/video/fbdev/hgafb.c > @@ -523,7 +523,7 @@ static void hgafb_imageblit(struct fb_info *info, const struct fb_image *image) > } > } > > -static struct fb_ops hgafb_ops = { > +static const struct fb_ops hgafb_ops = { > .owner = THIS_MODULE, > .fb_open = hgafb_open, > .fb_release = hgafb_release, > diff --git a/drivers/video/fbdev/hitfb.c b/drivers/video/fbdev/hitfb.c > index abe3e54d4506..009e5d2aa100 100644 > --- a/drivers/video/fbdev/hitfb.c > +++ b/drivers/video/fbdev/hitfb.c > @@ -311,7 +311,7 @@ static int hitfb_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops hitfb_ops = { > +static const struct fb_ops hitfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = hitfb_check_var, > .fb_set_par = hitfb_set_par, > diff --git a/drivers/video/fbdev/hpfb.c b/drivers/video/fbdev/hpfb.c > index a79af8f069d1..f02be0db335e 100644 > --- a/drivers/video/fbdev/hpfb.c > +++ b/drivers/video/fbdev/hpfb.c > @@ -184,7 +184,7 @@ static int hpfb_sync(struct fb_info *info) > return 0; > } > > -static struct fb_ops hpfb_ops = { > +static const struct fb_ops hpfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = hpfb_setcolreg, > .fb_blank = hpfb_blank, > diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c > index 2dcb7c58b31e..fcd546e5c031 100644 > --- a/drivers/video/fbdev/hyperv_fb.c > +++ b/drivers/video/fbdev/hyperv_fb.c > @@ -623,7 +623,7 @@ static void hvfb_cfb_imageblit(struct fb_info *p, > synthvid_update(p); > } > > -static struct fb_ops hvfb_ops = { > +static const struct fb_ops hvfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = hvfb_check_var, > .fb_set_par = hvfb_set_par, > diff --git a/drivers/video/fbdev/i740fb.c b/drivers/video/fbdev/i740fb.c > index 347cf8babc3e..c65ec7386e87 100644 > --- a/drivers/video/fbdev/i740fb.c > +++ b/drivers/video/fbdev/i740fb.c > @@ -981,7 +981,7 @@ static int i740fb_blank(int blank_mode, struct fb_info *info) > return (blank_mode = FB_BLANK_NORMAL) ? 1 : 0; > } > > -static struct fb_ops i740fb_ops = { > +static const struct fb_ops i740fb_ops = { > .owner = THIS_MODULE, > .fb_open = i740fb_open, > .fb_release = i740fb_release, > diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c > index 58b01c7d9056..3ac053b88495 100644 > --- a/drivers/video/fbdev/imsttfb.c > +++ b/drivers/video/fbdev/imsttfb.c > @@ -1333,7 +1333,7 @@ static struct pci_driver imsttfb_pci_driver = { > .remove = imsttfb_remove, > }; > > -static struct fb_ops imsttfb_ops = { > +static const struct fb_ops imsttfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = imsttfb_check_var, > .fb_set_par = imsttfb_set_par, > diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c > index b3286d1fa543..08a17eb2a5c7 100644 > --- a/drivers/video/fbdev/imxfb.c > +++ b/drivers/video/fbdev/imxfb.c > @@ -566,7 +566,7 @@ static int imxfb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops imxfb_ops = { > +static const struct fb_ops imxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = imxfb_check_var, > .fb_set_par = imxfb_set_par, > diff --git a/drivers/video/fbdev/intelfb/intelfbdrv.c b/drivers/video/fbdev/intelfb/intelfbdrv.c > index a76c61512c60..c744891781a5 100644 > --- a/drivers/video/fbdev/intelfb/intelfbdrv.c > +++ b/drivers/video/fbdev/intelfb/intelfbdrv.c > @@ -193,7 +193,7 @@ static const struct pci_device_id intelfb_pci_table[] = { > static int num_registered = 0; > > /* fb ops */ > -static struct fb_ops intel_fb_ops = { > +static const struct fb_ops intel_fb_ops = { > .owner = THIS_MODULE, > .fb_open = intelfb_open, > .fb_release = intelfb_release, > diff --git a/drivers/video/fbdev/kyro/fbdev.c b/drivers/video/fbdev/kyro/fbdev.c > index a7bd9f25911b..72dff2e42e3a 100644 > --- a/drivers/video/fbdev/kyro/fbdev.c > +++ b/drivers/video/fbdev/kyro/fbdev.c > @@ -648,7 +648,7 @@ static struct pci_driver kyrofb_pci_driver = { > .remove = kyrofb_remove, > }; > > -static struct fb_ops kyrofb_ops = { > +static const struct fb_ops kyrofb_ops = { > .owner = THIS_MODULE, > .fb_check_var = kyrofb_check_var, > .fb_set_par = kyrofb_set_par, > diff --git a/drivers/video/fbdev/leo.c b/drivers/video/fbdev/leo.c > index 5b1141ac182b..40b11cce0ad6 100644 > --- a/drivers/video/fbdev/leo.c > +++ b/drivers/video/fbdev/leo.c > @@ -39,7 +39,7 @@ static int leo_pan_display(struct fb_var_screeninfo *, struct fb_info *); > * Frame buffer operations > */ > > -static struct fb_ops leo_ops = { > +static const struct fb_ops leo_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = leo_setcolreg, > .fb_blank = leo_blank, > diff --git a/drivers/video/fbdev/macfb.c b/drivers/video/fbdev/macfb.c > index 9a6feee96133..e05a97662ca8 100644 > --- a/drivers/video/fbdev/macfb.c > +++ b/drivers/video/fbdev/macfb.c > @@ -496,7 +496,7 @@ static int macfb_setcolreg(unsigned regno, unsigned red, unsigned green, > return 0; > } > > -static struct fb_ops macfb_ops = { > +static const struct fb_ops macfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = macfb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/matrox/matroxfb_crtc2.c b/drivers/video/fbdev/matrox/matroxfb_crtc2.c > index d2a81a2c3ac0..7655afa3fd50 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_crtc2.c > +++ b/drivers/video/fbdev/matrox/matroxfb_crtc2.c > @@ -563,7 +563,7 @@ static int matroxfb_dh_blank(int blank, struct fb_info* info) { > #undef m2info > } > > -static struct fb_ops matroxfb_dh_ops = { > +static const struct fb_ops matroxfb_dh_ops = { > .owner = THIS_MODULE, > .fb_open = matroxfb_dh_open, > .fb_release = matroxfb_dh_release, > diff --git a/drivers/video/fbdev/maxinefb.c b/drivers/video/fbdev/maxinefb.c > index 5bb1b5c308a7..ae1a42bcb0ea 100644 > --- a/drivers/video/fbdev/maxinefb.c > +++ b/drivers/video/fbdev/maxinefb.c > @@ -105,7 +105,7 @@ static int maxinefb_setcolreg(unsigned regno, unsigned red, unsigned green, > return 0; > } > > -static struct fb_ops maxinefb_ops = { > +static const struct fb_ops maxinefb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = maxinefb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/mbx/mbxfb.c b/drivers/video/fbdev/mbx/mbxfb.c > index 50935252b50b..25dad4507d77 100644 > --- a/drivers/video/fbdev/mbx/mbxfb.c > +++ b/drivers/video/fbdev/mbx/mbxfb.c > @@ -671,7 +671,7 @@ static int mbxfb_ioctl(struct fb_info *info, unsigned int cmd, > return -EINVAL; > } > > -static struct fb_ops mbxfb_ops = { > +static const struct fb_ops mbxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = mbxfb_check_var, > .fb_set_par = mbxfb_set_par, > diff --git a/drivers/video/fbdev/metronomefb.c b/drivers/video/fbdev/metronomefb.c > index bb4fee52e501..a42e2eceee48 100644 > --- a/drivers/video/fbdev/metronomefb.c > +++ b/drivers/video/fbdev/metronomefb.c > @@ -558,7 +558,7 @@ static ssize_t metronomefb_write(struct fb_info *info, const char __user *buf, > return (err) ? err : count; > } > > -static struct fb_ops metronomefb_ops = { > +static const struct fb_ops metronomefb_ops = { > .owner = THIS_MODULE, > .fb_write = metronomefb_write, > .fb_fillrect = metronomefb_fillrect, > diff --git a/drivers/video/fbdev/mmp/fb/mmpfb.c b/drivers/video/fbdev/mmp/fb/mmpfb.c > index 47bc7c59bbd8..33db0850086f 100644 > --- a/drivers/video/fbdev/mmp/fb/mmpfb.c > +++ b/drivers/video/fbdev/mmp/fb/mmpfb.c > @@ -454,7 +454,7 @@ static int mmpfb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops mmpfb_ops = { > +static const struct fb_ops mmpfb_ops = { > .owner = THIS_MODULE, > .fb_blank = mmpfb_blank, > .fb_check_var = mmpfb_check_var, > diff --git a/drivers/video/fbdev/mx3fb.c b/drivers/video/fbdev/mx3fb.c > index bafd5f5fac5a..4af28e4421e5 100644 > --- a/drivers/video/fbdev/mx3fb.c > +++ b/drivers/video/fbdev/mx3fb.c > @@ -1249,7 +1249,7 @@ static int mx3fb_pan_display(struct fb_var_screeninfo *var, > * invoked by the core framebuffer driver to perform operations like > * blitting, rectangle filling, copy regions and cursor definition. > */ > -static struct fb_ops mx3fb_ops = { > +static const struct fb_ops mx3fb_ops = { > .owner = THIS_MODULE, > .fb_set_par = mx3fb_set_par, > .fb_check_var = mx3fb_check_var, > @@ -1389,7 +1389,8 @@ static int mx3fb_unmap_video_memory(struct fb_info *fbi) > * mx3fb_init_fbinfo() - initialize framebuffer information object. > * @return: initialized framebuffer structure. > */ > -static struct fb_info *mx3fb_init_fbinfo(struct device *dev, struct fb_ops *ops) > +static struct fb_info *mx3fb_init_fbinfo(struct device *dev, > + const struct fb_ops *ops) > { > struct fb_info *fbi; > struct mx3fb_info *mx3fbi; > diff --git a/drivers/video/fbdev/neofb.c b/drivers/video/fbdev/neofb.c > index b770946a0920..e6ea853c1723 100644 > --- a/drivers/video/fbdev/neofb.c > +++ b/drivers/video/fbdev/neofb.c > @@ -1610,7 +1610,7 @@ neofb_cursor(struct fb_info *info, struct fb_cursor *cursor) > } > */ > > -static struct fb_ops neofb_ops = { > +static const struct fb_ops neofb_ops = { > .owner = THIS_MODULE, > .fb_open = neofb_open, > .fb_release = neofb_release, > diff --git a/drivers/video/fbdev/ocfb.c b/drivers/video/fbdev/ocfb.c > index a970edc2a6f8..c8cee2d890dc 100644 > --- a/drivers/video/fbdev/ocfb.c > +++ b/drivers/video/fbdev/ocfb.c > @@ -285,7 +285,7 @@ static int ocfb_init_var(struct ocfb_dev *fbdev) > return 0; > } > > -static struct fb_ops ocfb_ops = { > +static const struct fb_ops ocfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = ocfb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/offb.c b/drivers/video/fbdev/offb.c > index fbc6eafb63c7..5cd0f5f6a4ae 100644 > --- a/drivers/video/fbdev/offb.c > +++ b/drivers/video/fbdev/offb.c > @@ -286,7 +286,7 @@ static void offb_destroy(struct fb_info *info) > framebuffer_release(info); > } > > -static struct fb_ops offb_ops = { > +static const struct fb_ops offb_ops = { > .owner = THIS_MODULE, > .fb_destroy = offb_destroy, > .fb_setcolreg = offb_setcolreg, > diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c > index 858c2c011d19..8dfa9158ba78 100644 > --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c > +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c > @@ -1280,7 +1280,7 @@ ssize_t omapfb_write(struct fb_info *info, const char __user *buf, > } > #endif > > -static struct fb_ops omapfb_ops = { > +static const struct fb_ops omapfb_ops = { > .owner = THIS_MODULE, > .fb_open = omapfb_open, > .fb_release = omapfb_release, > diff --git a/drivers/video/fbdev/p9100.c b/drivers/video/fbdev/p9100.c > index 8c18cc51aae2..6da672e92643 100644 > --- a/drivers/video/fbdev/p9100.c > +++ b/drivers/video/fbdev/p9100.c > @@ -37,7 +37,7 @@ static int p9100_ioctl(struct fb_info *, unsigned int, unsigned long); > * Frame buffer operations > */ > > -static struct fb_ops p9100_ops = { > +static const struct fb_ops p9100_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = p9100_setcolreg, > .fb_blank = p9100_blank, > diff --git a/drivers/video/fbdev/platinumfb.c b/drivers/video/fbdev/platinumfb.c > index 632b246ca35f..ce413a9df06e 100644 > --- a/drivers/video/fbdev/platinumfb.c > +++ b/drivers/video/fbdev/platinumfb.c > @@ -96,7 +96,7 @@ static int platinum_var_to_par(struct fb_var_screeninfo *var, > * Interface used by the world > */ > > -static struct fb_ops platinumfb_ops = { > +static const struct fb_ops platinumfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = platinumfb_check_var, > .fb_set_par = platinumfb_set_par, > diff --git a/drivers/video/fbdev/pm2fb.c b/drivers/video/fbdev/pm2fb.c > index 1dcf02e12af4..8f933bad461c 100644 > --- a/drivers/video/fbdev/pm2fb.c > +++ b/drivers/video/fbdev/pm2fb.c > @@ -1483,7 +1483,7 @@ static int pm2fb_cursor(struct fb_info *info, struct fb_cursor *cursor) > * Frame buffer operations > */ > > -static struct fb_ops pm2fb_ops = { > +static const struct fb_ops pm2fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = pm2fb_check_var, > .fb_set_par = pm2fb_set_par, > diff --git a/drivers/video/fbdev/pm3fb.c b/drivers/video/fbdev/pm3fb.c > index 6130aa56a1e9..15a2b495235b 100644 > --- a/drivers/video/fbdev/pm3fb.c > +++ b/drivers/video/fbdev/pm3fb.c > @@ -1200,7 +1200,7 @@ static int pm3fb_blank(int blank_mode, struct fb_info *info) > * Frame buffer operations > */ > > -static struct fb_ops pm3fb_ops = { > +static const struct fb_ops pm3fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = pm3fb_check_var, > .fb_set_par = pm3fb_set_par, > diff --git a/drivers/video/fbdev/pmag-aa-fb.c b/drivers/video/fbdev/pmag-aa-fb.c > index d1e78ce3a9c2..7b33b52b2526 100644 > --- a/drivers/video/fbdev/pmag-aa-fb.c > +++ b/drivers/video/fbdev/pmag-aa-fb.c > @@ -147,7 +147,7 @@ static int aafb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops aafb_ops = { > +static const struct fb_ops aafb_ops = { > .owner = THIS_MODULE, > .fb_blank = aafb_blank, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/pmag-ba-fb.c b/drivers/video/fbdev/pmag-ba-fb.c > index 56b912bb28de..a60e56d8980b 100644 > --- a/drivers/video/fbdev/pmag-ba-fb.c > +++ b/drivers/video/fbdev/pmag-ba-fb.c > @@ -117,7 +117,7 @@ static int pmagbafb_setcolreg(unsigned int regno, unsigned int red, > return 0; > } > > -static struct fb_ops pmagbafb_ops = { > +static const struct fb_ops pmagbafb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = pmagbafb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/pmagb-b-fb.c b/drivers/video/fbdev/pmagb-b-fb.c > index 2822b2225924..f02080f21077 100644 > --- a/drivers/video/fbdev/pmagb-b-fb.c > +++ b/drivers/video/fbdev/pmagb-b-fb.c > @@ -121,7 +121,7 @@ static int pmagbbfb_setcolreg(unsigned int regno, unsigned int red, > return 0; > } > > -static struct fb_ops pmagbbfb_ops = { > +static const struct fb_ops pmagbbfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = pmagbbfb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c > index 5ed2db39d823..834f63edf700 100644 > --- a/drivers/video/fbdev/ps3fb.c > +++ b/drivers/video/fbdev/ps3fb.c > @@ -934,7 +934,7 @@ static irqreturn_t ps3fb_vsync_interrupt(int irq, void *ptr) > } > > > -static struct fb_ops ps3fb_ops = { > +static const struct fb_ops ps3fb_ops = { > .fb_open = ps3fb_open, > .fb_release = ps3fb_release, > .fb_read = fb_sys_read, > diff --git a/drivers/video/fbdev/pvr2fb.c b/drivers/video/fbdev/pvr2fb.c > index 0a3b2b7c7891..fcb16eabbb0d 100644 > --- a/drivers/video/fbdev/pvr2fb.c > +++ b/drivers/video/fbdev/pvr2fb.c > @@ -707,7 +707,7 @@ static ssize_t pvr2fb_write(struct fb_info *info, const char *buf, > } > #endif /* CONFIG_PVR2_DMA */ > > -static struct fb_ops pvr2fb_ops = { > +static const struct fb_ops pvr2fb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = pvr2fb_setcolreg, > .fb_blank = pvr2fb_blank, > diff --git a/drivers/video/fbdev/pxa168fb.c b/drivers/video/fbdev/pxa168fb.c > index 1410f476e135..c672c3354a2c 100644 > --- a/drivers/video/fbdev/pxa168fb.c > +++ b/drivers/video/fbdev/pxa168fb.c > @@ -545,7 +545,7 @@ static irqreturn_t pxa168fb_handle_irq(int irq, void *dev_id) > return IRQ_NONE; > } > > -static struct fb_ops pxa168fb_ops = { > +static const struct fb_ops pxa168fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = pxa168fb_check_var, > .fb_set_par = pxa168fb_set_par, > diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c > index f70c9f79622e..6f7e9fb63190 100644 > --- a/drivers/video/fbdev/pxafb.c > +++ b/drivers/video/fbdev/pxafb.c > @@ -597,7 +597,7 @@ static int pxafb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops pxafb_ops = { > +static const struct fb_ops pxafb_ops = { > .owner = THIS_MODULE, > .fb_check_var = pxafb_check_var, > .fb_set_par = pxafb_set_par, > @@ -865,7 +865,7 @@ static int overlayfb_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops overlay_fb_ops = { > +static const struct fb_ops overlay_fb_ops = { > .owner = THIS_MODULE, > .fb_open = overlayfb_open, > .fb_release = overlayfb_release, > diff --git a/drivers/video/fbdev/q40fb.c b/drivers/video/fbdev/q40fb.c > index 0b93aa964d43..79ff14a35c85 100644 > --- a/drivers/video/fbdev/q40fb.c > +++ b/drivers/video/fbdev/q40fb.c > @@ -75,7 +75,7 @@ static int q40fb_setcolreg(unsigned regno, unsigned red, unsigned green, > return 0; > } > > -static struct fb_ops q40fb_ops = { > +static const struct fb_ops q40fb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = q40fb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/riva/fbdev.c b/drivers/video/fbdev/riva/fbdev.c > index ca593a3e41d7..764ec3285e62 100644 > --- a/drivers/video/fbdev/riva/fbdev.c > +++ b/drivers/video/fbdev/riva/fbdev.c > @@ -1673,7 +1673,7 @@ static int rivafb_sync(struct fb_info *info) > * ------------------------------------------------------------------------- */ > > /* kernel interface */ > -static struct fb_ops riva_fb_ops = { > +static const struct fb_ops riva_fb_ops = { > .owner = THIS_MODULE, > .fb_open = rivafb_open, > .fb_release = rivafb_release, > diff --git a/drivers/video/fbdev/s3c-fb.c b/drivers/video/fbdev/s3c-fb.c > index ba04d7a67829..f4871c430f8d 100644 > --- a/drivers/video/fbdev/s3c-fb.c > +++ b/drivers/video/fbdev/s3c-fb.c > @@ -1035,7 +1035,7 @@ static int s3c_fb_ioctl(struct fb_info *info, unsigned int cmd, > return ret; > } > > -static struct fb_ops s3c_fb_ops = { > +static const struct fb_ops s3c_fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = s3c_fb_check_var, > .fb_set_par = s3c_fb_set_par, > diff --git a/drivers/video/fbdev/s3c2410fb.c b/drivers/video/fbdev/s3c2410fb.c > index a702da89910b..2fb15a540167 100644 > --- a/drivers/video/fbdev/s3c2410fb.c > +++ b/drivers/video/fbdev/s3c2410fb.c > @@ -618,7 +618,7 @@ static int s3c2410fb_debug_store(struct device *dev, > > static DEVICE_ATTR(debug, 0664, s3c2410fb_debug_show, s3c2410fb_debug_store); > > -static struct fb_ops s3c2410fb_ops = { > +static const struct fb_ops s3c2410fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = s3c2410fb_check_var, > .fb_set_par = s3c2410fb_set_par, > diff --git a/drivers/video/fbdev/s3fb.c b/drivers/video/fbdev/s3fb.c > index be16c349c10f..60c424fae988 100644 > --- a/drivers/video/fbdev/s3fb.c > +++ b/drivers/video/fbdev/s3fb.c > @@ -1037,7 +1037,7 @@ static int s3fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) > > /* Frame buffer operations */ > > -static struct fb_ops s3fb_ops = { > +static const struct fb_ops s3fb_ops = { > .owner = THIS_MODULE, > .fb_open = s3fb_open, > .fb_release = s3fb_release, > diff --git a/drivers/video/fbdev/sa1100fb.c b/drivers/video/fbdev/sa1100fb.c > index 81ad3aa1ca06..4680cc3efb81 100644 > --- a/drivers/video/fbdev/sa1100fb.c > +++ b/drivers/video/fbdev/sa1100fb.c > @@ -574,7 +574,7 @@ static int sa1100fb_mmap(struct fb_info *info, > return vm_iomap_memory(vma, info->fix.mmio_start, info->fix.mmio_len); > } > > -static struct fb_ops sa1100fb_ops = { > +static const struct fb_ops sa1100fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = sa1100fb_check_var, > .fb_set_par = sa1100fb_set_par, > diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c > index 512789f5f884..aab312a7d9da 100644 > --- a/drivers/video/fbdev/savage/savagefb_driver.c > +++ b/drivers/video/fbdev/savage/savagefb_driver.c > @@ -1637,7 +1637,7 @@ static int savagefb_release(struct fb_info *info, int user) > return 0; > } > > -static struct fb_ops savagefb_ops = { > +static const struct fb_ops savagefb_ops = { > .owner = THIS_MODULE, > .fb_open = savagefb_open, > .fb_release = savagefb_release, > diff --git a/drivers/video/fbdev/sh7760fb.c b/drivers/video/fbdev/sh7760fb.c > index ab8fe838c776..b8ec8d9bb4c8 100644 > --- a/drivers/video/fbdev/sh7760fb.c > +++ b/drivers/video/fbdev/sh7760fb.c > @@ -341,7 +341,7 @@ static int sh7760fb_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops sh7760fb_ops = { > +static const struct fb_ops sh7760fb_ops = { > .owner = THIS_MODULE, > .fb_blank = sh7760fb_blank, > .fb_check_var = sh7760fb_check_var, > diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c > index c249763dbf0b..25f119efebc0 100644 > --- a/drivers/video/fbdev/sh_mobile_lcdcfb.c > +++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c > @@ -1490,7 +1490,7 @@ sh_mobile_lcdc_overlay_mmap(struct fb_info *info, struct vm_area_struct *vma) > ovl->dma_handle, ovl->fb_size); > } > > -static struct fb_ops sh_mobile_lcdc_overlay_ops = { > +static const struct fb_ops sh_mobile_lcdc_overlay_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = fb_sys_write, > @@ -1964,7 +1964,7 @@ sh_mobile_lcdc_mmap(struct fb_info *info, struct vm_area_struct *vma) > ch->dma_handle, ch->fb_size); > } > > -static struct fb_ops sh_mobile_lcdc_ops = { > +static const struct fb_ops sh_mobile_lcdc_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = sh_mobile_lcdc_setcolreg, > .fb_read = fb_sys_read, > diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c > index 7dc0105f700d..533a047d07a2 100644 > --- a/drivers/video/fbdev/simplefb.c > +++ b/drivers/video/fbdev/simplefb.c > @@ -78,7 +78,7 @@ static void simplefb_destroy(struct fb_info *info) > iounmap(info->screen_base); > } > > -static struct fb_ops simplefb_ops = { > +static const struct fb_ops simplefb_ops = { > .owner = THIS_MODULE, > .fb_destroy = simplefb_destroy, > .fb_setcolreg = simplefb_setcolreg, > diff --git a/drivers/video/fbdev/sis/sis_main.c b/drivers/video/fbdev/sis/sis_main.c > index b443a8ed4600..ac140962b1bf 100644 > --- a/drivers/video/fbdev/sis/sis_main.c > +++ b/drivers/video/fbdev/sis/sis_main.c > @@ -1906,7 +1906,7 @@ sisfb_get_fix(struct fb_fix_screeninfo *fix, int con, struct fb_info *info) > > /* ---------------- fb_ops structures ----------------- */ > > -static struct fb_ops sisfb_ops = { > +static const struct fb_ops sisfb_ops = { > .owner = THIS_MODULE, > .fb_open = sisfb_open, > .fb_release = sisfb_release, > diff --git a/drivers/video/fbdev/skeletonfb.c b/drivers/video/fbdev/skeletonfb.c > index 812a36cb60c3..bcacfb6934fa 100644 > --- a/drivers/video/fbdev/skeletonfb.c > +++ b/drivers/video/fbdev/skeletonfb.c > @@ -634,7 +634,7 @@ int xxxfb_sync(struct fb_info *info) > * Frame buffer operations > */ > > -static struct fb_ops xxxfb_ops = { > +static const struct fb_ops xxxfb_ops = { > .owner = THIS_MODULE, > .fb_open = xxxfb_open, > .fb_read = xxxfb_read, > diff --git a/drivers/video/fbdev/sm712fb.c b/drivers/video/fbdev/sm712fb.c > index 207d0add684b..6a1b4a853d9e 100644 > --- a/drivers/video/fbdev/sm712fb.c > +++ b/drivers/video/fbdev/sm712fb.c > @@ -1369,7 +1369,7 @@ static int smtc_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops smtcfb_ops = { > +static const struct fb_ops smtcfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = smtc_check_var, > .fb_set_par = smtc_set_par, > diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c > index e362d7da87fc..bfac3ee4a642 100644 > --- a/drivers/video/fbdev/smscufx.c > +++ b/drivers/video/fbdev/smscufx.c > @@ -1268,7 +1268,7 @@ static int ufx_ops_blank(int blank_mode, struct fb_info *info) > return 0; > } > > -static struct fb_ops ufx_ops = { > +static const struct fb_ops ufx_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = ufx_ops_write, > diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c > index 78ca7ffc40c2..142535267fec 100644 > --- a/drivers/video/fbdev/ssd1307fb.c > +++ b/drivers/video/fbdev/ssd1307fb.c > @@ -280,7 +280,7 @@ static void ssd1307fb_imageblit(struct fb_info *info, const struct fb_image *ima > ssd1307fb_update_display(par); > } > > -static struct fb_ops ssd1307fb_ops = { > +static const struct fb_ops ssd1307fb_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = ssd1307fb_write, > diff --git a/drivers/video/fbdev/sstfb.c b/drivers/video/fbdev/sstfb.c > index 4e22ae383c87..82e707a48e4e 100644 > --- a/drivers/video/fbdev/sstfb.c > +++ b/drivers/video/fbdev/sstfb.c > @@ -1307,7 +1307,7 @@ static int sstfb_setup(char *options) > } > > > -static struct fb_ops sstfb_ops = { > +static const struct fb_ops sstfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = sstfb_check_var, > .fb_set_par = sstfb_set_par, > diff --git a/drivers/video/fbdev/stifb.c b/drivers/video/fbdev/stifb.c > index 9e88e3f594c2..5400ab79fbbd 100644 > --- a/drivers/video/fbdev/stifb.c > +++ b/drivers/video/fbdev/stifb.c > @@ -1101,7 +1101,7 @@ stifb_init_display(struct stifb_info *fb) > > /* ------------ Interfaces to hardware functions ------------ */ > > -static struct fb_ops stifb_ops = { > +static const struct fb_ops stifb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = stifb_setcolreg, > .fb_blank = stifb_blank, > diff --git a/drivers/video/fbdev/sunxvr1000.c b/drivers/video/fbdev/sunxvr1000.c > index 784c9bd5d502..15b079505a00 100644 > --- a/drivers/video/fbdev/sunxvr1000.c > +++ b/drivers/video/fbdev/sunxvr1000.c > @@ -59,7 +59,7 @@ static int gfb_setcolreg(unsigned regno, > return 0; > } > > -static struct fb_ops gfb_ops = { > +static const struct fb_ops gfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = gfb_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/sunxvr2500.c b/drivers/video/fbdev/sunxvr2500.c > index 31683e5a8b79..1d3bacd9d5ac 100644 > --- a/drivers/video/fbdev/sunxvr2500.c > +++ b/drivers/video/fbdev/sunxvr2500.c > @@ -63,7 +63,7 @@ static int s3d_setcolreg(unsigned regno, > return 0; > } > > -static struct fb_ops s3d_ops = { > +static const struct fb_ops s3d_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = s3d_setcolreg, > .fb_fillrect = cfb_fillrect, > diff --git a/drivers/video/fbdev/sunxvr500.c b/drivers/video/fbdev/sunxvr500.c > index d392976126a6..9daf17b11106 100644 > --- a/drivers/video/fbdev/sunxvr500.c > +++ b/drivers/video/fbdev/sunxvr500.c > @@ -186,7 +186,7 @@ static void e3d_copyarea(struct fb_info *info, const struct fb_copyarea *area) > spin_unlock_irqrestore(&ep->lock, flags); > } > > -static struct fb_ops e3d_ops = { > +static const struct fb_ops e3d_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = e3d_setcolreg, > .fb_fillrect = e3d_fillrect, > diff --git a/drivers/video/fbdev/tcx.c b/drivers/video/fbdev/tcx.c > index 7897f86fb23e..34b2e5b6e84a 100644 > --- a/drivers/video/fbdev/tcx.c > +++ b/drivers/video/fbdev/tcx.c > @@ -40,7 +40,7 @@ static int tcx_pan_display(struct fb_var_screeninfo *, struct fb_info *); > * Frame buffer operations > */ > > -static struct fb_ops tcx_ops = { > +static const struct fb_ops tcx_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = tcx_setcolreg, > .fb_blank = tcx_blank, > diff --git a/drivers/video/fbdev/tdfxfb.c b/drivers/video/fbdev/tdfxfb.c > index fdbb1ea66e6c..0349cf69652f 100644 > --- a/drivers/video/fbdev/tdfxfb.c > +++ b/drivers/video/fbdev/tdfxfb.c > @@ -1141,7 +1141,7 @@ static int tdfxfb_cursor(struct fb_info *info, struct fb_cursor *cursor) > return 0; > } > > -static struct fb_ops tdfxfb_ops = { > +static const struct fb_ops tdfxfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = tdfxfb_check_var, > .fb_set_par = tdfxfb_set_par, > diff --git a/drivers/video/fbdev/tgafb.c b/drivers/video/fbdev/tgafb.c > index 286b2371c7dd..7cd262858241 100644 > --- a/drivers/video/fbdev/tgafb.c > +++ b/drivers/video/fbdev/tgafb.c > @@ -70,7 +70,7 @@ static struct tc_driver tgafb_tc_driver; > * Frame buffer operations > */ > > -static struct fb_ops tgafb_ops = { > +static const struct fb_ops tgafb_ops = { > .owner = THIS_MODULE, > .fb_check_var = tgafb_check_var, > .fb_set_par = tgafb_set_par, > diff --git a/drivers/video/fbdev/tmiofb.c b/drivers/video/fbdev/tmiofb.c > index 4f2fcea10d2b..50111966c981 100644 > --- a/drivers/video/fbdev/tmiofb.c > +++ b/drivers/video/fbdev/tmiofb.c > @@ -646,7 +646,7 @@ static int tmiofb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops tmiofb_ops = { > +static const struct fb_ops tmiofb_ops = { > .owner = THIS_MODULE, > > .fb_ioctl = tmiofb_ioctl, > diff --git a/drivers/video/fbdev/tridentfb.c b/drivers/video/fbdev/tridentfb.c > index da74bf6c5996..715509917eaa 100644 > --- a/drivers/video/fbdev/tridentfb.c > +++ b/drivers/video/fbdev/tridentfb.c > @@ -1443,7 +1443,7 @@ static int tridentfb_blank(int blank_mode, struct fb_info *info) > return (blank_mode = FB_BLANK_NORMAL) ? 1 : 0; > } > > -static struct fb_ops tridentfb_ops = { > +static const struct fb_ops tridentfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = tridentfb_setcolreg, > .fb_pan_display = tridentfb_pan_display, > diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c > index e04fde9c1fcd..ca8d7343aaa1 100644 > --- a/drivers/video/fbdev/valkyriefb.c > +++ b/drivers/video/fbdev/valkyriefb.c > @@ -113,7 +113,7 @@ static int valkyrie_init_info(struct fb_info *info, struct fb_info_valkyrie *p); > static void valkyrie_par_to_fix(struct fb_par_valkyrie *par, struct fb_fix_screeninfo *fix); > static void valkyrie_init_fix(struct fb_fix_screeninfo *fix, struct fb_info_valkyrie *p); > > -static struct fb_ops valkyriefb_ops = { > +static const struct fb_ops valkyriefb_ops = { > .owner = THIS_MODULE, > .fb_check_var = valkyriefb_check_var, > .fb_set_par = valkyriefb_set_par, > diff --git a/drivers/video/fbdev/vfb.c b/drivers/video/fbdev/vfb.c > index 54127905bfe7..95d3c59867d0 100644 > --- a/drivers/video/fbdev/vfb.c > +++ b/drivers/video/fbdev/vfb.c > @@ -78,7 +78,7 @@ static int vfb_pan_display(struct fb_var_screeninfo *var, > static int vfb_mmap(struct fb_info *info, > struct vm_area_struct *vma); > > -static struct fb_ops vfb_ops = { > +static const struct fb_ops vfb_ops = { > .fb_read = fb_sys_read, > .fb_write = fb_sys_write, > .fb_check_var = vfb_check_var, > diff --git a/drivers/video/fbdev/vga16fb.c b/drivers/video/fbdev/vga16fb.c > index 2c6a576ed84c..a20eeb8308ff 100644 > --- a/drivers/video/fbdev/vga16fb.c > +++ b/drivers/video/fbdev/vga16fb.c > @@ -1270,7 +1270,7 @@ static void vga16fb_destroy(struct fb_info *info) > framebuffer_release(info); > } > > -static struct fb_ops vga16fb_ops = { > +static const struct fb_ops vga16fb_ops = { > .owner = THIS_MODULE, > .fb_open = vga16fb_open, > .fb_release = vga16fb_release, > diff --git a/drivers/video/fbdev/vt8500lcdfb.c b/drivers/video/fbdev/vt8500lcdfb.c > index be8d9702cbb2..f744479dc7df 100644 > --- a/drivers/video/fbdev/vt8500lcdfb.c > +++ b/drivers/video/fbdev/vt8500lcdfb.c > @@ -238,7 +238,7 @@ static int vt8500lcd_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops vt8500lcd_ops = { > +static const struct fb_ops vt8500lcd_ops = { > .owner = THIS_MODULE, > .fb_set_par = vt8500lcd_set_par, > .fb_setcolreg = vt8500lcd_setcolreg, > diff --git a/drivers/video/fbdev/vt8623fb.c b/drivers/video/fbdev/vt8623fb.c > index c339a8fbad81..7b3eef1b893f 100644 > --- a/drivers/video/fbdev/vt8623fb.c > +++ b/drivers/video/fbdev/vt8623fb.c > @@ -634,7 +634,7 @@ static int vt8623fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *i > > /* Frame buffer operations */ > > -static struct fb_ops vt8623fb_ops = { > +static const struct fb_ops vt8623fb_ops = { > .owner = THIS_MODULE, > .fb_open = vt8623fb_open, > .fb_release = vt8623fb_release, > diff --git a/drivers/video/fbdev/w100fb.c b/drivers/video/fbdev/w100fb.c > index 3be07807edcd..fe628ec20149 100644 > --- a/drivers/video/fbdev/w100fb.c > +++ b/drivers/video/fbdev/w100fb.c > @@ -549,7 +549,7 @@ static int w100fb_set_par(struct fb_info *info) > /* > * Frame buffer operations > */ > -static struct fb_ops w100fb_ops = { > +static const struct fb_ops w100fb_ops = { > .owner = THIS_MODULE, > .fb_check_var = w100fb_check_var, > .fb_set_par = w100fb_set_par, > diff --git a/drivers/video/fbdev/wm8505fb.c b/drivers/video/fbdev/wm8505fb.c > index 17c780315ca5..b656eff58c23 100644 > --- a/drivers/video/fbdev/wm8505fb.c > +++ b/drivers/video/fbdev/wm8505fb.c > @@ -246,7 +246,7 @@ static int wm8505fb_blank(int blank, struct fb_info *info) > return 0; > } > > -static struct fb_ops wm8505fb_ops = { > +static const struct fb_ops wm8505fb_ops = { > .owner = THIS_MODULE, > .fb_set_par = wm8505fb_set_par, > .fb_setcolreg = wm8505fb_setcolreg, > diff --git a/drivers/video/fbdev/xen-fbfront.c b/drivers/video/fbdev/xen-fbfront.c > index a3d6b6db221b..00307b8693bf 100644 > --- a/drivers/video/fbdev/xen-fbfront.c > +++ b/drivers/video/fbdev/xen-fbfront.c > @@ -328,7 +328,7 @@ static int xenfb_set_par(struct fb_info *info) > return 0; > } > > -static struct fb_ops xenfb_fb_ops = { > +static const struct fb_ops xenfb_fb_ops = { > .owner = THIS_MODULE, > .fb_read = fb_sys_read, > .fb_write = xenfb_write, > diff --git a/drivers/video/fbdev/xilinxfb.c b/drivers/video/fbdev/xilinxfb.c > index 8628829b470d..ca4ff658cad0 100644 > --- a/drivers/video/fbdev/xilinxfb.c > +++ b/drivers/video/fbdev/xilinxfb.c > @@ -247,7 +247,7 @@ xilinx_fb_blank(int blank_mode, struct fb_info *fbi) > return 0; /* success */ > } > > -static struct fb_ops xilinxfb_ops = { > +static const struct fb_ops xilinxfb_ops = { > .owner = THIS_MODULE, > .fb_setcolreg = xilinx_fb_setcolreg, > .fb_blank = xilinx_fb_blank, -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DF318C43603 for ; Thu, 5 Dec 2019 09:37:16 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BA9582464D for ; Thu, 5 Dec 2019 09:37:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BA9582464D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DAAAF6F628; Thu, 5 Dec 2019 09:37:15 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 922596F628; Thu, 5 Dec 2019 09:37:14 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2019 01:37:13 -0800 X-IronPort-AV: E=Sophos;i="5.69,280,1571727600"; d="scan'208";a="205714654" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2019 01:37:10 -0800 From: Jani Nikula To: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Subject: Re: [Intel-gfx] [PATCH v3 08/12] video: constify fb ops across all drivers In-Reply-To: Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: Date: Thu, 05 Dec 2019 11:37:07 +0200 Message-ID: <875zivi058.fsf@intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVHVlLCAwMyBEZWMgMjAxOSwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4g d3JvdGU6Cj4gTm93IHRoYXQgdGhlIGZib3BzIG1lbWJlciBvZiBzdHJ1Y3QgZmJfaW5mbyBpcyBj b25zdCwgd2UgY2FuIHN0YXJ0Cj4gbWFraW5nIHRoZSBvcHMgY29uc3QgYXMgd2VsbC4KPgo+IFRo aXMgZG9lcyBub3QgY292ZXIgYWxsIGRyaXZlcnM7IHNvbWUgYWN0dWFsbHkgbW9kaWZ5IHRoZSBm Ym9wcyBzdHJ1Y3QsCj4gZm9yIGV4YW1wbGUgdG8gYWRqdXN0IGZvciBkaWZmZXJlbnQgY29uZmln dXJhdGlvbnMsIGFuZCBvdGhlcnMgZG8gbW9yZQo+IGludm9sdmVkIHRoaW5ncyB0aGF0IEknZCBy YXRoZXIgbm90IHRvdWNoIGluIHByYWN0aWNhbGx5IG9ic29sZXRlCj4gZHJpdmVycy4gTW9zdGx5 IHRoaXMgaXMgdGhlIGxvdyBoYW5naW5nIGZydWl0IHdoZXJlIHdlIGNhbiBhZGQgImNvbnN0Igo+ IGFuZCBiZSBkb25lIHdpdGggaXQuCj4KPiB2MzoKPiAtIHVuLWNvbnN0aWZ5IGF0eWZiLCBtYjg2 Mnh4LCBudmlkaWEgYW5kIHV2ZXNhYmYgKDBkYXkpCj4KPiB2MjoKPiAtIGZpeCB0eXBvIChDaHJp c3RvcGhlIGRlIERpbmVjaGluKQo+IC0gdXNlICJzdGF0aWMgY29uc3QiIGluc3RlYWQgb2YgImNv bnN0IHN0YXRpYyIgaW4gbXgzZmIuYwo+IC0gYWxzbyBjb25zdGlmeSBzbXNjdWZ4LmMKPgo+IENj OiBsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKPiBSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRl ciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8 amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKUHVzaGVkIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhpcyBw YXRjaCB0byBkcm0tbWlzYy1uZXh0LCB0aGFua3MgZm9yIHRoZQpyZXZpZXdzIGFuZCBhY2tzLgoK QlIsCkphbmkuCgo+IC0tLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2LzY4MzI4ZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FyY2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FzaWxpYW50ZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0bWVsX2xjZGZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkxMjhmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYmFzZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F1MTEwMGZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F1MTIwMGZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2J3Mi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMTQuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMy5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnNi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBzZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NscHM3MTF4LWZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvYmFsdF9sY2RmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvbnRyb2xmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2RuZmIuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2VmaWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZtMmZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZzbC1kaXUtZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2czNjRmYi5jICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2diZWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4MWZiX2NvcmUu YyAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4ZmJfY29yZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dvbGRmaXNoZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dydmdhLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2d4dDQ1MDAuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hlY3ViYWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hpdGZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hwZmIuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2h5cGVydl9mYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ltc3R0ZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ludGVsZmIvaW50ZWxmYmRy di5jICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2t5cm8vZmJkZXYuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2xlby5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hY2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9j cnRjMi5jICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21heGluZWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21ieC9tYnhmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgNSArKystLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29jZmIuYyAgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29mZmIuYyAgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9v bWFwZmItbWFpbi5jIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3A5MTAwLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BsYXRpbnVtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYWEtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYmEtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWdiLWItZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B2cjJmYi5jICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMgICAgICAg ICAgICAgICAgICAgIHwgNCArKy0tCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvcTQwZmIuYyAgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5j ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNjLWZiLmMgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNjMjQxMGZiLmMg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jICAgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2ExMTAwZmIuYyAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2F2YWdlL3NhdmFn ZWZiX2RyaXZlci5jICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYyAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xj ZGNmYi5jICAgICAgICAgfCA0ICsrLS0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX21h aW4uYyAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9za2VsZXRvbmZi LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zbTcxMmZiLmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zbXNjdWZ4LmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zc3RmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdGlmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIxMDAw LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAw LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90Y3guYyAgICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90ZGZ4ZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90bWlvZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92YWxreXJpZWZi LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92ZmIuYyAgICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2Rm Yi5jICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi93bTg1MDVmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi94ZW4tZmJmcm9u dC5jICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi94aWxpbnhmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgMTA3IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRp b25zKCspLCAxMTAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi82ODMyOGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2LzY4MzI4ZmIuYwo+IGluZGV4IGQ0 OGU5NjA4OGY3Ni4uNDkxZmQ1YTgyOTkzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvNjgzMjhmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi82ODMyOGZiLmMKPiBAQCAt OTYsNyArOTYsNyBAQCBzdGF0aWMgaW50IG1jNjh4MzI4ZmJfcGFuX2Rpc3BsYXkoc3RydWN0IGZi X3Zhcl9zY3JlZW5pbmZvICp2YXIsCj4gIAkJCSAgIHN0cnVjdCBmYl9pbmZvICppbmZvKTsKPiAg c3RhdGljIGludCBtYzY4eDMyOGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1jNjh4MzI4 ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBtYzY4eDMyOGZiX29wcyA9 IHsKPiAgCS5mYl9jaGVja192YXIJPSBtYzY4eDMyOGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRf cGFyCT0gbWM2OHgzMjhmYl9zZXRfcGFyLAo+ICAJLmZiX3NldGNvbHJlZwk9IG1jNjh4MzI4ZmJf c2V0Y29scmVnLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYyBi L2RyaXZlcnMvdmlkZW8vZmJkZXYvYWNvcm5mYi5jCj4gaW5kZXggN2NhY2FlNWE4Nzk3Li5hM2Fm NDk1MjkxNzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9hY29ybmZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYwo+IEBAIC02MDQsNyArNjA0LDcgQEAg YWNvcm5mYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgYWNvcm5mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGFjb3Ju ZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9 IGFjb3JuZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhY29ybmZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2FtYmEtY2xjZC5jCj4gaW5kZXggN2RlNDNiZTZlZjJjLi5jM2Q1NWZjNmM0ZTAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9hbWJhLWNsY2QuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMKPiBAQCAtNDIzLDcgKzQyMyw3IEBAIHN0YXRp YyBpbnQgY2xjZGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gcmV0Owo+ ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBjbGNkZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBjbGNkZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9E VUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGNsY2RmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bh cgk9IGNsY2RmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Ft aWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMKPiBpbmRleCA5MWRkYzk2MDIwMTQu LjIwZTAzZTAwYjY2ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMKPiBAQCAtMzQ5Myw3ICszNDkzLDcg QEAgc3RhdGljIGlycXJldHVybl90IGFtaWZiX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZf aWQpCj4gIH0KPiAgCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBhbWlmYl9vcHMgPSB7Cj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGFtaWZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBU SElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBhbWlmYl9jaGVja192YXIsCj4gIAkuZmJf c2V0X3Bhcgk9IGFtaWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvYXJjZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJjZmIuYwo+IGluZGV4IGE0ODc0MWFh YjI0MC4uMzE0YWI4MmUwMWMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJj ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJjZmIuYwo+IEBAIC00OTEsNyArNDkx LDcgQEAgc3RhdGljIHNzaXplX3QgYXJjZmJfd3JpdGUoc3RydWN0IGZiX2luZm8gKmluZm8sIGNv bnN0IGNoYXIgX191c2VyICpidWYsCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGZiX29wcyBhcmNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3Bz IGFyY2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuCT0g YXJjZmJfb3BlbiwKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fy a2ZiLmMKPiBpbmRleCBmOTQwZThiNjZiODUuLjExYWI5YTE1Mzg2MCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fy a2ZiLmMKPiBAQCAtOTE3LDcgKzkxNyw3IEBAIHN0YXRpYyBpbnQgYXJrZmJfcGFuX2Rpc3BsYXko c3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsIHN0cnVjdCBmYl9pbmZvICppbmZvCj4gIAo+ ICAvKiBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucyAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9v cHMgYXJrZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhcmtmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9IGFya2ZiX29wZW4s Cj4gIAkuZmJfcmVsZWFzZQk9IGFya2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvYXNpbGlhbnRmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hc2lsaWFudGZi LmMKPiBpbmRleCBlYTMxMDU0YTI4Y2EuLjNlMDA2ZGE0Nzc1MiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2FzaWxpYW50ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv YXNpbGlhbnRmYi5jCj4gQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGludCBhc2lsaWFudGZiX3Nl dF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pOwo+ICBzdGF0aWMgaW50IGFzaWxpYW50ZmJfc2V0 Y29scmVnKHVfaW50IHJlZ25vLCB1X2ludCByZWQsIHVfaW50IGdyZWVuLCB1X2ludCBibHVlLAo+ ICAJCQkJdV9pbnQgdHJhbnNwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbyk7Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGZiX29wcyBhc2lsaWFudGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBm Yl9vcHMgYXNpbGlhbnRmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAku ZmJfY2hlY2tfdmFyCT0gYXNpbGlhbnRmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGFz aWxpYW50ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9hdG1l bF9sY2RmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hdG1lbF9sY2RmYi5jCj4gaW5kZXggNWZm OGUwMzIwZDk1Li5kNTY3ZjVkNTZjMTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRl di9hdG1lbF9sY2RmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9hdG1lbF9sY2RmYi5j Cj4gQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2xjZGZiX2JsYW5rKGludCBi bGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCXJldHVybiAoKGJsYW5rX21vZGUg PT0gRkJfQkxBTktfTk9STUFMKSA/IDEgOiAwKTsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgYXRtZWxfbGNkZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBh dG1lbF9sY2RmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gYXRtZWxfbGNkZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhdG1lbF9s Y2RmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkx MjhmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hdHkvYXR5MTI4ZmIuYwo+IGluZGV4IGZjMWU0 NWQ0NDcxOS4uZDdlNDFjOGRkNTMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv YXR5L2F0eTEyOGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkxMjhmYi5j Cj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBhdHkxMjhfYmxfc2V0X3Bvd2VyKHN0 cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgcG93ZXIpOwo+ICAJCQkgIChyZWFkYihiaW9zICsgKHYp ICsgMykgPDwgMjQpKQo+ICAKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGF0eTEyOGZiX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXR5MTI4ZmJfb3BzID0gewo+ICAJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGF0eTEyOGZiX2NoZWNr X3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gYXR5MTI4ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2Jhc2UuYyBiL2RyaXZlcnMvdmlkZW8vZmJk ZXYvYXR5L3JhZGVvbl9iYXNlLmMKPiBpbmRleCA0Y2EwNzg2NmYyZjYuLjNhZjAwZTNiOTY1ZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYmFzZS5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2Jhc2UuYwo+IEBAIC0xOTY1LDcgKzE5 NjUsNyBAQCBzdGF0aWMgaW50IHJhZGVvbmZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIH0KPiAgCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyByYWRlb25mYl9vcHMgPSB7Cj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHJhZGVvbmZiX29wcyA9IHsKPiAgCS5vd25lcgkJ CT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCQk9IHJhZGVvbmZiX2NoZWNrX3ZhciwK PiAgCS5mYl9zZXRfcGFyCQk9IHJhZGVvbmZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIu Ywo+IGluZGV4IDk5OTQxYWUxZjNhMS4uMzdhNjUxMmZlZGEwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUx MTAwZmIuYwo+IEBAIC0zNDgsNyArMzQ4LDcgQEAgaW50IGF1MTEwMGZiX2ZiX21tYXAoc3RydWN0 IGZiX2luZm8gKmZiaSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIAkJCWZiZGV2LT5m Yl9sZW4pOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBhdTExMDBmYl9vcHMgPQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhdTExMDBmYl9vcHMgPQo+ICB7Cj4gIAkub3du ZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBhdTExMDBmYl9mYl9zZXRj b2xyZWcsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+IGluZGV4IDI2NWQzYjQ1ZWZkMC4uYzAwZTAx YTE3MzY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+IEBAIC0xNDgzLDcgKzE0ODMsNyBA QCBzdGF0aWMgaW50IGF1MTIwMGZiX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25l ZCBpbnQgY21kLAo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgYXUxMjAwZmJf ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhdTEyMDBmYl9mYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gYXUxMjAw ZmJfZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhdTEyMDBmYl9mYl9zZXRfcGFyLAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9icm9hZHNoZWV0ZmIuYwo+IGluZGV4IGQ2YmEzNDhkZWI5Zi4uZmQ2NmY0 ZDRhNjIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYnJvYWRzaGVldGZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jCj4gQEAgLTEwNDgsNyAr MTA0OCw3IEBAIHN0YXRpYyBzc2l6ZV90IGJyb2Fkc2hlZXRmYl93cml0ZShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKPiAgCXJldHVybiAoZXJyKSA/IGVyciA6 IGNvdW50Owo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBicm9hZHNoZWV0ZmJfb3Bz ID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBicm9hZHNoZWV0ZmJfb3BzID0gewo+ ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3JlYWQgICAgICAgID0gZmJfc3lzX3Jl YWQsCj4gIAkuZmJfd3JpdGUJPSBicm9hZHNoZWV0ZmJfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYncyLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2J3Mi5jCj4gaW5k ZXggNDM2ZjEwZjNkMzc1Li4wZDlhNmJiNTdhMDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9idzIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYncyLmMKPiBAQCAtMzcs NyArMzcsNyBAQCBzdGF0aWMgaW50IGJ3Ml9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqLCB1bnNpZ25l ZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwo+ICAgKiAgRnJhbWUgYnVmZmVyIG9wZXJhdGlvbnMKPiAg ICovCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBidzJfb3BzID0gewo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGZiX29wcyBidzJfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwK PiAgCS5mYl9ibGFuawkJPSBidzJfYmxhbmssCj4gIAkuZmJfZmlsbHJlY3QJCT0gY2ZiX2ZpbGxy ZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jIGIvZHJp dmVycy92aWRlby9mYmRldi9jYXJtaW5lZmIuYwo+IGluZGV4IDlmM2JlMDI1ODYyMy4uYmYzZjJh OTU5OGIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2FybWluZWZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jCj4gQEAgLTUyNyw3ICs1MjcsNyBA QCBzdGF0aWMgaW50IGluaXRfaGFyZHdhcmUoc3RydWN0IGNhcm1pbmVfaHcgKmh3KQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNhcm1pbmVmYl9vcHMgPSB7 Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNhcm1pbmVmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gIAku ZmJfY29weWFyZWEJPSBjZmJfY29weWFyZWEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvY2cxNC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9jZzE0LmMKPiBpbmRleCBkODBkOTlk YjNhNDYuLmE2MjBiNTFjZjdkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nn MTQuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2cxNC5jCj4gQEAgLTM5LDcgKzM5LDcg QEAgc3RhdGljIGludCBjZzE0X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAq LCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAq Lwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2cxNF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIGNnMTRfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwK PiAgCS5mYl9zZXRjb2xyZWcJCT0gY2cxNF9zZXRjb2xyZWcsCj4gIAkuZmJfcGFuX2Rpc3BsYXkJ CT0gY2cxNF9wYW5fZGlzcGxheSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9j ZzMuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2czLmMKPiBpbmRleCAwOWY2MTZkZGRmZDcuLjc3 ZjY0NzBjZTY2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMy5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9jZzMuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBp bnQgY2czX2lvY3RsKHN0cnVjdCBmYl9pbmZvICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9u Zyk7Cj4gICAqICBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucwo+ICAgKi8KPiAgCj4gLXN0YXRpYyBz dHJ1Y3QgZmJfb3BzIGNnM19vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNn M19vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJ PSBjZzNfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCQk9IGNnM19ibGFuaywKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9jZzYuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2c2LmMK PiBpbmRleCBkNTg4OGFlY2MyZmIuLmExYzY4Y2Q0OGQ3ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2NnNi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9jZzYuYwo+IEBA IC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbnQgY2c2X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJf c2NyZWVuaW5mbyAqLCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVy YXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2c2X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgY2c2X29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IGNnNl9zZXRjb2xyZWcsCj4gIAkuZmJfYmxh bmsJCT0gY2c2X2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBz ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2hpcHNmYi5jCj4gaW5kZXggZjRkYzMyMGRjYWZl Li45OTgwNjdiNzAxZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jaGlwc2Zi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBzZmIuYwo+IEBAIC03OSw3ICs3OSw3 IEBAIHN0YXRpYyBpbnQgY2hpcHNmYl9zZXRjb2xyZWcodV9pbnQgcmVnbm8sIHVfaW50IHJlZCwg dV9pbnQgZ3JlZW4sIHVfaW50IGJsdWUsCj4gIAkJCSAgICAgdV9pbnQgdHJhbnNwLCBzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbyk7Cj4gIHN0YXRpYyBpbnQgY2hpcHNmYl9ibGFuayhpbnQgYmxhbmssIHN0 cnVjdCBmYl9pbmZvICppbmZvKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNoaXBzZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBjaGlwc2ZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBjaGlwc2ZiX2NoZWNr X3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gY2hpcHNmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1 c2ZiLmMKPiBpbmRleCBlNGNlNTY2N2IxMjUuLmMzYTNlMzQ0Y2VlMyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L2NpcnJ1c2ZiLmMKPiBAQCAtMTk1Niw3ICsxOTU2LDcgQEAgc3RhdGljIHZvaWQgY2lycnVzZmJf em9ycm9fdW5tYXAoc3RydWN0IGZiX2luZm8gKmluZm8pCj4gICNlbmRpZiAvKiBDT05GSUdfWk9S Uk8gKi8KPiAgCj4gIC8qIGZ1bmN0aW9uIHRhYmxlIG9mIHRoZSBhYm92ZSBmdW5jdGlvbnMgKi8K PiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2lycnVzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyBjaXJydXNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUs Cj4gIAkuZmJfb3Blbgk9IGNpcnJ1c2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IGNpcnJ1c2Zi X3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIu YyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIuYwo+IGluZGV4IGNhYmJjNzIxZjg5 NC4uYzVkMTVjNmRiMjg3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcx MXgtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIuYwo+IEBAIC0x NTMsNyArMTUzLDcgQEAgc3RhdGljIGludCBjbHBzNzExeF9mYl9ibGFuayhpbnQgYmxhbmssIHN0 cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGNscHM3MTF4X2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9v cHMgY2xwczcxMXhfZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZi X3NldGNvbHJlZwk9IGNscHM3MTF4X2ZiX3NldGNvbHJlZywKPiAgCS5mYl9jaGVja192YXIJPSBj bHBzNzExeF9mYl9jaGVja192YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv Y29iYWx0X2xjZGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvYmFsdF9sY2RmYi5jCj4gaW5k ZXggNTQ0OTQ2OTAxZThiLi41ZjhiNjMyNGQyZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9jb2JhbHRfbGNkZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29iYWx0 X2xjZGZiLmMKPiBAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBpbnQgY29iYWx0X2xjZGZiX2N1 cnNvcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGZiX2N1cnNvciAqY3Vyc29yKQo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNvYmFsdF9sY2RfZmJv cHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNvYmFsdF9sY2RfZmJvcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVhZAk9IGNvYmFsdF9sY2RmYl9y ZWFkLAo+ICAJLmZiX3dyaXRlCT0gY29iYWx0X2xjZGZiX3dyaXRlLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NvbnRyb2xmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9jb250 cm9sZmIuYwo+IGluZGV4IDlhNjgwZWYzZmZjMy4uMzhiNjFjZGI1Y2E0IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvY29udHJvbGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvbnRyb2xmYi5jCj4gQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW50IGRlZmF1bHRf dm1vZGUgX19pbml0ZGF0YSA9IFZNT0RFX05WUkFNOwo+ICBzdGF0aWMgaW50IGRlZmF1bHRfY21v ZGUgX19pbml0ZGF0YSA9IENNT0RFX05WUkFNOwo+ICAKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJf b3BzIGNvbnRyb2xmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNvbnRy b2xmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gY29udHJvbGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gY29udHJvbGZiX3NldF9w YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYwo+IGluZGV4IDNhMmQ5ZmYwYWE0Mi4uNDYw ODI2YTdhZDU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYwo+IEBAIC0xMDYwLDcg KzEwNjAsNyBAQCBzdGF0aWMgaW50IGN5YmVyMjAwMGZiX2JsYW5rKGludCBibGFuaywgc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgY3liZXIyMDAwZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBj eWJlcjIwMDBmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gY3liZXIyMDAwZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBjeWJlcjIw MDBmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZi LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMKPiBpbmRleCAyZDNkY2M1MmZjZjMu LjczYzNjNGM4Y2MxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMKPiBAQCAtMTI5NCw3ICsx Mjk0LDcgQEAgc3RhdGljIGludCBkYTh4eGZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZGE4eHhfZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBkYTh4eF9mYl9vcHMgPSB7Cj4g IAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIgPSBmYl9jaGVja192YXIs Cj4gIAkuZmJfc2V0X3BhciA9IGRhOHh4ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9kbmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RuZmIuYwo+IGluZGV4 IDhkYTUxN2VhYTRhMy4uMzY4OGY5MTY1ODQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvZG5mYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9kbmZiLmMKPiBAQCAtMTA4 LDcgKzEwOCw3IEBACj4gIHN0YXRpYyBpbnQgZG5mYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBm Yl9pbmZvICppbmZvKTsKPiAgc3RhdGljIHZvaWQgZG5mYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKTsKPiAgCj4gLXN0YXRpYyBz dHJ1Y3QgZmJfb3BzIGRuX2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMg ZG5fZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0g ZG5mYl9ibGFuaywKPiAgCS5mYl9maWxscmVjdAk9IGNmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9lZmlmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlm Yi5jCj4gaW5kZXggNTFkOTdlYzRmNThmLi5mMDNmOWZiNjBjMjYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92aWRlby9mYmRldi9lZmlmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlm Yi5jCj4gQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBlZmlmYl9kZXN0cm95KHN0cnVj dCBmYl9pbmZvICppbmZvKQo+ICAJZmJfZGVhbGxvY19jbWFwKCZpbmZvLT5jbWFwKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZWZpZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyBlZmlmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfZGVzdHJveQk9IGVmaWZiX2Rlc3Ryb3ksCj4gIAkuZmJfc2V0Y29scmVnCT0gZWZpZmJf c2V0Y29scmVnLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi9lcDkzeHgtZmIuYwo+IGluZGV4IGQwNGEwNDcwOTRmYy4u Y2RhMmVmMzM3NDIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZXA5M3h4LWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5jCj4gQEAgLTQwMiw3ICs0 MDIsNyBAQCBzdGF0aWMgaW50IGVwOTN4eGZiX3NldGNvbHJlZyh1bnNpZ25lZCBpbnQgcmVnbm8s IHVuc2lnbmVkIGludCByZWQsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVj dCBmYl9vcHMgZXA5M3h4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBl cDkzeHhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tf dmFyCT0gZXA5M3h4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBlcDkzeHhmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvZmItcHV2My5jCj4gaW5kZXggZmE2MmM0ZGZmN2QxLi43NWRmNmFhYmFj MjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9mYi1wdXYzLmMKPiArKysgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYwo+IEBAIC02NDQsNyArNjQ0LDcgQEAgaW50IHVu aWZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gdm1faW9tYXBfbWVtb3J5 KHZtYSwgaW5mby0+Zml4LnNtZW1fc3RhcnQsIGluZm8tPmZpeC5zbWVtX2xlbik7Cj4gIH0KPiAg Cj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHVuaWZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBmYl9vcHMgdW5pZmJfb3BzID0gewo+ICAJLmZiX3JlYWQgICAgICAgID0gZmJfc3lzX3Jl YWQsCj4gIAkuZmJfd3JpdGUgICAgICAgPSBmYl9zeXNfd3JpdGUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gdW5pZmJfY2hlY2tfdmFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Zm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9mZmIuYwo+IGluZGV4IGNkMmQxZGIyMzlhMi4uOTQ4 YjczMTg0NDMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZmZiLmMKPiArKysg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jCj4gQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGlu dCBmZmJfcGFuX2Rpc3BsYXkoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICosIHN0cnVjdCBmYl9p bmZvICopOwo+ICAgKiAgRnJhbWUgYnVmZmVyIG9wZXJhdGlvbnMKPiAgICovCj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBmZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBmZmJfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xy ZWcJCT0gZmZiX3NldGNvbHJlZywKPiAgCS5mYl9ibGFuawkJPSBmZmJfYmxhbmssCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZm0yZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Zm0yZmIuYwo+IGluZGV4IGFjN2E0ZWJmZDM5MC4uM2I3MjdkNTI4ZmRlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZm0yZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Zm0yZmIuYwo+IEBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIGludCBmbTJmYl9zZXRjb2xyZWco dV9pbnQgcmVnbm8sIHVfaW50IHJlZCwgdV9pbnQgZ3JlZW4sIHVfaW50IGJsdWUsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVfaW50IHRyYW5zcCwgc3RydWN0IGZiX2luZm8gKmluZm8p Owo+ICBzdGF0aWMgaW50IGZtMmZiX2JsYW5rKGludCBibGFuaywgc3RydWN0IGZiX2luZm8gKmlu Zm8pOwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZm0yZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBmbTJmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RV TEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gZm0yZmJfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCT0g Zm0yZmJfYmxhbmssCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZnNsLWRpdS1m Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9mc2wtZGl1LWZiLmMKPiBpbmRleCBkMTlmNTgyNjNi NGUuLjdjYWNhYmRkNWYxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZzbC1k aXUtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvZnNsLWRpdS1mYi5jCj4gQEAgLTE0 NDgsNyArMTQ0OCw3IEBAIHN0YXRpYyBpbnQgZnNsX2RpdV9yZWxlYXNlKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBpbnQgdXNlcikKPiAgCXJldHVybiByZXM7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGZzbF9kaXVfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBm c2xfZGl1X29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zh ciA9IGZzbF9kaXVfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPSBmc2xfZGl1X3NldF9wYXIs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZzM2NGZiLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2czNjRmYi5jCj4gaW5kZXggMjIzODk2Y2M1ZjdkLi44NDViNzlkYTJhN2MgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9nMzY0ZmIuYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvZzM2NGZiLmMKPiBAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgZzM2 NGZiX3NldGNvbHJlZyh1X2ludCByZWdubywgdV9pbnQgcmVkLCB1X2ludCBncmVlbiwKPiAgc3Rh dGljIGludCBnMzY0ZmJfY3Vyc29yKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3QgZmJfY3Vy c29yICpjdXJzb3IpOwo+ICBzdGF0aWMgaW50IGczNjRmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVj dCBmYl9pbmZvICppbmZvKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGczNjRmYl9vcHMg PSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGczNjRmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gZzM2NGZiX3NldGNvbHJlZywK PiAgCS5mYl9wYW5fZGlzcGxheQk9IGczNjRmYl9wYW5fZGlzcGxheSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5j Cj4gaW5kZXggYjlmNmE4MmEwNDk1Li4zMTI3MGE4OTg2ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9nYmVmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5j Cj4gQEAgLTEwNDQsNyArMTA0NCw3IEBAIHN0YXRpYyBpbnQgZ2JlZmJfbW1hcChzdHJ1Y3QgZmJf aW5mbyAqaW5mbywKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBnYmVmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGdiZWZiX29wcyA9 IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBnYmVmYl9j aGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGdiZWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3gxZmJfY29yZS5jIGIvZHJpdmVycy92aWRlby9m YmRldi9nZW9kZS9neDFmYl9jb3JlLmMKPiBpbmRleCA3MzdlNDcyZmFjMTQuLjVkMzRkODlmYjY2 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4MWZiX2NvcmUuYwo+ ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3gxZmJfY29yZS5jCj4gQEAgLTI1Miw3 ICsyNTIsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3BhbmVsX29wdGlvbihzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBneDFm Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGd4MWZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBneDFmYl9jaGVja192 YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGd4MWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3hmYl9jb3JlLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dl b2RlL2d4ZmJfY29yZS5jCj4gaW5kZXggNDM1Y2UyYWE0MjQwLi5kMzhhMTQ4ZDQ3NDYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9neGZiX2NvcmUuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3hmYl9jb3JlLmMKPiBAQCAtMjY1LDcgKzI2NSw3IEBA IHN0YXRpYyBpbnQgZ3hmYl9tYXBfdmlkZW9fbWVtb3J5KHN0cnVjdCBmYl9pbmZvICppbmZvLCBz dHJ1Y3QgcGNpX2RldiAqZGV2KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGd4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBneGZi X29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBn eGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gZ3hmYl9zZXRfcGFyLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5jIGIvZHJpdmVycy92aWRl by9mYmRldi9nZW9kZS9seGZiX2NvcmUuYwo+IGluZGV4IGIwZjA3ZDY3NmViMy4uYWRjMmQ5YzIz OTVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvbHhmYl9jb3JlLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5jCj4gQEAgLTM4Niw3 ICszODYsNyBAQCBzdGF0aWMgaW50IGx4ZmJfbWFwX3ZpZGVvX21lbW9yeShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgc3RydWN0IHBjaV9kZXYgKmRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1z dGF0aWMgc3RydWN0IGZiX29wcyBseGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBm Yl9vcHMgbHhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gbHhmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGx4ZmJfc2V0X3BhciwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9nb2xkZmlzaGZiLmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2dvbGRmaXNoZmIuYwo+IGluZGV4IGY2MGFjMjc2NzAzZC4uOWM4M2VjM2Y4 ZTFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ29sZGZpc2hmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9nb2xkZmlzaGZiLmMKPiBAQCAtMTYwLDcgKzE2MCw3IEBA IHN0YXRpYyBpbnQgZ29sZGZpc2hfZmJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBnb2xk ZmlzaF9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGdvbGRmaXNoX2Zi X29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNr X3ZhciAgID0gZ29sZGZpc2hfZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgICAgID0gZ29s ZGZpc2hfZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9ncnZn YS5jIGIvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4gaW5kZXggZDIyZThiMGM5MDZkLi4w N2RkYTAzZTA5NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4g KysrIGIvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4gQEAgLTI1MSw3ICsyNTEsNyBAQCBz dGF0aWMgaW50IGdydmdhX3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFy LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGdydmdhX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgZ3J2Z2Ffb3BzID0gewo+ICAJLm93 bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyICAgPSBncnZnYV9j aGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGdydmdhX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZ3h0NDUwMC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9neHQ0 NTAwLmMKPiBpbmRleCBjNzUwMmZkOGY0NDcuLjEzZGVkM2ExMDcwOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2d4dDQ1MDAuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Z3h0NDUwMC5jCj4gQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZiX2Zp eF9zY3JlZW5pbmZvIGd4dDQ1MDBfZml4ID0gewo+ICAJLm1taW9fbGVuID0gMHgyMDAwMCwKPiAg fTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGd4dDQ1MDBfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBneHQ0NTAwX29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9E VUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9IGd4dDQ1MDBfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9w YXIgPSBneHQ0NTAwX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv aGVjdWJhZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGVjdWJhZmIuYwo+IGluZGV4IDg1Nzcx OTVjYjUzMy4uMDBkNzcxMDUxNjFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv aGVjdWJhZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGVjdWJhZmIuYwo+IEBAIC0x OTcsNyArMTk3LDcgQEAgc3RhdGljIHNzaXplX3QgaGVjdWJhZmJfd3JpdGUoc3RydWN0IGZiX2lu Zm8gKmluZm8sIGNvbnN0IGNoYXIgX191c2VyICpidWYsCj4gIAlyZXR1cm4gKGVycikgPyBlcnIg OiBjb3VudDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgaGVjdWJhZmJfb3BzID0g ewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBoZWN1YmFmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVhZCAgICAgICAgPSBmYl9zeXNfcmVhZCwKPiAg CS5mYl93cml0ZQk9IGhlY3ViYWZiX3dyaXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L2hnYWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMKPiBpbmRleCA1OWUx Y2FlNTc5NDguLmE0NWZjZmYxNDYxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L2hnYWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMKPiBAQCAtNTIzLDcg KzUyMyw3IEBAIHN0YXRpYyB2b2lkIGhnYWZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqaW5m bywgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSkKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgaGdhZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBoZ2FmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9 IGhnYWZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IGhnYWZiX3JlbGVhc2UsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0 ZmIuYwo+IGluZGV4IGFiZTNlNTRkNDUwNi4uMDA5ZTVkMmFhMTAwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvaGl0ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0 ZmIuYwo+IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGludCBoaXRmYl9zZXRfcGFyKHN0cnVj dCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg ZmJfb3BzIGhpdGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaGl0ZmJf b3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGhp dGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCQk9IGhpdGZiX3NldF9wYXIsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaHBmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9o cGZiLmMKPiBpbmRleCBhNzlhZjhmMDY5ZDEuLmYwMmJlMGRiMzM1ZSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2hwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaHBm Yi5jCj4gQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgaW50IGhwZmJfc3luYyhzdHJ1Y3QgZmJf aW5mbyAqaW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBocGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaHBmYl9vcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gaHBmYl9zZXRj b2xyZWcsCj4gIAkuZmJfYmxhbmsJPSBocGZiX2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2h5cGVydl9mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9oeXBlcnZfZmIu Ywo+IGluZGV4IDJkY2I3YzU4YjMxZS4uZmNkNTQ2ZTVjMDMxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvaHlwZXJ2X2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2h5 cGVydl9mYi5jCj4gQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGF0aWMgdm9pZCBodmZiX2NmYl9pbWFn ZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsCj4gIAkJc3ludGh2aWRfdXBkYXRlKHApOwo+ICB9Cj4g IAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBodmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBmYl9vcHMgaHZmYl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5m Yl9jaGVja192YXIgPSBodmZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyID0gaHZmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9pNzQwZmIuYwo+IGluZGV4IDM0N2NmOGJhYmMzZS4uYzY1ZWM3Mzg2ZTg3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaTc0MGZiLmMKPiArKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jCj4gQEAgLTk4MSw3ICs5ODEsNyBAQCBzdGF0aWMgaW50 IGk3NDBmYl9ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAly ZXR1cm4gKGJsYW5rX21vZGUgPT0gRkJfQkxBTktfTk9STUFMKSA/IDEgOiAwOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpNzQwZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGZiX29wcyBpNzQwZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJ LmZiX29wZW4JPSBpNzQwZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlCT0gaTc0MGZiX3JlbGVhc2Us Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW1zdHRmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi9pbXN0dGZiLmMKPiBpbmRleCA1OGIwMWM3ZDkwNTYuLjNhYzA1M2I4ODQ5NSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ltc3R0ZmIuYwo+ICsrKyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvaW1zdHRmYi5jCj4gQEAgLTEzMzMsNyArMTMzMyw3IEBAIHN0YXRpYyBz dHJ1Y3QgcGNpX2RyaXZlciBpbXN0dGZiX3BjaV9kcml2ZXIgPSB7Cj4gIAkucmVtb3ZlID0JaW1z dHRmYl9yZW1vdmUsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpbXN0dGZiX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaW1zdHRmYl9vcHMgPSB7Cj4gIAku b3duZXIgCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGltc3R0ZmJfY2hlY2tf dmFyLAo+ICAJLmZiX3NldF9wYXIgCT0gaW1zdHRmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMK PiBpbmRleCBiMzI4NmQxZmE1NDMuLjA4YTE3ZWIyYTVjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2lteGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMK PiBAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRpYyBpbnQgaW14ZmJfYmxhbmsoaW50IGJsYW5rLCBz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3Ry dWN0IGZiX29wcyBpbXhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGlt eGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJ PSBpbXhmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGlteGZiX3NldF9wYXIsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiZHJ2LmMgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2ludGVsZmIvaW50ZWxmYmRydi5jCj4gaW5kZXggYTc2YzYxNTEyYzYw Li5jNzQ0ODkxNzgxYTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9pbnRlbGZi L2ludGVsZmJkcnYuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZi ZHJ2LmMKPiBAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Rldmlj ZV9pZCBpbnRlbGZiX3BjaV90YWJsZVtdID0gewo+ICBzdGF0aWMgaW50IG51bV9yZWdpc3RlcmVk ID0gMDsKPiAgCj4gIC8qIGZiIG9wcyAqLwo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpbnRlbF9m Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGludGVsX2ZiX29wcyA9IHsK PiAgCS5vd25lciA9CQlUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuID0gICAgICAgICAgICAgIGlu dGVsZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlID0gICAgICAgICAgIGludGVsZmJfcmVsZWFzZSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9reXJvL2ZiZGV2LmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2t5cm8vZmJkZXYuYwo+IGluZGV4IGE3YmQ5ZjI1OTExYi4uNzJkZmYyZTQy ZTNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYva3lyby9mYmRldi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9reXJvL2ZiZGV2LmMKPiBAQCAtNjQ4LDcgKzY0OCw3IEBA IHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBreXJvZmJfcGNpX2RyaXZlciA9IHsKPiAgCS5yZW1v dmUJCT0ga3lyb2ZiX3JlbW92ZSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGt5 cm9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGt5cm9mYl9vcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0ga3lyb2ZiX2No ZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0ga3lyb2ZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvbGVvLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2xlby5jCj4g aW5kZXggNWIxMTQxYWMxODJiLi40MGIxMWNjZTBhZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi9sZW8uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbGVvLmMKPiBAQCAt MzksNyArMzksNyBAQCBzdGF0aWMgaW50IGxlb19wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3Nj cmVlbmluZm8gKiwgc3RydWN0IGZiX2luZm8gKik7Cj4gICAqICBGcmFtZSBidWZmZXIgb3BlcmF0 aW9ucwo+ICAgKi8KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGxlb19vcHMgPSB7Cj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGxlb19vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBsZW9fc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5r CQk9IGxlb19ibGFuaywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gaW5kZXggOWE2ZmVlZTk2MTMzLi5lMDVh OTc2NjJjYTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdGF0 aWMgaW50IG1hY2ZiX3NldGNvbHJlZyh1bnNpZ25lZCByZWdubywgdW5zaWduZWQgcmVkLCB1bnNp Z25lZCBncmVlbiwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBtYWNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIG1hY2ZiX29wcyA9 IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBtYWNmYl9z ZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2NydGMyLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9jcnRjMi5jCj4gaW5kZXggZDJhODFhMmMzYWMwLi43 NjU1YWZhM2ZkNTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0 cm94ZmJfY3J0YzIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZi X2NydGMyLmMKPiBAQCAtNTYzLDcgKzU2Myw3IEBAIHN0YXRpYyBpbnQgbWF0cm94ZmJfZGhfYmxh bmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyogaW5mbykgewo+ICAjdW5kZWYgbTJpbmZvCj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1hdHJveGZiX2RoX29wcyA9IHsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbWF0cm94ZmJfZGhfb3BzID0gewo+ICAJLm93bmVyID0J VEhJU19NT0RVTEUsCj4gIAkuZmJfb3BlbiA9CW1hdHJveGZiX2RoX29wZW4sCj4gIAkuZmJfcmVs ZWFzZSA9CW1hdHJveGZiX2RoX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvbWF4aW5lZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF4aW5lZmIuYwo+IGluZGV4 IDViYjFiNWMzMDhhNy4uYWUxYTQyYmNiMGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvbWF4aW5lZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF4aW5lZmIuYwo+ IEBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGludCBtYXhpbmVmYl9zZXRjb2xyZWcodW5zaWdu ZWQgcmVnbm8sIHVuc2lnbmVkIHJlZCwgdW5zaWduZWQgZ3JlZW4sCj4gIAlyZXR1cm4gMDsKPiAg fQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgbWF4aW5lZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBtYXhpbmVmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19N T0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gbWF4aW5lZmJfc2V0Y29scmVnLAo+ICAJLmZiX2Zp bGxyZWN0CT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L21ieC9tYnhmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9tYngvbWJ4ZmIuYwo+IGluZGV4IDUw OTM1MjUyYjUwYi4uMjVkYWQ0NTA3ZDc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvbWJ4L21ieGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ieC9tYnhmYi5jCj4g QEAgLTY3MSw3ICs2NzEsNyBAQCBzdGF0aWMgaW50IG1ieGZiX2lvY3RsKHN0cnVjdCBmYl9pbmZv ICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAo+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4g LXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1ieGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBmYl9vcHMgbWJ4ZmJfb3BzID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkuZmJf Y2hlY2tfdmFyID0gbWJ4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPSBtYnhmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMKPiBpbmRleCBiYjRmZWU1MmU1MDEuLmE0 MmUyZWNlZWU0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMKPiBAQCAtNTU4LDcg KzU1OCw3IEBAIHN0YXRpYyBzc2l6ZV90IG1ldHJvbm9tZWZiX3dyaXRlKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAo+ICAJcmV0dXJuIChlcnIpID8gZXJyIDog Y291bnQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1ldHJvbm9tZWZiX29wcyA9 IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbWV0cm9ub21lZmJfb3BzID0gewo+ICAJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3dyaXRlCT0gbWV0cm9ub21lZmJfd3JpdGUs Cj4gIAkuZmJfZmlsbHJlY3QJPSBtZXRyb25vbWVmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv bW1wL2ZiL21tcGZiLmMKPiBpbmRleCA0N2JjN2M1OWJiZDguLjMzZGIwODUwMDg2ZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jCj4gKysrIGIvZHJpdmVy cy92aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYwo+IEBAIC00NTQsNyArNDU0LDcgQEAgc3RhdGlj IGludCBtbXBmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1tcGZiX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbW1wZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRI SVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0gbW1wZmJfYmxhbmssCj4gIAkuZmJfY2hlY2tfdmFy CT0gbW1wZmJfY2hlY2tfdmFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214 M2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMKPiBpbmRleCBiYWZkNWY1ZmFjNWEu LjRhZjI4ZTQ0MjFlNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMKPiBAQCAtMTI0OSw3ICsxMjQ5LDcg QEAgc3RhdGljIGludCBteDNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8g KnZhciwKPiAgICogaW52b2tlZCBieSB0aGUgY29yZSBmcmFtZWJ1ZmZlciBkcml2ZXIgdG8gcGVy Zm9ybSBvcGVyYXRpb25zIGxpa2UKPiAgICogYmxpdHRpbmcsIHJlY3RhbmdsZSBmaWxsaW5nLCBj b3B5IHJlZ2lvbnMgYW5kIGN1cnNvciBkZWZpbml0aW9uLgo+ICAgKi8KPiAtc3RhdGljIHN0cnVj dCBmYl9vcHMgbXgzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBteDNm Yl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRfcGFyID0gbXgz ZmJfc2V0X3BhciwKPiAgCS5mYl9jaGVja192YXIgPSBteDNmYl9jaGVja192YXIsCj4gQEAgLTEz ODksNyArMTM4OSw4IEBAIHN0YXRpYyBpbnQgbXgzZmJfdW5tYXBfdmlkZW9fbWVtb3J5KHN0cnVj dCBmYl9pbmZvICpmYmkpCj4gICAqIG14M2ZiX2luaXRfZmJpbmZvKCkgLSBpbml0aWFsaXplIGZy YW1lYnVmZmVyIGluZm9ybWF0aW9uIG9iamVjdC4KPiAgICogQHJldHVybjoJaW5pdGlhbGl6ZWQg ZnJhbWVidWZmZXIgc3RydWN0dXJlLgo+ICAgKi8KPiAtc3RhdGljIHN0cnVjdCBmYl9pbmZvICpt eDNmYl9pbml0X2ZiaW5mbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBmYl9vcHMgKm9wcykK PiArc3RhdGljIHN0cnVjdCBmYl9pbmZvICpteDNmYl9pbml0X2ZiaW5mbyhzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4gKwkJCQkJIGNvbnN0IHN0cnVjdCBmYl9vcHMgKm9wcykKPiAgewo+ICAJc3RydWN0 IGZiX2luZm8gKmZiaTsKPiAgCXN0cnVjdCBteDNmYl9pbmZvICpteDNmYmk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVv ZmIuYwo+IGluZGV4IGI3NzA5NDZhMDkyMC4uZTZlYTg1M2MxNzIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVv ZmIuYwo+IEBAIC0xNjEwLDcgKzE2MTAsNyBAQCBuZW9mYl9jdXJzb3Ioc3RydWN0IGZiX2luZm8g KmluZm8sIHN0cnVjdCBmYl9jdXJzb3IgKmN1cnNvcikKPiAgfQo+ICAqLwo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgbmVvZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBuZW9mYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9 IG5lb2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IG5lb2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2NmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9vY2Zi LmMKPiBpbmRleCBhOTcwZWRjMmE2ZjguLmM4Y2VlMmQ4OTBkYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L29jZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2NmYi5j Cj4gQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgaW50IG9jZmJfaW5pdF92YXIoc3RydWN0IG9j ZmJfZGV2ICpmYmRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZi X29wcyBvY2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgb2NmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gb2NmYl9z ZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvb2ZmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9vZmZiLmMK PiBpbmRleCBmYmM2ZWFmYjYzYzcuLjVjZDBmNWY2YTRhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L29mZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2ZmYi5jCj4g QEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBvZmZiX2Rlc3Ryb3koc3RydWN0IGZiX2lu Zm8gKmluZm8pCj4gIAlmcmFtZWJ1ZmZlcl9yZWxlYXNlKGluZm8pOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBvZmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9v cHMgb2ZmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfZGVzdHJv eQk9IG9mZmJfZGVzdHJveSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBvZmZiX3NldGNvbHJlZywKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvb21hcGZiLW1haW4u YyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL29tYXBmYi1tYWluLmMKPiBpbmRl eCA4NThjMmMwMTFkMTkuLjhkZmE5MTU4YmE3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L29tYXAyL29tYXBmYi9vbWFwZmItbWFpbi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9m YmRldi9vbWFwMi9vbWFwZmIvb21hcGZiLW1haW4uYwo+IEBAIC0xMjgwLDcgKzEyODAsNyBAQCBz c2l6ZV90IG9tYXBmYl93cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3Vz ZXIgKmJ1ZiwKPiAgfQo+ICAjZW5kaWYKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG9tYXBm Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIG9tYXBmYl9vcHMgPSB7Cj4g IAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuICAgICAgICA9IG9t YXBmYl9vcGVuLAo+ICAJLmZiX3JlbGVhc2UgICAgID0gb21hcGZiX3JlbGVhc2UsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcDkxMDAuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cDkxMDAuYwo+IGluZGV4IDhjMThjYzUxYWFlMi4uNmRhNjcyZTkyNjQzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvcDkxMDAuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cDkxMDAuYwo+IEBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgcDkxMDBfaW9jdGwoc3RydWN0 IGZiX2luZm8gKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKPiAgICogIEZyYW1lIGJ1 ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcDkxMDBf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwOTEwMF9vcHMgPSB7Cj4gIAku b3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBwOTEwMF9zZXRjb2xy ZWcsCj4gIAkuZmJfYmxhbmsJCT0gcDkxMDBfYmxhbmssCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvcGxhdGludW1mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9wbGF0aW51bWZi LmMKPiBpbmRleCA2MzJiMjQ2Y2EzNWYuLmNlNDEzYTlkZjA2ZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3BsYXRpbnVtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cGxhdGludW1mYi5jCj4gQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGludCBwbGF0aW51bV92YXJf dG9fcGFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAo+ICAgKiBJbnRlcmZhY2UgdXNl ZCBieSB0aGUgd29ybGQKPiAgICovCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBwbGF0aW51 bWZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgcGxhdGludW1mYl9vcHMg PSB7Cj4gIAkub3duZXIgPQlUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBwbGF0aW51 bWZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gcGxhdGludW1mYl9zZXRfcGFyLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtMmZiLmMKPiBpbmRleCAxZGNmMDJlMTJhZjQuLjhmOTMzYmFkNDYxYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtMmZiLmMKPiBAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgc3RhdGljIGludCBwbTJmYl9jdXJz b3Ioc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9jdXJzb3IgKmN1cnNvcikKPiAgICog IEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9v cHMgcG0yZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbTJmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gcG0yZmJf Y2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBwbTJmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2Zi LmMKPiBpbmRleCA2MTMwYWE1NmExZTkuLjE1YTJiNDk1MjM1YiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2Zi LmMKPiBAQCAtMTIwMCw3ICsxMjAwLDcgQEAgc3RhdGljIGludCBwbTNmYl9ibGFuayhpbnQgYmxh bmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAkgKiAgRnJhbWUgYnVmZmVyIG9wZXJh dGlvbnMKPiAgCSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcG0zZmJfb3BzID0gewo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbTNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0g VEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gcG0zZmJfY2hlY2tfdmFyLAo+ICAJLmZi X3NldF9wYXIJPSBwbTNmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtYWctYWEtZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcG1hZy1hYS1mYi5jCj4gaW5k ZXggZDFlNzhjZTNhOWMyLi43YjMzYjUyYjI1MjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9wbWFnLWFhLWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYWEt ZmIuYwo+IEBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGludCBhYWZiX2JsYW5rKGludCBibGFu aywgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgYWFmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3Bz IGFhZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0g YWFmYl9ibGFuaywKPiAgCS5mYl9maWxscmVjdAk9IGNmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9wbWFnLWJhLWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3BtYWctYmEtZmIuYwo+IGluZGV4IDU2YjkxMmJiMjhkZS4uYTYwZTU2ZDg5ODBiIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcG1hZy1iYS1mYi5jCj4gKysrIGIvZHJpdmVycy92 aWRlby9mYmRldi9wbWFnLWJhLWZiLmMKPiBAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbnQg cG1hZ2JhZmJfc2V0Y29scmVnKHVuc2lnbmVkIGludCByZWdubywgdW5zaWduZWQgaW50IHJlZCwK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBwbWFnYmFmYl9v cHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHBtYWdiYWZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBwbWFnYmFmYl9zZXRj b2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvcG1hZ2ItYi1mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9wbWFn Yi1iLWZiLmMKPiBpbmRleCAyODIyYjIyMjU5MjQuLmYwMjA4MGYyMTA3NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWdiLWItZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvcG1hZ2ItYi1mYi5jCj4gQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgaW50IHBtYWdi YmZiX3NldGNvbHJlZyh1bnNpZ25lZCBpbnQgcmVnbm8sIHVuc2lnbmVkIGludCByZWQsCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcG1hZ2JiZmJfb3BzID0g ewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbWFnYmJmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gcG1hZ2JiZmJfc2V0Y29scmVn LAo+ICAJLmZiX2ZpbGxyZWN0CT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3BzM2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKPiBpbmRl eCA1ZWQyZGIzOWQ4MjMuLjgzNGY2M2VkZjcwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3BzM2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKPiBAQCAt OTM0LDcgKzkzNCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwczNmYl92c3luY19pbnRlcnJ1cHQo aW50IGlycSwgdm9pZCAqcHRyKQo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMg cHMzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwczNmYl9vcHMgPSB7 Cj4gIAkuZmJfb3Blbgk9IHBzM2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHBzM2ZiX3JlbGVh c2UsCj4gIAkuZmJfcmVhZCAgICAgICAgPSBmYl9zeXNfcmVhZCwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy92aWRlby9mYmRldi9wdnIyZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHZyMmZiLmMK PiBpbmRleCAwYTNiMmI3Yzc4OTEuLmZjYjE2ZWFiYmIwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3B2cjJmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9wdnIyZmIu Ywo+IEBAIC03MDcsNyArNzA3LDcgQEAgc3RhdGljIHNzaXplX3QgcHZyMmZiX3dyaXRlKHN0cnVj dCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFyICpidWYsCj4gIH0KPiAgI2VuZGlmIC8qIENPTkZJ R19QVlIyX0RNQSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcHZyMmZiX29wcyA9IHsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgcHZyMmZiX29wcyA9IHsKPiAgCS5vd25lcgkJ PSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBwdnIyZmJfc2V0Y29scmVnLAo+ICAJ LmZiX2JsYW5rCT0gcHZyMmZiX2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3B4YTE2OGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMKPiBpbmRleCAx NDEwZjQ3NmUxMzUuLmM2NzJjMzM1NGEyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3B4YTE2OGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMKPiBA QCAtNTQ1LDcgKzU0NSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBweGExNjhmYl9oYW5kbGVfaXJx KGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgCXJldHVybiBJUlFfTk9ORTsKPiAgfQo+ICAKPiAt c3RhdGljIHN0cnVjdCBmYl9vcHMgcHhhMTY4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGZiX29wcyBweGExNjhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfY2hlY2tfdmFyCT0gcHhhMTY4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBw eGExNjhmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZi LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiBpbmRleCBmNzBjOWY3OTYyMmUuLjZm N2U5ZmI2MzE5MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiBAQCAtNTk3LDcgKzU5Nyw3IEBAIHN0 YXRpYyBpbnQgcHhhZmJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBweGFmYl9vcHMgPSB7 Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHB4YWZiX29wcyA9IHsKPiAgCS5vd25lcgkJ PSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBweGFmYl9jaGVja192YXIsCj4gIAku ZmJfc2V0X3Bhcgk9IHB4YWZiX3NldF9wYXIsCj4gQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMg aW50IG92ZXJsYXlmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG92ZXJsYXlfZmJfb3BzID0gewo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBvdmVybGF5X2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJ CT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3BlbgkJPSBvdmVybGF5ZmJfb3BlbiwKPiAgCS5mYl9y ZWxlYXNlCQk9IG92ZXJsYXlmYl9yZWxlYXNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3E0MGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3E0MGZiLmMKPiBpbmRleCAwYjkz YWE5NjRkNDMuLjc5ZmYxNGEzNWM4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3E0MGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3E0MGZiLmMKPiBAQCAtNzUsNyAr NzUsNyBAQCBzdGF0aWMgaW50IHE0MGZiX3NldGNvbHJlZyh1bnNpZ25lZCByZWdubywgdW5zaWdu ZWQgcmVkLCB1bnNpZ25lZCBncmVlbiwKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBxNDBmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJf b3BzIHE0MGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRj b2xyZWcJPSBxNDBmYl9zZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3Qs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmMKPiBpbmRleCBjYTU5M2EzZTQxZDcuLjc2NGVjMzI4 NWU2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jCj4gQEAgLTE2NzMsNyArMTY3Myw3 IEBAIHN0YXRpYyBpbnQgcml2YWZiX3N5bmMoc3RydWN0IGZiX2luZm8gKmluZm8pCj4gICAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KPiAgCj4gIC8qIGtlcm5lbCBpbnRlcmZhY2UgKi8KPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgcml2YV9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJf b3BzIHJpdmFfZmJfb3BzID0gewo+ICAJLm93bmVyIAkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9v cGVuCT0gcml2YWZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHJpdmFmYl9yZWxlYXNlLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzYy1mYi5jIGIvZHJpdmVycy92aWRlby9m YmRldi9zM2MtZmIuYwo+IGluZGV4IGJhMDRkN2E2NzgyOS4uZjQ4NzFjNDMwZjhkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNjLWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3MzYy1mYi5jCj4gQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyBpbnQgczNjX2Zi X2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNjX2ZiX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNjX2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBU SElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBzM2NfZmJfY2hlY2tfdmFyLAo+ICAJLmZi X3NldF9wYXIJPSBzM2NfZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi9zM2MyNDEwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNjMjQxMGZiLmMKPiBpbmRl eCBhNzAyZGE4OTkxMGIuLjJmYjE1YTU0MDE2NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3MzYzI0MTBmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zM2MyNDEwZmIu Ywo+IEBAIC02MTgsNyArNjE4LDcgQEAgc3RhdGljIGludCBzM2MyNDEwZmJfZGVidWdfc3RvcmUo c3RydWN0IGRldmljZSAqZGV2LAo+ICAKPiAgc3RhdGljIERFVklDRV9BVFRSKGRlYnVnLCAwNjY0 LCBzM2MyNDEwZmJfZGVidWdfc2hvdywgczNjMjQxMGZiX2RlYnVnX3N0b3JlKTsKPiAgCj4gLXN0 YXRpYyBzdHJ1Y3QgZmJfb3BzIHMzYzI0MTBmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmJfb3BzIHMzYzI0MTBmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfY2hlY2tfdmFyCT0gczNjMjQxMGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0g czNjMjQxMGZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9zM2ZiLmMKPiBpbmRleCBiZTE2YzM0OWMxMGYuLjYw YzQyNGZhZTk4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jCj4gQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0 YXRpYyBpbnQgczNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwg c3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAo+ICAvKiBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucyAq Lwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIHMzZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX29wZW4JPSBzM2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHMzZmJfcmVsZWFzZSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi9zYTExMDBmYi5jCj4gaW5kZXggODFhZDNhYTFjYTA2Li40NjgwY2MzZWZiODEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jCj4gKysrIGIvZHJp dmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jCj4gQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMg aW50IHNhMTEwMGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gdm1faW9t YXBfbWVtb3J5KHZtYSwgaW5mby0+Zml4Lm1taW9fc3RhcnQsIGluZm8tPmZpeC5tbWlvX2xlbik7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHNhMTEwMGZiX29wcyA9IHsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ExMTAwZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRI SVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IHNhMTEwMGZiX2NoZWNrX3ZhciwKPiAgCS5m Yl9zZXRfcGFyCT0gc2ExMTAwZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9mYmRldi9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Nh dmFnZS9zYXZhZ2VmYl9kcml2ZXIuYwo+IGluZGV4IDUxMjc4OWY1Zjg4NC4uYWFiMzEyYTdkOWRh IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2F2YWdlL3NhdmFnZWZiX2RyaXZl ci5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMK PiBAQCAtMTYzNyw3ICsxNjM3LDcgQEAgc3RhdGljIGludCBzYXZhZ2VmYl9yZWxlYXNlKHN0cnVj dCBmYl9pbmZvICppbmZvLCBpbnQgdXNlcikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBzYXZhZ2VmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmJfb3BzIHNhdmFnZWZiX29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxF LAo+ICAJLmZiX29wZW4gICAgICAgID0gc2F2YWdlZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlICAg ICA9IHNhdmFnZWZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2g3NzYwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYwo+IGluZGV4IGFiOGZl ODM4Yzc3Ni4uYjhlYzhkOWJiNGM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2g3NzYwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYwo+IEBAIC0z NDEsNyArMzQxLDcgQEAgc3RhdGljIGludCBzaDc3NjBmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZv ICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHNo Nzc2MGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2g3NzYwZmJfb3Bz ID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkuZmJfYmxhbmsgPSBzaDc3NjBmYl9i bGFuaywKPiAgCS5mYl9jaGVja192YXIgPSBzaDc3NjBmYl9jaGVja192YXIsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xjZGNmYi5jIGIvZHJpdmVycy92aWRl by9mYmRldi9zaF9tb2JpbGVfbGNkY2ZiLmMKPiBpbmRleCBjMjQ5NzYzZGJmMGIuLjI1ZjExOWVm ZWJjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NoX21vYmlsZV9sY2RjZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xjZGNmYi5jCj4gQEAgLTE0 OTAsNyArMTQ5MCw3IEBAIHNoX21vYmlsZV9sY2RjX292ZXJsYXlfbW1hcChzdHJ1Y3QgZmJfaW5m byAqaW5mbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIAkJCQkgb3ZsLT5kbWFfaGFu ZGxlLCBvdmwtPmZiX3NpemUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzaF9t b2JpbGVfbGNkY19vdmVybGF5X29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMg c2hfbW9iaWxlX2xjZGNfb3ZlcmxheV9vcHMgPSB7Cj4gIAkub3duZXIgICAgICAgICAgPSBUSElT X01PRFVMRSwKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+ICAJLmZiX3dyaXRl ICAgICAgID0gZmJfc3lzX3dyaXRlLAo+IEBAIC0xOTY0LDcgKzE5NjQsNyBAQCBzaF9tb2JpbGVf bGNkY19tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKPiAgCQkJCSBjaC0+ZG1hX2hhbmRsZSwgY2gtPmZiX3NpemUpOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBzaF9tb2JpbGVfbGNkY19vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZmJfb3BzIHNoX21vYmlsZV9sY2RjX29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9 IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwk9IHNoX21vYmlsZV9sY2RjX3NldGNvbHJl ZywKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZi LmMKPiBpbmRleCA3ZGMwMTA1ZjcwMGQuLjUzM2EwNDdkMDdhMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Np bXBsZWZiLmMKPiBAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBzaW1wbGVmYl9kZXN0cm95 KHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJCWlvdW5tYXAoaW5mby0+c2NyZWVuX2Jhc2UpOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzaW1wbGVmYl9vcHMgPSB7Cj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHNpbXBsZWZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElT X01PRFVMRSwKPiAgCS5mYl9kZXN0cm95CT0gc2ltcGxlZmJfZGVzdHJveSwKPiAgCS5mYl9zZXRj b2xyZWcJPSBzaW1wbGVmYl9zZXRjb2xyZWcsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvc2lzL3Npc19tYWluLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfbWFpbi5j Cj4gaW5kZXggYjQ0M2E4ZWQ0NjAwLi5hYzE0MDk2MmIxYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9zaXMvc2lzX21haW4uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2lzL3Npc19tYWluLmMKPiBAQCAtMTkwNiw3ICsxOTA2LDcgQEAgc2lzZmJfZ2V0X2ZpeChzdHJ1 Y3QgZmJfZml4X3NjcmVlbmluZm8gKmZpeCwgaW50IGNvbiwgc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tICBmYl9vcHMgc3RydWN0dXJlcyAtLS0tLS0tLS0t LS0tLS0tLSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgc2lzZmJfb3BzID0gewo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzaXNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9IHNpc2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHNp c2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2tlbGV0b25m Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9za2VsZXRvbmZiLmMKPiBpbmRleCA4MTJhMzZjYjYw YzMuLmJjYWNmYjY5MzRmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NrZWxl dG9uZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2tlbGV0b25mYi5jCj4gQEAgLTYz NCw3ICs2MzQsNyBAQCBpbnQgeHh4ZmJfc3luYyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgICAg ICAqICBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucwo+ICAgICAgICovCj4gIAo+IC1zdGF0aWMgc3Ry dWN0IGZiX29wcyB4eHhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHh4 eGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuCT0geHh4 ZmJfb3BlbiwKPiAgCS5mYl9yZWFkCT0geHh4ZmJfcmVhZCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9zbTcxMmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NtNzEyZmIuYwo+ IGluZGV4IDIwN2QwYWRkNjg0Yi4uNmExYjRhODUzZDllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvc203MTJmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zbTcxMmZi LmMKPiBAQCAtMTM2OSw3ICsxMzY5LDcgQEAgc3RhdGljIGludCBzbXRjX3NldF9wYXIoc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgc210Y2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc210Y2Zi X29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192 YXIgPSBzbXRjX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyICAgPSBzbXRjX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc21zY3VmeC5jIGIvZHJpdmVycy92aWRl by9mYmRldi9zbXNjdWZ4LmMKPiBpbmRleCBlMzYyZDdkYTg3ZmMuLmJmYWMzZWU0YTY0MiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Ntc2N1ZnguYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvc21zY3VmeC5jCj4gQEAgLTEyNjgsNyArMTI2OCw3IEBAIHN0YXRpYyBpbnQg dWZ4X29wc19ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdWZ4X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdWZ4X29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3JlYWQgPSBmYl9zeXNfcmVhZCwKPiAgCS5mYl93cml0ZSA9IHVmeF9v cHNfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NzZDEzMDdmYi5jCj4gaW5kZXggNzhjYTdmZmM0MGMyLi4x NDI1MzUyNjdmZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMKPiBAQCAtMjgwLDcgKzI4 MCw3IEBAIHN0YXRpYyB2b2lkIHNzZDEzMDdmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKmlu Zm8sIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hCj4gIAlzc2QxMzA3ZmJfdXBkYXRlX2Rpc3Bs YXkocGFyKTsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgc3NkMTMwN2ZiX29wcyA9 IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc3NkMTMwN2ZiX29wcyA9IHsKPiAgCS5v d25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9yZWFkCT0gZmJfc3lzX3JlYWQsCj4gIAkuZmJf d3JpdGUJPSBzc2QxMzA3ZmJfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvc3N0ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0ZmIuYwo+IGluZGV4IDRlMjJhZTM4 M2M4Ny4uODJlNzA3YTQ4ZTRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0 ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0ZmIuYwo+IEBAIC0xMzA3LDcgKzEz MDcsNyBAQCBzdGF0aWMgaW50IHNzdGZiX3NldHVwKGNoYXIgKm9wdGlvbnMpCj4gIH0KPiAgCj4g IAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzc3RmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZmJfb3BzIHNzdGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAg CS5mYl9jaGVja192YXIJPSBzc3RmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IHNzdGZi X3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+IGluZGV4IDllODhlM2Y1OTRjMi4uNTQwMGFiNzlm YmJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+IEBAIC0xMTAxLDcgKzExMDEsNyBAQCBzdGlmYl9p bml0X2Rpc3BsYXkoc3RydWN0IHN0aWZiX2luZm8gKmZiKQo+ICAKPiAgLyogLS0tLS0tLS0tLS0t IEludGVyZmFjZXMgdG8gaGFyZHdhcmUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLSAqLwo+ICAKPiAt c3RhdGljIHN0cnVjdCBmYl9vcHMgc3RpZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGZiX29wcyBzdGlmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJf c2V0Y29scmVnCT0gc3RpZmJfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCT0gc3RpZmJfYmxhbmss Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyMTAwMC5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9zdW54dnIxMDAwLmMKPiBpbmRleCA3ODRjOWJkNWQ1MDIuLjE1YjA3OTUw NWEwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjEwMDAuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyMTAwMC5jCj4gQEAgLTU5LDcgKzU5LDcgQEAg c3RhdGljIGludCBnZmJfc2V0Y29scmVnKHVuc2lnbmVkIHJlZ25vLAo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGdmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIGdmYl9vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX3NldGNvbHJlZwkJPSBnZmJfc2V0Y29scmVnLAo+ICAJLmZiX2ZpbGxyZWN0CQk9IGNm Yl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAw LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjI1MDAuYwo+IGluZGV4IDMxNjgzZTVhOGI3 OS4uMWQzYmFjZDlkNWFjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZy MjUwMC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAwLmMKPiBAQCAtNjMs NyArNjMsNyBAQCBzdGF0aWMgaW50IHMzZF9zZXRjb2xyZWcodW5zaWduZWQgcmVnbm8sCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNkX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNkX29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IHMzZF9zZXRjb2xyZWcsCj4gIAkuZmJfZmls bHJlY3QJCT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3N1bnh2cjUwMC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAuYwo+IGluZGV4IGQz OTI5NzYxMjZhNi4uOWRhZjE3YjExMTA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvc3VueHZyNTAwLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jCj4g QEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2lu Zm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSkKPiAgCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg ZmJfb3BzIGUzZF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGUzZF9vcHMg PSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBlM2Rf c2V0Y29scmVnLAo+ICAJLmZiX2ZpbGxyZWN0CQk9IGUzZF9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi90Y3guYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGN4LmMK PiBpbmRleCA3ODk3Zjg2ZmIyM2UuLjM0YjJlNWI2ZTg0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3RjeC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi90Y3guYwo+IEBA IC00MCw3ICs0MCw3IEBAIHN0YXRpYyBpbnQgdGN4X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJf c2NyZWVuaW5mbyAqLCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVy YXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdGN4X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdGN4X29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IHRjeF9zZXRjb2xyZWcsCj4gIAkuZmJfYmxh bmsJCT0gdGN4X2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RkZnhm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi90ZGZ4ZmIuYwo+IGluZGV4IGZkYmIxZWE2NmU2Yy4u MDM0OWNmNjk2NTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGRmeGZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RkZnhmYi5jCj4gQEAgLTExNDEsNyArMTE0MSw3 IEBAIHN0YXRpYyBpbnQgdGRmeGZiX2N1cnNvcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0 IGZiX2N1cnNvciAqY3Vyc29yKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIHRkZnhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRk ZnhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gdGRmeGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gdGRmeGZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdGdhZmIuYwo+IGluZGV4IDI4NmIyMzcxYzdkZC4uN2NkMjYyODU4MjQxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdGdhZmIuYwo+IEBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNfZHJpdmVy IHRnYWZiX3RjX2RyaXZlcjsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdGdhZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyB0Z2FmYl9vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX2NoZWNrX3ZhcgkJPSB0Z2FmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3BhcgkJPSB0 Z2FmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RtaW9mYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi90bWlvZmIuYwo+IGluZGV4IDRmMmZjZWExMGQyYi4uNTAx MTE5NjZjOTgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdG1pb2ZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RtaW9mYi5jCj4gQEAgLTY0Niw3ICs2NDYsNyBAQCBz dGF0aWMgaW50IHRtaW9mYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHRtaW9mYl9vcHMg PSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRtaW9mYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAo+ICAJLmZiX2lvY3RsCT0gdG1pb2ZiX2lvY3RsLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jIGIvZHJpdmVycy92aWRl by9mYmRldi90cmlkZW50ZmIuYwo+IGluZGV4IGRhNzRiZjZjNTk5Ni4uNzE1NTA5OTE3ZWFhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmMKPiArKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jCj4gQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHN0YXRp YyBpbnQgdHJpZGVudGZiX2JsYW5rKGludCBibGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqaW5m bykKPiAgCXJldHVybiAoYmxhbmtfbW9kZSA9PSBGQl9CTEFOS19OT1JNQUwpID8gMSA6IDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHRyaWRlbnRmYl9vcHMgPSB7Cj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRyaWRlbnRmYl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElT X01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcgPSB0cmlkZW50ZmJfc2V0Y29scmVnLAo+ICAJLmZi X3Bhbl9kaXNwbGF5ID0gdHJpZGVudGZiX3Bhbl9kaXNwbGF5LAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3ZhbGt5cmllZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmFsa3ly aWVmYi5jCj4gaW5kZXggZTA0ZmRlOWMxZmNkLi5jYThkNzM0M2FhYTEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy92aWRlby9mYmRldi92YWxreXJpZWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3ZhbGt5cmllZmIuYwo+IEBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGludCB2YWxreXJp ZV9pbml0X2luZm8oc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9pbmZvX3ZhbGt5cmll ICpwKTsKPiAgc3RhdGljIHZvaWQgdmFsa3lyaWVfcGFyX3RvX2ZpeChzdHJ1Y3QgZmJfcGFyX3Zh bGt5cmllICpwYXIsIHN0cnVjdCBmYl9maXhfc2NyZWVuaW5mbyAqZml4KTsKPiAgc3RhdGljIHZv aWQgdmFsa3lyaWVfaW5pdF9maXgoc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvICpmaXgsIHN0cnVj dCBmYl9pbmZvX3ZhbGt5cmllICpwKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHZhbGt5 cmllZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2YWxreXJpZWZiX29w cyA9IHsKPiAgCS5vd25lciA9CVRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9CXZhbGt5 cmllZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPQl2YWxreXJpZWZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3ZmYi5jCj4gaW5kZXggNTQxMjc5MDViZmU3Li45NWQzYzU5ODY3ZDAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy92aWRlby9mYmRldi92ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv dmZiLmMKPiBAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgaW50IHZmYl9wYW5fZGlzcGxheShzdHJ1 Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKPiAgc3RhdGljIGludCB2ZmJfbW1hcChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywKPiAgCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ICAK PiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBmYl9vcHMgdmZiX29wcyA9IHsKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+ ICAJLmZiX3dyaXRlICAgICAgID0gZmJfc3lzX3dyaXRlLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IHZm Yl9jaGVja192YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMKPiBpbmRleCAyYzZhNTc2ZWQ4NGMuLmEy MGVlYjgzMDhmZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYwo+ ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jCj4gQEAgLTEyNzAsNyArMTI3MCw3 IEBAIHN0YXRpYyB2b2lkIHZnYTE2ZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAg CWZyYW1lYnVmZmVyX3JlbGVhc2UoaW5mbyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJf b3BzIHZnYTE2ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2Z2ExNmZi X29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuICAgICAgICA9 IHZnYTE2ZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlICAgICA9IHZnYTE2ZmJfcmVsZWFzZSwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gaW5kZXggYmU4ZDk3MDJjYmIyLi5mNzQ0NDc5ZGM3 ZGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gQEAgLTIzOCw3ICsyMzgsNyBA QCBzdGF0aWMgaW50IHZ0ODUwMGxjZF9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICpp bmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHZ0ODUw MGxjZF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZ0ODUwMGxjZF9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0X3Bhcgk9IHZ0ODUwMGxj ZF9zZXRfcGFyLAo+ICAJLmZiX3NldGNvbHJlZwk9IHZ0ODUwMGxjZF9zZXRjb2xyZWcsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdnQ4NjIzZmIuYwo+IGluZGV4IGMzMzlhOGZiYWQ4MS4uN2IzZWVmMWI4OTNmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvdnQ4NjIzZmIuYwo+IEBAIC02MzQsNyArNjM0LDcgQEAgc3RhdGljIGludCB2 dDg2MjNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0 IGZiX2luZm8gKmkKPiAgCj4gIC8qIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zICovCj4gIAo+IC1z dGF0aWMgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmJfb3BzIHZ0ODYyM2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAg CS5mYl9vcGVuCT0gdnQ4NjIzZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlCT0gdnQ4NjIzZmJfcmVs ZWFzZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvdzEwMGZiLmMKPiBpbmRleCAzYmUwNzgwN2VkY2QuLmZlNjI4ZWMyMDE0 OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3cxMDBmYi5jCj4gKysrIGIvZHJp dmVycy92aWRlby9mYmRldi93MTAwZmIuYwo+IEBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIGlu dCB3MTAwZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgLyoKPiAgICogIEZyYW1l IGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyB3MTAwZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB3MTAwZmJfb3BzID0gewo+ICAJ Lm93bmVyICAgICAgICA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9IHcxMDBmYl9j aGVja192YXIsCj4gIAkuZmJfc2V0X3BhciAgID0gdzEwMGZiX3NldF9wYXIsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvd204NTA1ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv d204NTA1ZmIuYwo+IGluZGV4IDE3Yzc4MDMxNWNhNS4uYjY1NmVmZjU4YzIzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvd204NTA1ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvd204NTA1ZmIuYwo+IEBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIGludCB3bTg1MDVm Yl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHdtODUwNWZiX29wcyA9IHsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBmYl9vcHMgd204NTA1ZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3NldF9wYXIJPSB3bTg1MDVmYl9zZXRfcGFyLAo+ICAJLmZiX3NldGNv bHJlZwk9IHdtODUwNWZiX3NldGNvbHJlZywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi94ZW4tZmJmcm9udC5jIGIvZHJpdmVycy92aWRlby9mYmRldi94ZW4tZmJmcm9udC5jCj4g aW5kZXggYTNkNmI2ZGIyMjFiLi4wMDMwN2I4NjkzYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi94ZW4tZmJmcm9udC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi94ZW4t ZmJmcm9udC5jCj4gQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW50IHhlbmZiX3NldF9wYXIo c3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0 cnVjdCBmYl9vcHMgeGVuZmJfZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyB4ZW5mYl9mYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVh ZAk9IGZiX3N5c19yZWFkLAo+ICAJLmZiX3dyaXRlCT0geGVuZmJfd3JpdGUsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYveGlsaW54ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv eGlsaW54ZmIuYwo+IGluZGV4IDg2Mjg4MjliNDcwZC4uY2E0ZmY2NThjYWQwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYveGlsaW54ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYveGlsaW54ZmIuYwo+IEBAIC0yNDcsNyArMjQ3LDcgQEAgeGlsaW54X2ZiX2JsYW5rKGlu dCBibGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqZmJpKQo+ICAJcmV0dXJuIDA7IC8qIHN1Y2Nl c3MgKi8KPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgeGlsaW54ZmJfb3BzID0gewo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB4aWxpbnhmYl9vcHMgPSB7Cj4gIAkub3duZXIJ CQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSB4aWxpbnhfZmJfc2V0Y29scmVn LAo+ICAJLmZiX2JsYW5rCQk9IHhpbGlueF9mYl9ibGFuaywKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0748C43603 for ; Thu, 5 Dec 2019 09:37:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8FD1B2464D for ; Thu, 5 Dec 2019 09:37:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8FD1B2464D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 188596F629; Thu, 5 Dec 2019 09:37:16 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 922596F628; Thu, 5 Dec 2019 09:37:14 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2019 01:37:13 -0800 X-IronPort-AV: E=Sophos;i="5.69,280,1571727600"; d="scan'208";a="205714654" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2019 01:37:10 -0800 From: Jani Nikula To: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org In-Reply-To: Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: Date: Thu, 05 Dec 2019 11:37:07 +0200 Message-ID: <875zivi058.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v3 08/12] video: constify fb ops across all drivers X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAwMyBEZWMgMjAxOSwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4g d3JvdGU6Cj4gTm93IHRoYXQgdGhlIGZib3BzIG1lbWJlciBvZiBzdHJ1Y3QgZmJfaW5mbyBpcyBj b25zdCwgd2UgY2FuIHN0YXJ0Cj4gbWFraW5nIHRoZSBvcHMgY29uc3QgYXMgd2VsbC4KPgo+IFRo aXMgZG9lcyBub3QgY292ZXIgYWxsIGRyaXZlcnM7IHNvbWUgYWN0dWFsbHkgbW9kaWZ5IHRoZSBm Ym9wcyBzdHJ1Y3QsCj4gZm9yIGV4YW1wbGUgdG8gYWRqdXN0IGZvciBkaWZmZXJlbnQgY29uZmln dXJhdGlvbnMsIGFuZCBvdGhlcnMgZG8gbW9yZQo+IGludm9sdmVkIHRoaW5ncyB0aGF0IEknZCBy YXRoZXIgbm90IHRvdWNoIGluIHByYWN0aWNhbGx5IG9ic29sZXRlCj4gZHJpdmVycy4gTW9zdGx5 IHRoaXMgaXMgdGhlIGxvdyBoYW5naW5nIGZydWl0IHdoZXJlIHdlIGNhbiBhZGQgImNvbnN0Igo+ IGFuZCBiZSBkb25lIHdpdGggaXQuCj4KPiB2MzoKPiAtIHVuLWNvbnN0aWZ5IGF0eWZiLCBtYjg2 Mnh4LCBudmlkaWEgYW5kIHV2ZXNhYmYgKDBkYXkpCj4KPiB2MjoKPiAtIGZpeCB0eXBvIChDaHJp c3RvcGhlIGRlIERpbmVjaGluKQo+IC0gdXNlICJzdGF0aWMgY29uc3QiIGluc3RlYWQgb2YgImNv bnN0IHN0YXRpYyIgaW4gbXgzZmIuYwo+IC0gYWxzbyBjb25zdGlmeSBzbXNjdWZ4LmMKPgo+IENj OiBsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKPiBSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRl ciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8 amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKUHVzaGVkIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhpcyBw YXRjaCB0byBkcm0tbWlzYy1uZXh0LCB0aGFua3MgZm9yIHRoZQpyZXZpZXdzIGFuZCBhY2tzLgoK QlIsCkphbmkuCgo+IC0tLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2LzY4MzI4ZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FyY2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FzaWxpYW50ZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0bWVsX2xjZGZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkxMjhmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYmFzZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F1MTEwMGZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F1MTIwMGZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2J3Mi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMTQuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMy5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnNi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBzZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NscHM3MTF4LWZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvYmFsdF9sY2RmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvbnRyb2xmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2RuZmIuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2VmaWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZtMmZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZzbC1kaXUtZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2czNjRmYi5jICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2diZWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4MWZiX2NvcmUu YyAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4ZmJfY29yZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5j ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dvbGRmaXNoZmIuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2dydmdhLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2d4dDQ1MDAuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hlY3ViYWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hpdGZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2hwZmIuYyAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2h5cGVydl9mYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ltc3R0ZmIuYyAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2ludGVsZmIvaW50ZWxmYmRy di5jICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2t5cm8vZmJkZXYuYyAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2xlby5jICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hY2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9j cnRjMi5jICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21heGluZWZiLmMgICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21ieC9tYnhmYi5jICAgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMgICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jICAg ICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMgICAgICAgICAg ICAgICAgICAgIHwgNSArKystLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29jZmIuYyAgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29mZmIuYyAgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9v bWFwZmItbWFpbi5jIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3A5MTAwLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BsYXRpbnVtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYWEtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYmEtZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWdiLWItZmIuYyAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMgICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B2cjJmYi5jICAgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMgICAg ICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMgICAgICAg ICAgICAgICAgICAgIHwgNCArKy0tCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvcTQwZmIuYyAgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5j ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNjLWZiLmMgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNjMjQxMGZiLmMg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jICAgICAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2ExMTAwZmIuYyAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2F2YWdlL3NhdmFn ZWZiX2RyaXZlci5jICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYyAg ICAgICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xj ZGNmYi5jICAgICAgICAgfCA0ICsrLS0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX21h aW4uYyAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9za2VsZXRvbmZi LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zbTcxMmZiLmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zbXNjdWZ4LmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zc3RmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdGlmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIxMDAw LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAw LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90Y3guYyAgICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90ZGZ4ZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90bWlvZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIu YyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92YWxreXJpZWZi LmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92ZmIuYyAgICAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2Rm Yi5jICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi93bTg1MDVmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi94ZW4tZmJmcm9u dC5jICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi94aWxpbnhmYi5j ICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgMTA3IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRp b25zKCspLCAxMTAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi82ODMyOGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2LzY4MzI4ZmIuYwo+IGluZGV4IGQ0 OGU5NjA4OGY3Ni4uNDkxZmQ1YTgyOTkzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvNjgzMjhmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi82ODMyOGZiLmMKPiBAQCAt OTYsNyArOTYsNyBAQCBzdGF0aWMgaW50IG1jNjh4MzI4ZmJfcGFuX2Rpc3BsYXkoc3RydWN0IGZi X3Zhcl9zY3JlZW5pbmZvICp2YXIsCj4gIAkJCSAgIHN0cnVjdCBmYl9pbmZvICppbmZvKTsKPiAg c3RhdGljIGludCBtYzY4eDMyOGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1jNjh4MzI4 ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBtYzY4eDMyOGZiX29wcyA9 IHsKPiAgCS5mYl9jaGVja192YXIJPSBtYzY4eDMyOGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRf cGFyCT0gbWM2OHgzMjhmYl9zZXRfcGFyLAo+ICAJLmZiX3NldGNvbHJlZwk9IG1jNjh4MzI4ZmJf c2V0Y29scmVnLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYyBi L2RyaXZlcnMvdmlkZW8vZmJkZXYvYWNvcm5mYi5jCj4gaW5kZXggN2NhY2FlNWE4Nzk3Li5hM2Fm NDk1MjkxNzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9hY29ybmZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fjb3JuZmIuYwo+IEBAIC02MDQsNyArNjA0LDcgQEAg YWNvcm5mYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgYWNvcm5mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGFjb3Ju ZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9 IGFjb3JuZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhY29ybmZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2FtYmEtY2xjZC5jCj4gaW5kZXggN2RlNDNiZTZlZjJjLi5jM2Q1NWZjNmM0ZTAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9hbWJhLWNsY2QuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMKPiBAQCAtNDIzLDcgKzQyMyw3IEBAIHN0YXRp YyBpbnQgY2xjZGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gcmV0Owo+ ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBjbGNkZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBjbGNkZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9E VUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGNsY2RmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bh cgk9IGNsY2RmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Ft aWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMKPiBpbmRleCA5MWRkYzk2MDIwMTQu LjIwZTAzZTAwYjY2ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtaWZiLmMKPiBAQCAtMzQ5Myw3ICszNDkzLDcg QEAgc3RhdGljIGlycXJldHVybl90IGFtaWZiX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZf aWQpCj4gIH0KPiAgCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBhbWlmYl9vcHMgPSB7Cj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGFtaWZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBU SElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBhbWlmYl9jaGVja192YXIsCj4gIAkuZmJf c2V0X3Bhcgk9IGFtaWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvYXJjZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJjZmIuYwo+IGluZGV4IGE0ODc0MWFh YjI0MC4uMzE0YWI4MmUwMWMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJj ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJjZmIuYwo+IEBAIC00OTEsNyArNDkx LDcgQEAgc3RhdGljIHNzaXplX3QgYXJjZmJfd3JpdGUoc3RydWN0IGZiX2luZm8gKmluZm8sIGNv bnN0IGNoYXIgX191c2VyICpidWYsCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGZiX29wcyBhcmNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3Bz IGFyY2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuCT0g YXJjZmJfb3BlbiwKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fy a2ZiLmMKPiBpbmRleCBmOTQwZThiNjZiODUuLjExYWI5YTE1Mzg2MCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fy a2ZiLmMKPiBAQCAtOTE3LDcgKzkxNyw3IEBAIHN0YXRpYyBpbnQgYXJrZmJfcGFuX2Rpc3BsYXko c3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsIHN0cnVjdCBmYl9pbmZvICppbmZvCj4gIAo+ ICAvKiBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucyAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9v cHMgYXJrZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhcmtmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9IGFya2ZiX29wZW4s Cj4gIAkuZmJfcmVsZWFzZQk9IGFya2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvYXNpbGlhbnRmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hc2lsaWFudGZi LmMKPiBpbmRleCBlYTMxMDU0YTI4Y2EuLjNlMDA2ZGE0Nzc1MiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2FzaWxpYW50ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv YXNpbGlhbnRmYi5jCj4gQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGludCBhc2lsaWFudGZiX3Nl dF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pOwo+ICBzdGF0aWMgaW50IGFzaWxpYW50ZmJfc2V0 Y29scmVnKHVfaW50IHJlZ25vLCB1X2ludCByZWQsIHVfaW50IGdyZWVuLCB1X2ludCBibHVlLAo+ ICAJCQkJdV9pbnQgdHJhbnNwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbyk7Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGZiX29wcyBhc2lsaWFudGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBm Yl9vcHMgYXNpbGlhbnRmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAku ZmJfY2hlY2tfdmFyCT0gYXNpbGlhbnRmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGFz aWxpYW50ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9hdG1l bF9sY2RmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hdG1lbF9sY2RmYi5jCj4gaW5kZXggNWZm OGUwMzIwZDk1Li5kNTY3ZjVkNTZjMTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRl di9hdG1lbF9sY2RmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9hdG1lbF9sY2RmYi5j Cj4gQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2xjZGZiX2JsYW5rKGludCBi bGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCXJldHVybiAoKGJsYW5rX21vZGUg PT0gRkJfQkxBTktfTk9STUFMKSA/IDEgOiAwKTsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgYXRtZWxfbGNkZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBh dG1lbF9sY2RmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gYXRtZWxfbGNkZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhdG1lbF9s Y2RmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkx MjhmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hdHkvYXR5MTI4ZmIuYwo+IGluZGV4IGZjMWU0 NWQ0NDcxOS4uZDdlNDFjOGRkNTMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv YXR5L2F0eTEyOGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkxMjhmYi5j Cj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBhdHkxMjhfYmxfc2V0X3Bvd2VyKHN0 cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgcG93ZXIpOwo+ICAJCQkgIChyZWFkYihiaW9zICsgKHYp ICsgMykgPDwgMjQpKQo+ICAKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGF0eTEyOGZiX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXR5MTI4ZmJfb3BzID0gewo+ICAJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGF0eTEyOGZiX2NoZWNr X3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gYXR5MTI4ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2Jhc2UuYyBiL2RyaXZlcnMvdmlkZW8vZmJk ZXYvYXR5L3JhZGVvbl9iYXNlLmMKPiBpbmRleCA0Y2EwNzg2NmYyZjYuLjNhZjAwZTNiOTY1ZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYmFzZS5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2Jhc2UuYwo+IEBAIC0xOTY1LDcgKzE5 NjUsNyBAQCBzdGF0aWMgaW50IHJhZGVvbmZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIH0KPiAgCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyByYWRlb25mYl9vcHMgPSB7Cj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHJhZGVvbmZiX29wcyA9IHsKPiAgCS5vd25lcgkJ CT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCQk9IHJhZGVvbmZiX2NoZWNrX3ZhciwK PiAgCS5mYl9zZXRfcGFyCQk9IHJhZGVvbmZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIu Ywo+IGluZGV4IDk5OTQxYWUxZjNhMS4uMzdhNjUxMmZlZGEwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvYXUxMTAwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUx MTAwZmIuYwo+IEBAIC0zNDgsNyArMzQ4LDcgQEAgaW50IGF1MTEwMGZiX2ZiX21tYXAoc3RydWN0 IGZiX2luZm8gKmZiaSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIAkJCWZiZGV2LT5m Yl9sZW4pOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBhdTExMDBmYl9vcHMgPQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhdTExMDBmYl9vcHMgPQo+ICB7Cj4gIAkub3du ZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBhdTExMDBmYl9mYl9zZXRj b2xyZWcsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+IGluZGV4IDI2NWQzYjQ1ZWZkMC4uYzAwZTAx YTE3MzY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYXUxMjAwZmIuYwo+IEBAIC0xNDgzLDcgKzE0ODMsNyBA QCBzdGF0aWMgaW50IGF1MTIwMGZiX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25l ZCBpbnQgY21kLAo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgYXUxMjAwZmJf ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhdTEyMDBmYl9mYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gYXUxMjAw ZmJfZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBhdTEyMDBmYl9mYl9zZXRfcGFyLAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9icm9hZHNoZWV0ZmIuYwo+IGluZGV4IGQ2YmEzNDhkZWI5Zi4uZmQ2NmY0 ZDRhNjIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYnJvYWRzaGVldGZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Jyb2Fkc2hlZXRmYi5jCj4gQEAgLTEwNDgsNyAr MTA0OCw3IEBAIHN0YXRpYyBzc2l6ZV90IGJyb2Fkc2hlZXRmYl93cml0ZShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKPiAgCXJldHVybiAoZXJyKSA/IGVyciA6 IGNvdW50Owo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBicm9hZHNoZWV0ZmJfb3Bz ID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBicm9hZHNoZWV0ZmJfb3BzID0gewo+ ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3JlYWQgICAgICAgID0gZmJfc3lzX3Jl YWQsCj4gIAkuZmJfd3JpdGUJPSBicm9hZHNoZWV0ZmJfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvYncyLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2J3Mi5jCj4gaW5k ZXggNDM2ZjEwZjNkMzc1Li4wZDlhNmJiNTdhMDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9idzIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvYncyLmMKPiBAQCAtMzcs NyArMzcsNyBAQCBzdGF0aWMgaW50IGJ3Ml9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqLCB1bnNpZ25l ZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwo+ICAgKiAgRnJhbWUgYnVmZmVyIG9wZXJhdGlvbnMKPiAg ICovCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBidzJfb3BzID0gewo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGZiX29wcyBidzJfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwK PiAgCS5mYl9ibGFuawkJPSBidzJfYmxhbmssCj4gIAkuZmJfZmlsbHJlY3QJCT0gY2ZiX2ZpbGxy ZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jIGIvZHJp dmVycy92aWRlby9mYmRldi9jYXJtaW5lZmIuYwo+IGluZGV4IDlmM2JlMDI1ODYyMy4uYmYzZjJh OTU5OGIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2FybWluZWZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nhcm1pbmVmYi5jCj4gQEAgLTUyNyw3ICs1MjcsNyBA QCBzdGF0aWMgaW50IGluaXRfaGFyZHdhcmUoc3RydWN0IGNhcm1pbmVfaHcgKmh3KQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNhcm1pbmVmYl9vcHMgPSB7 Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNhcm1pbmVmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gIAku ZmJfY29weWFyZWEJPSBjZmJfY29weWFyZWEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvY2cxNC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9jZzE0LmMKPiBpbmRleCBkODBkOTlk YjNhNDYuLmE2MjBiNTFjZjdkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nn MTQuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2cxNC5jCj4gQEAgLTM5LDcgKzM5LDcg QEAgc3RhdGljIGludCBjZzE0X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAq LCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAq Lwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2cxNF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIGNnMTRfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwK PiAgCS5mYl9zZXRjb2xyZWcJCT0gY2cxNF9zZXRjb2xyZWcsCj4gIAkuZmJfcGFuX2Rpc3BsYXkJ CT0gY2cxNF9wYW5fZGlzcGxheSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9j ZzMuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2czLmMKPiBpbmRleCAwOWY2MTZkZGRmZDcuLjc3 ZjY0NzBjZTY2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NnMy5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9jZzMuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBp bnQgY2czX2lvY3RsKHN0cnVjdCBmYl9pbmZvICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9u Zyk7Cj4gICAqICBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucwo+ICAgKi8KPiAgCj4gLXN0YXRpYyBz dHJ1Y3QgZmJfb3BzIGNnM19vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNn M19vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJ PSBjZzNfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCQk9IGNnM19ibGFuaywKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9jZzYuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2c2LmMK PiBpbmRleCBkNTg4OGFlY2MyZmIuLmExYzY4Y2Q0OGQ3ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2NnNi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9jZzYuYwo+IEBA IC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbnQgY2c2X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJf c2NyZWVuaW5mbyAqLCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVy YXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2c2X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgY2c2X29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IGNnNl9zZXRjb2xyZWcsCj4gIAkuZmJfYmxh bmsJCT0gY2c2X2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBz ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2hpcHNmYi5jCj4gaW5kZXggZjRkYzMyMGRjYWZl Li45OTgwNjdiNzAxZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jaGlwc2Zi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NoaXBzZmIuYwo+IEBAIC03OSw3ICs3OSw3 IEBAIHN0YXRpYyBpbnQgY2hpcHNmYl9zZXRjb2xyZWcodV9pbnQgcmVnbm8sIHVfaW50IHJlZCwg dV9pbnQgZ3JlZW4sIHVfaW50IGJsdWUsCj4gIAkJCSAgICAgdV9pbnQgdHJhbnNwLCBzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbyk7Cj4gIHN0YXRpYyBpbnQgY2hpcHNmYl9ibGFuayhpbnQgYmxhbmssIHN0 cnVjdCBmYl9pbmZvICppbmZvKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNoaXBzZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBjaGlwc2ZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBjaGlwc2ZiX2NoZWNr X3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gY2hpcHNmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1 c2ZiLmMKPiBpbmRleCBlNGNlNTY2N2IxMjUuLmMzYTNlMzQ0Y2VlMyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L2NpcnJ1c2ZiLmMKPiBAQCAtMTk1Niw3ICsxOTU2LDcgQEAgc3RhdGljIHZvaWQgY2lycnVzZmJf em9ycm9fdW5tYXAoc3RydWN0IGZiX2luZm8gKmluZm8pCj4gICNlbmRpZiAvKiBDT05GSUdfWk9S Uk8gKi8KPiAgCj4gIC8qIGZ1bmN0aW9uIHRhYmxlIG9mIHRoZSBhYm92ZSBmdW5jdGlvbnMgKi8K PiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgY2lycnVzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyBjaXJydXNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUs Cj4gIAkuZmJfb3Blbgk9IGNpcnJ1c2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IGNpcnJ1c2Zi X3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIu YyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIuYwo+IGluZGV4IGNhYmJjNzIxZjg5 NC4uYzVkMTVjNmRiMjg3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcx MXgtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY2xwczcxMXgtZmIuYwo+IEBAIC0x NTMsNyArMTUzLDcgQEAgc3RhdGljIGludCBjbHBzNzExeF9mYl9ibGFuayhpbnQgYmxhbmssIHN0 cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGNscHM3MTF4X2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9v cHMgY2xwczcxMXhfZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZi X3NldGNvbHJlZwk9IGNscHM3MTF4X2ZiX3NldGNvbHJlZywKPiAgCS5mYl9jaGVja192YXIJPSBj bHBzNzExeF9mYl9jaGVja192YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv Y29iYWx0X2xjZGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvYmFsdF9sY2RmYi5jCj4gaW5k ZXggNTQ0OTQ2OTAxZThiLi41ZjhiNjMyNGQyZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9jb2JhbHRfbGNkZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29iYWx0 X2xjZGZiLmMKPiBAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBpbnQgY29iYWx0X2xjZGZiX2N1 cnNvcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGZiX2N1cnNvciAqY3Vyc29yKQo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGNvYmFsdF9sY2RfZmJv cHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNvYmFsdF9sY2RfZmJvcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVhZAk9IGNvYmFsdF9sY2RmYl9y ZWFkLAo+ICAJLmZiX3dyaXRlCT0gY29iYWx0X2xjZGZiX3dyaXRlLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NvbnRyb2xmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9jb250 cm9sZmIuYwo+IGluZGV4IDlhNjgwZWYzZmZjMy4uMzhiNjFjZGI1Y2E0IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvY29udHJvbGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvbnRyb2xmYi5jCj4gQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW50IGRlZmF1bHRf dm1vZGUgX19pbml0ZGF0YSA9IFZNT0RFX05WUkFNOwo+ICBzdGF0aWMgaW50IGRlZmF1bHRfY21v ZGUgX19pbml0ZGF0YSA9IENNT0RFX05WUkFNOwo+ICAKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJf b3BzIGNvbnRyb2xmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNvbnRy b2xmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gY29udHJvbGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gY29udHJvbGZiX3NldF9w YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYwo+IGluZGV4IDNhMmQ5ZmYwYWE0Mi4uNDYw ODI2YTdhZDU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYwo+IEBAIC0xMDYwLDcg KzEwNjAsNyBAQCBzdGF0aWMgaW50IGN5YmVyMjAwMGZiX2JsYW5rKGludCBibGFuaywgc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgY3liZXIyMDAwZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBj eWJlcjIwMDBmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gY3liZXIyMDAwZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBjeWJlcjIw MDBmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZi LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMKPiBpbmRleCAyZDNkY2M1MmZjZjMu LjczYzNjNGM4Y2MxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RhOHh4LWZiLmMKPiBAQCAtMTI5NCw3ICsx Mjk0LDcgQEAgc3RhdGljIGludCBkYTh4eGZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZGE4eHhfZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBkYTh4eF9mYl9vcHMgPSB7Cj4g IAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIgPSBmYl9jaGVja192YXIs Cj4gIAkuZmJfc2V0X3BhciA9IGRhOHh4ZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9kbmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2RuZmIuYwo+IGluZGV4 IDhkYTUxN2VhYTRhMy4uMzY4OGY5MTY1ODQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvZG5mYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9kbmZiLmMKPiBAQCAtMTA4 LDcgKzEwOCw3IEBACj4gIHN0YXRpYyBpbnQgZG5mYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBm Yl9pbmZvICppbmZvKTsKPiAgc3RhdGljIHZvaWQgZG5mYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKTsKPiAgCj4gLXN0YXRpYyBz dHJ1Y3QgZmJfb3BzIGRuX2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMg ZG5fZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0g ZG5mYl9ibGFuaywKPiAgCS5mYl9maWxscmVjdAk9IGNmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9lZmlmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlm Yi5jCj4gaW5kZXggNTFkOTdlYzRmNThmLi5mMDNmOWZiNjBjMjYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92aWRlby9mYmRldi9lZmlmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlm Yi5jCj4gQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBlZmlmYl9kZXN0cm95KHN0cnVj dCBmYl9pbmZvICppbmZvKQo+ICAJZmJfZGVhbGxvY19jbWFwKCZpbmZvLT5jbWFwKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZWZpZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyBlZmlmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfZGVzdHJveQk9IGVmaWZiX2Rlc3Ryb3ksCj4gIAkuZmJfc2V0Y29scmVnCT0gZWZpZmJf c2V0Y29scmVnLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi9lcDkzeHgtZmIuYwo+IGluZGV4IGQwNGEwNDcwOTRmYy4u Y2RhMmVmMzM3NDIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZXA5M3h4LWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2VwOTN4eC1mYi5jCj4gQEAgLTQwMiw3ICs0 MDIsNyBAQCBzdGF0aWMgaW50IGVwOTN4eGZiX3NldGNvbHJlZyh1bnNpZ25lZCBpbnQgcmVnbm8s IHVuc2lnbmVkIGludCByZWQsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVj dCBmYl9vcHMgZXA5M3h4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBl cDkzeHhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tf dmFyCT0gZXA5M3h4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBlcDkzeHhmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvZmItcHV2My5jCj4gaW5kZXggZmE2MmM0ZGZmN2QxLi43NWRmNmFhYmFj MjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9mYi1wdXYzLmMKPiArKysgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2ZiLXB1djMuYwo+IEBAIC02NDQsNyArNjQ0LDcgQEAgaW50IHVu aWZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gdm1faW9tYXBfbWVtb3J5 KHZtYSwgaW5mby0+Zml4LnNtZW1fc3RhcnQsIGluZm8tPmZpeC5zbWVtX2xlbik7Cj4gIH0KPiAg Cj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHVuaWZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBmYl9vcHMgdW5pZmJfb3BzID0gewo+ICAJLmZiX3JlYWQgICAgICAgID0gZmJfc3lzX3Jl YWQsCj4gIAkuZmJfd3JpdGUgICAgICAgPSBmYl9zeXNfd3JpdGUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gdW5pZmJfY2hlY2tfdmFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Zm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9mZmIuYwo+IGluZGV4IGNkMmQxZGIyMzlhMi4uOTQ4 YjczMTg0NDMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZmZiLmMKPiArKysg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jCj4gQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGlu dCBmZmJfcGFuX2Rpc3BsYXkoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICosIHN0cnVjdCBmYl9p bmZvICopOwo+ICAgKiAgRnJhbWUgYnVmZmVyIG9wZXJhdGlvbnMKPiAgICovCj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBmZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBmZmJfb3BzID0gewo+ICAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xy ZWcJCT0gZmZiX3NldGNvbHJlZywKPiAgCS5mYl9ibGFuawkJPSBmZmJfYmxhbmssCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZm0yZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Zm0yZmIuYwo+IGluZGV4IGFjN2E0ZWJmZDM5MC4uM2I3MjdkNTI4ZmRlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZm0yZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Zm0yZmIuYwo+IEBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIGludCBmbTJmYl9zZXRjb2xyZWco dV9pbnQgcmVnbm8sIHVfaW50IHJlZCwgdV9pbnQgZ3JlZW4sIHVfaW50IGJsdWUsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVfaW50IHRyYW5zcCwgc3RydWN0IGZiX2luZm8gKmluZm8p Owo+ICBzdGF0aWMgaW50IGZtMmZiX2JsYW5rKGludCBibGFuaywgc3RydWN0IGZiX2luZm8gKmlu Zm8pOwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgZm0yZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBmbTJmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RV TEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gZm0yZmJfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCT0g Zm0yZmJfYmxhbmssCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZnNsLWRpdS1m Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9mc2wtZGl1LWZiLmMKPiBpbmRleCBkMTlmNTgyNjNi NGUuLjdjYWNhYmRkNWYxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZzbC1k aXUtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvZnNsLWRpdS1mYi5jCj4gQEAgLTE0 NDgsNyArMTQ0OCw3IEBAIHN0YXRpYyBpbnQgZnNsX2RpdV9yZWxlYXNlKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBpbnQgdXNlcikKPiAgCXJldHVybiByZXM7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGZzbF9kaXVfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBm c2xfZGl1X29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zh ciA9IGZzbF9kaXVfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPSBmc2xfZGl1X3NldF9wYXIs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZzM2NGZiLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2czNjRmYi5jCj4gaW5kZXggMjIzODk2Y2M1ZjdkLi44NDViNzlkYTJhN2MgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9nMzY0ZmIuYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvZzM2NGZiLmMKPiBAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgZzM2 NGZiX3NldGNvbHJlZyh1X2ludCByZWdubywgdV9pbnQgcmVkLCB1X2ludCBncmVlbiwKPiAgc3Rh dGljIGludCBnMzY0ZmJfY3Vyc29yKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3QgZmJfY3Vy c29yICpjdXJzb3IpOwo+ICBzdGF0aWMgaW50IGczNjRmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVj dCBmYl9pbmZvICppbmZvKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGczNjRmYl9vcHMg PSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGczNjRmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gZzM2NGZiX3NldGNvbHJlZywK PiAgCS5mYl9wYW5fZGlzcGxheQk9IGczNjRmYl9wYW5fZGlzcGxheSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5j Cj4gaW5kZXggYjlmNmE4MmEwNDk1Li4zMTI3MGE4OTg2ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9nYmVmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9nYmVmYi5j Cj4gQEAgLTEwNDQsNyArMTA0NCw3IEBAIHN0YXRpYyBpbnQgZ2JlZmJfbW1hcChzdHJ1Y3QgZmJf aW5mbyAqaW5mbywKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBnYmVmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGdiZWZiX29wcyA9 IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBnYmVmYl9j aGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGdiZWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3gxZmJfY29yZS5jIGIvZHJpdmVycy92aWRlby9m YmRldi9nZW9kZS9neDFmYl9jb3JlLmMKPiBpbmRleCA3MzdlNDcyZmFjMTQuLjVkMzRkODlmYjY2 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2d4MWZiX2NvcmUuYwo+ ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3gxZmJfY29yZS5jCj4gQEAgLTI1Miw3 ICsyNTIsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3BhbmVsX29wdGlvbihzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBneDFm Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGd4MWZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBneDFmYl9jaGVja192 YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGd4MWZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3hmYl9jb3JlLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dl b2RlL2d4ZmJfY29yZS5jCj4gaW5kZXggNDM1Y2UyYWE0MjQwLi5kMzhhMTQ4ZDQ3NDYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9neGZiX2NvcmUuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvZ3hmYl9jb3JlLmMKPiBAQCAtMjY1LDcgKzI2NSw3IEBA IHN0YXRpYyBpbnQgZ3hmYl9tYXBfdmlkZW9fbWVtb3J5KHN0cnVjdCBmYl9pbmZvICppbmZvLCBz dHJ1Y3QgcGNpX2RldiAqZGV2KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGd4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBneGZi X29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBn eGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gZ3hmYl9zZXRfcGFyLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5jIGIvZHJpdmVycy92aWRl by9mYmRldi9nZW9kZS9seGZiX2NvcmUuYwo+IGluZGV4IGIwZjA3ZDY3NmViMy4uYWRjMmQ5YzIz OTVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvbHhmYl9jb3JlLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL2x4ZmJfY29yZS5jCj4gQEAgLTM4Niw3 ICszODYsNyBAQCBzdGF0aWMgaW50IGx4ZmJfbWFwX3ZpZGVvX21lbW9yeShzdHJ1Y3QgZmJfaW5m byAqaW5mbywgc3RydWN0IHBjaV9kZXYgKmRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1z dGF0aWMgc3RydWN0IGZiX29wcyBseGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBm Yl9vcHMgbHhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hl Y2tfdmFyCT0gbHhmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGx4ZmJfc2V0X3BhciwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9nb2xkZmlzaGZiLmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2dvbGRmaXNoZmIuYwo+IGluZGV4IGY2MGFjMjc2NzAzZC4uOWM4M2VjM2Y4 ZTFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZ29sZGZpc2hmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9nb2xkZmlzaGZiLmMKPiBAQCAtMTYwLDcgKzE2MCw3IEBA IHN0YXRpYyBpbnQgZ29sZGZpc2hfZmJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBnb2xk ZmlzaF9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGdvbGRmaXNoX2Zi X29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNr X3ZhciAgID0gZ29sZGZpc2hfZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgICAgID0gZ29s ZGZpc2hfZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9ncnZn YS5jIGIvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4gaW5kZXggZDIyZThiMGM5MDZkLi4w N2RkYTAzZTA5NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4g KysrIGIvZHJpdmVycy92aWRlby9mYmRldi9ncnZnYS5jCj4gQEAgLTI1MSw3ICsyNTEsNyBAQCBz dGF0aWMgaW50IGdydmdhX3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFy LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGdydmdhX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgZ3J2Z2Ffb3BzID0gewo+ICAJLm93 bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyICAgPSBncnZnYV9j aGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGdydmdhX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvZ3h0NDUwMC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9neHQ0 NTAwLmMKPiBpbmRleCBjNzUwMmZkOGY0NDcuLjEzZGVkM2ExMDcwOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2d4dDQ1MDAuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Z3h0NDUwMC5jCj4gQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZiX2Zp eF9zY3JlZW5pbmZvIGd4dDQ1MDBfZml4ID0gewo+ICAJLm1taW9fbGVuID0gMHgyMDAwMCwKPiAg fTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGd4dDQ1MDBfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBneHQ0NTAwX29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9E VUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9IGd4dDQ1MDBfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9w YXIgPSBneHQ0NTAwX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv aGVjdWJhZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGVjdWJhZmIuYwo+IGluZGV4IDg1Nzcx OTVjYjUzMy4uMDBkNzcxMDUxNjFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv aGVjdWJhZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGVjdWJhZmIuYwo+IEBAIC0x OTcsNyArMTk3LDcgQEAgc3RhdGljIHNzaXplX3QgaGVjdWJhZmJfd3JpdGUoc3RydWN0IGZiX2lu Zm8gKmluZm8sIGNvbnN0IGNoYXIgX191c2VyICpidWYsCj4gIAlyZXR1cm4gKGVycikgPyBlcnIg OiBjb3VudDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgaGVjdWJhZmJfb3BzID0g ewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBoZWN1YmFmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVhZCAgICAgICAgPSBmYl9zeXNfcmVhZCwKPiAg CS5mYl93cml0ZQk9IGhlY3ViYWZiX3dyaXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L2hnYWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMKPiBpbmRleCA1OWUx Y2FlNTc5NDguLmE0NWZjZmYxNDYxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L2hnYWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2hnYWZiLmMKPiBAQCAtNTIzLDcg KzUyMyw3IEBAIHN0YXRpYyB2b2lkIGhnYWZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqaW5m bywgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSkKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgaGdhZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBoZ2FmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9 IGhnYWZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IGhnYWZiX3JlbGVhc2UsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0 ZmIuYwo+IGluZGV4IGFiZTNlNTRkNDUwNi4uMDA5ZTVkMmFhMTAwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvaGl0ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaGl0 ZmIuYwo+IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGludCBoaXRmYl9zZXRfcGFyKHN0cnVj dCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg ZmJfb3BzIGhpdGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaGl0ZmJf b3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGhp dGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCQk9IGhpdGZiX3NldF9wYXIsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaHBmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9o cGZiLmMKPiBpbmRleCBhNzlhZjhmMDY5ZDEuLmYwMmJlMGRiMzM1ZSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2hwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaHBm Yi5jCj4gQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgaW50IGhwZmJfc3luYyhzdHJ1Y3QgZmJf aW5mbyAqaW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBocGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaHBmYl9vcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gaHBmYl9zZXRj b2xyZWcsCj4gIAkuZmJfYmxhbmsJPSBocGZiX2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2h5cGVydl9mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9oeXBlcnZfZmIu Ywo+IGluZGV4IDJkY2I3YzU4YjMxZS4uZmNkNTQ2ZTVjMDMxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdmlkZW8vZmJkZXYvaHlwZXJ2X2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2h5 cGVydl9mYi5jCj4gQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGF0aWMgdm9pZCBodmZiX2NmYl9pbWFn ZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsCj4gIAkJc3ludGh2aWRfdXBkYXRlKHApOwo+ICB9Cj4g IAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBodmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBmYl9vcHMgaHZmYl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5m Yl9jaGVja192YXIgPSBodmZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyID0gaHZmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9pNzQwZmIuYwo+IGluZGV4IDM0N2NmOGJhYmMzZS4uYzY1ZWM3Mzg2ZTg3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaTc0MGZiLmMKPiArKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2k3NDBmYi5jCj4gQEAgLTk4MSw3ICs5ODEsNyBAQCBzdGF0aWMgaW50 IGk3NDBmYl9ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAly ZXR1cm4gKGJsYW5rX21vZGUgPT0gRkJfQkxBTktfTk9STUFMKSA/IDEgOiAwOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpNzQwZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGZiX29wcyBpNzQwZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJ LmZiX29wZW4JPSBpNzQwZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlCT0gaTc0MGZiX3JlbGVhc2Us Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW1zdHRmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi9pbXN0dGZiLmMKPiBpbmRleCA1OGIwMWM3ZDkwNTYuLjNhYzA1M2I4ODQ5NSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ltc3R0ZmIuYwo+ICsrKyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvaW1zdHRmYi5jCj4gQEAgLTEzMzMsNyArMTMzMyw3IEBAIHN0YXRpYyBz dHJ1Y3QgcGNpX2RyaXZlciBpbXN0dGZiX3BjaV9kcml2ZXIgPSB7Cj4gIAkucmVtb3ZlID0JaW1z dHRmYl9yZW1vdmUsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpbXN0dGZiX29w cyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgaW1zdHRmYl9vcHMgPSB7Cj4gIAku b3duZXIgCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IGltc3R0ZmJfY2hlY2tf dmFyLAo+ICAJLmZiX3NldF9wYXIgCT0gaW1zdHRmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMK PiBpbmRleCBiMzI4NmQxZmE1NDMuLjA4YTE3ZWIyYTVjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2lteGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2lteGZiLmMK PiBAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRpYyBpbnQgaW14ZmJfYmxhbmsoaW50IGJsYW5rLCBz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3Ry dWN0IGZiX29wcyBpbXhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGlt eGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJ PSBpbXhmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IGlteGZiX3NldF9wYXIsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiZHJ2LmMgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2ludGVsZmIvaW50ZWxmYmRydi5jCj4gaW5kZXggYTc2YzYxNTEyYzYw Li5jNzQ0ODkxNzgxYTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9pbnRlbGZi L2ludGVsZmJkcnYuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZi ZHJ2LmMKPiBAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Rldmlj ZV9pZCBpbnRlbGZiX3BjaV90YWJsZVtdID0gewo+ICBzdGF0aWMgaW50IG51bV9yZWdpc3RlcmVk ID0gMDsKPiAgCj4gIC8qIGZiIG9wcyAqLwo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBpbnRlbF9m Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGludGVsX2ZiX29wcyA9IHsK PiAgCS5vd25lciA9CQlUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuID0gICAgICAgICAgICAgIGlu dGVsZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlID0gICAgICAgICAgIGludGVsZmJfcmVsZWFzZSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9reXJvL2ZiZGV2LmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2t5cm8vZmJkZXYuYwo+IGluZGV4IGE3YmQ5ZjI1OTExYi4uNzJkZmYyZTQy ZTNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYva3lyby9mYmRldi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9reXJvL2ZiZGV2LmMKPiBAQCAtNjQ4LDcgKzY0OCw3IEBA IHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBreXJvZmJfcGNpX2RyaXZlciA9IHsKPiAgCS5yZW1v dmUJCT0ga3lyb2ZiX3JlbW92ZSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGt5 cm9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGt5cm9mYl9vcHMgPSB7 Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0ga3lyb2ZiX2No ZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0ga3lyb2ZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvbGVvLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2xlby5jCj4g aW5kZXggNWIxMTQxYWMxODJiLi40MGIxMWNjZTBhZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi9sZW8uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbGVvLmMKPiBAQCAt MzksNyArMzksNyBAQCBzdGF0aWMgaW50IGxlb19wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3Nj cmVlbmluZm8gKiwgc3RydWN0IGZiX2luZm8gKik7Cj4gICAqICBGcmFtZSBidWZmZXIgb3BlcmF0 aW9ucwo+ICAgKi8KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGxlb19vcHMgPSB7Cj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGxlb19vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBsZW9fc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5r CQk9IGxlb19ibGFuaywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gaW5kZXggOWE2ZmVlZTk2MTMzLi5lMDVh OTc2NjJjYTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9tYWNmYi5jCj4gQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdGF0 aWMgaW50IG1hY2ZiX3NldGNvbHJlZyh1bnNpZ25lZCByZWdubywgdW5zaWduZWQgcmVkLCB1bnNp Z25lZCBncmVlbiwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29w cyBtYWNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIG1hY2ZiX29wcyA9 IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBtYWNmYl9z ZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2NydGMyLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9jcnRjMi5jCj4gaW5kZXggZDJhODFhMmMzYWMwLi43 NjU1YWZhM2ZkNTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0 cm94ZmJfY3J0YzIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZi X2NydGMyLmMKPiBAQCAtNTYzLDcgKzU2Myw3IEBAIHN0YXRpYyBpbnQgbWF0cm94ZmJfZGhfYmxh bmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyogaW5mbykgewo+ICAjdW5kZWYgbTJpbmZvCj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1hdHJveGZiX2RoX29wcyA9IHsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbWF0cm94ZmJfZGhfb3BzID0gewo+ICAJLm93bmVyID0J VEhJU19NT0RVTEUsCj4gIAkuZmJfb3BlbiA9CW1hdHJveGZiX2RoX29wZW4sCj4gIAkuZmJfcmVs ZWFzZSA9CW1hdHJveGZiX2RoX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvbWF4aW5lZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF4aW5lZmIuYwo+IGluZGV4 IDViYjFiNWMzMDhhNy4uYWUxYTQyYmNiMGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvbWF4aW5lZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF4aW5lZmIuYwo+ IEBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGludCBtYXhpbmVmYl9zZXRjb2xyZWcodW5zaWdu ZWQgcmVnbm8sIHVuc2lnbmVkIHJlZCwgdW5zaWduZWQgZ3JlZW4sCj4gIAlyZXR1cm4gMDsKPiAg fQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgbWF4aW5lZmJfb3BzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGZiX29wcyBtYXhpbmVmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19N T0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gbWF4aW5lZmJfc2V0Y29scmVnLAo+ICAJLmZiX2Zp bGxyZWN0CT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L21ieC9tYnhmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9tYngvbWJ4ZmIuYwo+IGluZGV4IDUw OTM1MjUyYjUwYi4uMjVkYWQ0NTA3ZDc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvbWJ4L21ieGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ieC9tYnhmYi5jCj4g QEAgLTY3MSw3ICs2NzEsNyBAQCBzdGF0aWMgaW50IG1ieGZiX2lvY3RsKHN0cnVjdCBmYl9pbmZv ICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAo+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4g LXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1ieGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBmYl9vcHMgbWJ4ZmJfb3BzID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkuZmJf Y2hlY2tfdmFyID0gbWJ4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPSBtYnhmYl9zZXRf cGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMKPiBpbmRleCBiYjRmZWU1MmU1MDEuLmE0 MmUyZWNlZWU0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21ldHJvbm9tZWZiLmMKPiBAQCAtNTU4LDcg KzU1OCw3IEBAIHN0YXRpYyBzc2l6ZV90IG1ldHJvbm9tZWZiX3dyaXRlKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAo+ICAJcmV0dXJuIChlcnIpID8gZXJyIDog Y291bnQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1ldHJvbm9tZWZiX29wcyA9 IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbWV0cm9ub21lZmJfb3BzID0gewo+ICAJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3dyaXRlCT0gbWV0cm9ub21lZmJfd3JpdGUs Cj4gIAkuZmJfZmlsbHJlY3QJPSBtZXRyb25vbWVmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv bW1wL2ZiL21tcGZiLmMKPiBpbmRleCA0N2JjN2M1OWJiZDguLjMzZGIwODUwMDg2ZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jCj4gKysrIGIvZHJpdmVy cy92aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYwo+IEBAIC00NTQsNyArNDU0LDcgQEAgc3RhdGlj IGludCBtbXBmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG1tcGZiX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgbW1wZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRI SVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0gbW1wZmJfYmxhbmssCj4gIAkuZmJfY2hlY2tfdmFy CT0gbW1wZmJfY2hlY2tfdmFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214 M2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMKPiBpbmRleCBiYWZkNWY1ZmFjNWEu LjRhZjI4ZTQ0MjFlNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L214M2ZiLmMKPiBAQCAtMTI0OSw3ICsxMjQ5LDcg QEAgc3RhdGljIGludCBteDNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8g KnZhciwKPiAgICogaW52b2tlZCBieSB0aGUgY29yZSBmcmFtZWJ1ZmZlciBkcml2ZXIgdG8gcGVy Zm9ybSBvcGVyYXRpb25zIGxpa2UKPiAgICogYmxpdHRpbmcsIHJlY3RhbmdsZSBmaWxsaW5nLCBj b3B5IHJlZ2lvbnMgYW5kIGN1cnNvciBkZWZpbml0aW9uLgo+ICAgKi8KPiAtc3RhdGljIHN0cnVj dCBmYl9vcHMgbXgzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBteDNm Yl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRfcGFyID0gbXgz ZmJfc2V0X3BhciwKPiAgCS5mYl9jaGVja192YXIgPSBteDNmYl9jaGVja192YXIsCj4gQEAgLTEz ODksNyArMTM4OSw4IEBAIHN0YXRpYyBpbnQgbXgzZmJfdW5tYXBfdmlkZW9fbWVtb3J5KHN0cnVj dCBmYl9pbmZvICpmYmkpCj4gICAqIG14M2ZiX2luaXRfZmJpbmZvKCkgLSBpbml0aWFsaXplIGZy YW1lYnVmZmVyIGluZm9ybWF0aW9uIG9iamVjdC4KPiAgICogQHJldHVybjoJaW5pdGlhbGl6ZWQg ZnJhbWVidWZmZXIgc3RydWN0dXJlLgo+ICAgKi8KPiAtc3RhdGljIHN0cnVjdCBmYl9pbmZvICpt eDNmYl9pbml0X2ZiaW5mbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBmYl9vcHMgKm9wcykK PiArc3RhdGljIHN0cnVjdCBmYl9pbmZvICpteDNmYl9pbml0X2ZiaW5mbyhzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4gKwkJCQkJIGNvbnN0IHN0cnVjdCBmYl9vcHMgKm9wcykKPiAgewo+ICAJc3RydWN0 IGZiX2luZm8gKmZiaTsKPiAgCXN0cnVjdCBteDNmYl9pbmZvICpteDNmYmk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVv ZmIuYwo+IGluZGV4IGI3NzA5NDZhMDkyMC4uZTZlYTg1M2MxNzIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbmVv ZmIuYwo+IEBAIC0xNjEwLDcgKzE2MTAsNyBAQCBuZW9mYl9jdXJzb3Ioc3RydWN0IGZiX2luZm8g KmluZm8sIHN0cnVjdCBmYl9jdXJzb3IgKmN1cnNvcikKPiAgfQo+ICAqLwo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgbmVvZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyBuZW9mYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9 IG5lb2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IG5lb2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2NmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9vY2Zi LmMKPiBpbmRleCBhOTcwZWRjMmE2ZjguLmM4Y2VlMmQ4OTBkYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L29jZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2NmYi5j Cj4gQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgaW50IG9jZmJfaW5pdF92YXIoc3RydWN0IG9j ZmJfZGV2ICpmYmRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZi X29wcyBvY2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgb2NmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gb2NmYl9z ZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvb2ZmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9vZmZiLmMK PiBpbmRleCBmYmM2ZWFmYjYzYzcuLjVjZDBmNWY2YTRhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L29mZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb2ZmYi5jCj4g QEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBvZmZiX2Rlc3Ryb3koc3RydWN0IGZiX2lu Zm8gKmluZm8pCj4gIAlmcmFtZWJ1ZmZlcl9yZWxlYXNlKGluZm8pOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBvZmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9v cHMgb2ZmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfZGVzdHJv eQk9IG9mZmJfZGVzdHJveSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBvZmZiX3NldGNvbHJlZywKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvb21hcGZiLW1haW4u YyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL29tYXBmYi1tYWluLmMKPiBpbmRl eCA4NThjMmMwMTFkMTkuLjhkZmE5MTU4YmE3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L29tYXAyL29tYXBmYi9vbWFwZmItbWFpbi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9m YmRldi9vbWFwMi9vbWFwZmIvb21hcGZiLW1haW4uYwo+IEBAIC0xMjgwLDcgKzEyODAsNyBAQCBz c2l6ZV90IG9tYXBmYl93cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3Vz ZXIgKmJ1ZiwKPiAgfQo+ICAjZW5kaWYKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG9tYXBm Yl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIG9tYXBmYl9vcHMgPSB7Cj4g IAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuICAgICAgICA9IG9t YXBmYl9vcGVuLAo+ICAJLmZiX3JlbGVhc2UgICAgID0gb21hcGZiX3JlbGVhc2UsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcDkxMDAuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cDkxMDAuYwo+IGluZGV4IDhjMThjYzUxYWFlMi4uNmRhNjcyZTkyNjQzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvcDkxMDAuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cDkxMDAuYwo+IEBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgcDkxMDBfaW9jdGwoc3RydWN0 IGZiX2luZm8gKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKPiAgICogIEZyYW1lIGJ1 ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcDkxMDBf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwOTEwMF9vcHMgPSB7Cj4gIAku b3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBwOTEwMF9zZXRjb2xy ZWcsCj4gIAkuZmJfYmxhbmsJCT0gcDkxMDBfYmxhbmssCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvcGxhdGludW1mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9wbGF0aW51bWZi LmMKPiBpbmRleCA2MzJiMjQ2Y2EzNWYuLmNlNDEzYTlkZjA2ZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3BsYXRpbnVtZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv cGxhdGludW1mYi5jCj4gQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGludCBwbGF0aW51bV92YXJf dG9fcGFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAo+ICAgKiBJbnRlcmZhY2UgdXNl ZCBieSB0aGUgd29ybGQKPiAgICovCj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBwbGF0aW51 bWZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgcGxhdGludW1mYl9vcHMg PSB7Cj4gIAkub3duZXIgPQlUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBwbGF0aW51 bWZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gcGxhdGludW1mYl9zZXRfcGFyLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtMmZiLmMKPiBpbmRleCAxZGNmMDJlMTJhZjQuLjhmOTMzYmFkNDYxYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtMmZiLmMKPiBAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgc3RhdGljIGludCBwbTJmYl9jdXJz b3Ioc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9jdXJzb3IgKmN1cnNvcikKPiAgICog IEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9v cHMgcG0yZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbTJmYl9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gcG0yZmJf Y2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBwbTJmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2Zi LmMKPiBpbmRleCA2MTMwYWE1NmExZTkuLjE1YTJiNDk1MjM1YiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2Zi LmMKPiBAQCAtMTIwMCw3ICsxMjAwLDcgQEAgc3RhdGljIGludCBwbTNmYl9ibGFuayhpbnQgYmxh bmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAkgKiAgRnJhbWUgYnVmZmVyIG9wZXJh dGlvbnMKPiAgCSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcG0zZmJfb3BzID0gewo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbTNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0g VEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyCT0gcG0zZmJfY2hlY2tfdmFyLAo+ICAJLmZi X3NldF9wYXIJPSBwbTNmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3BtYWctYWEtZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcG1hZy1hYS1mYi5jCj4gaW5k ZXggZDFlNzhjZTNhOWMyLi43YjMzYjUyYjI1MjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9wbWFnLWFhLWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWctYWEt ZmIuYwo+IEBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGludCBhYWZiX2JsYW5rKGludCBibGFu aywgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgYWFmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3Bz IGFhZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2JsYW5rCT0g YWFmYl9ibGFuaywKPiAgCS5mYl9maWxscmVjdAk9IGNmYl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi9wbWFnLWJhLWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3BtYWctYmEtZmIuYwo+IGluZGV4IDU2YjkxMmJiMjhkZS4uYTYwZTU2ZDg5ODBiIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcG1hZy1iYS1mYi5jCj4gKysrIGIvZHJpdmVycy92 aWRlby9mYmRldi9wbWFnLWJhLWZiLmMKPiBAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbnQg cG1hZ2JhZmJfc2V0Y29scmVnKHVuc2lnbmVkIGludCByZWdubywgdW5zaWduZWQgaW50IHJlZCwK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBwbWFnYmFmYl9v cHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHBtYWdiYWZiX29wcyA9IHsKPiAg CS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBwbWFnYmFmYl9zZXRj b2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3QsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvcG1hZ2ItYi1mYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9wbWFn Yi1iLWZiLmMKPiBpbmRleCAyODIyYjIyMjU5MjQuLmYwMjA4MGYyMTA3NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtYWdiLWItZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvcG1hZ2ItYi1mYi5jCj4gQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgaW50IHBtYWdi YmZiX3NldGNvbHJlZyh1bnNpZ25lZCBpbnQgcmVnbm8sIHVuc2lnbmVkIGludCByZWQsCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcG1hZ2JiZmJfb3BzID0g ewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwbWFnYmJmYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCT0gcG1hZ2JiZmJfc2V0Y29scmVn LAo+ICAJLmZiX2ZpbGxyZWN0CT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3BzM2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKPiBpbmRl eCA1ZWQyZGIzOWQ4MjMuLjgzNGY2M2VkZjcwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3BzM2ZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKPiBAQCAt OTM0LDcgKzkzNCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwczNmYl92c3luY19pbnRlcnJ1cHQo aW50IGlycSwgdm9pZCAqcHRyKQo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMg cHMzZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBwczNmYl9vcHMgPSB7 Cj4gIAkuZmJfb3Blbgk9IHBzM2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHBzM2ZiX3JlbGVh c2UsCj4gIAkuZmJfcmVhZCAgICAgICAgPSBmYl9zeXNfcmVhZCwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy92aWRlby9mYmRldi9wdnIyZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHZyMmZiLmMK PiBpbmRleCAwYTNiMmI3Yzc4OTEuLmZjYjE2ZWFiYmIwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3B2cjJmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9wdnIyZmIu Ywo+IEBAIC03MDcsNyArNzA3LDcgQEAgc3RhdGljIHNzaXplX3QgcHZyMmZiX3dyaXRlKHN0cnVj dCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFyICpidWYsCj4gIH0KPiAgI2VuZGlmIC8qIENPTkZJ R19QVlIyX0RNQSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgcHZyMmZiX29wcyA9IHsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgcHZyMmZiX29wcyA9IHsKPiAgCS5vd25lcgkJ PSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcJPSBwdnIyZmJfc2V0Y29scmVnLAo+ICAJ LmZiX2JsYW5rCT0gcHZyMmZiX2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3B4YTE2OGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMKPiBpbmRleCAx NDEwZjQ3NmUxMzUuLmM2NzJjMzM1NGEyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3B4YTE2OGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMKPiBA QCAtNTQ1LDcgKzU0NSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBweGExNjhmYl9oYW5kbGVfaXJx KGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgCXJldHVybiBJUlFfTk9ORTsKPiAgfQo+ICAKPiAt c3RhdGljIHN0cnVjdCBmYl9vcHMgcHhhMTY4ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGZiX29wcyBweGExNjhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfY2hlY2tfdmFyCT0gcHhhMTY4ZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIJPSBw eGExNjhmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZi LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiBpbmRleCBmNzBjOWY3OTYyMmUuLjZm N2U5ZmI2MzE5MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YWZiLmMKPiBAQCAtNTk3LDcgKzU5Nyw3IEBAIHN0 YXRpYyBpbnQgcHhhZmJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBweGFmYl9vcHMgPSB7 Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHB4YWZiX29wcyA9IHsKPiAgCS5vd25lcgkJ PSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBweGFmYl9jaGVja192YXIsCj4gIAku ZmJfc2V0X3Bhcgk9IHB4YWZiX3NldF9wYXIsCj4gQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMg aW50IG92ZXJsYXlmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIG92ZXJsYXlfZmJfb3BzID0gewo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBvdmVybGF5X2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJ CT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfb3BlbgkJPSBvdmVybGF5ZmJfb3BlbiwKPiAgCS5mYl9y ZWxlYXNlCQk9IG92ZXJsYXlmYl9yZWxlYXNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3E0MGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3E0MGZiLmMKPiBpbmRleCAwYjkz YWE5NjRkNDMuLjc5ZmYxNGEzNWM4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3E0MGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3E0MGZiLmMKPiBAQCAtNzUsNyAr NzUsNyBAQCBzdGF0aWMgaW50IHE0MGZiX3NldGNvbHJlZyh1bnNpZ25lZCByZWdubywgdW5zaWdu ZWQgcmVkLCB1bnNpZ25lZCBncmVlbiwKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBxNDBmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJf b3BzIHE0MGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9zZXRj b2xyZWcJPSBxNDBmYl9zZXRjb2xyZWcsCj4gIAkuZmJfZmlsbHJlY3QJPSBjZmJfZmlsbHJlY3Qs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmMKPiBpbmRleCBjYTU5M2EzZTQxZDcuLjc2NGVjMzI4 NWU2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jCj4gQEAgLTE2NzMsNyArMTY3Myw3 IEBAIHN0YXRpYyBpbnQgcml2YWZiX3N5bmMoc3RydWN0IGZiX2luZm8gKmluZm8pCj4gICAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KPiAgCj4gIC8qIGtlcm5lbCBpbnRlcmZhY2UgKi8KPiAtc3RhdGlj IHN0cnVjdCBmYl9vcHMgcml2YV9mYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJf b3BzIHJpdmFfZmJfb3BzID0gewo+ICAJLm93bmVyIAkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9v cGVuCT0gcml2YWZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHJpdmFmYl9yZWxlYXNlLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzYy1mYi5jIGIvZHJpdmVycy92aWRlby9m YmRldi9zM2MtZmIuYwo+IGluZGV4IGJhMDRkN2E2NzgyOS4uZjQ4NzFjNDMwZjhkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNjLWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3MzYy1mYi5jCj4gQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyBpbnQgczNjX2Zi X2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNjX2ZiX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNjX2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBU SElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192YXIJPSBzM2NfZmJfY2hlY2tfdmFyLAo+ICAJLmZi X3NldF9wYXIJPSBzM2NfZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi9zM2MyNDEwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNjMjQxMGZiLmMKPiBpbmRl eCBhNzAyZGE4OTkxMGIuLjJmYjE1YTU0MDE2NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L3MzYzI0MTBmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zM2MyNDEwZmIu Ywo+IEBAIC02MTgsNyArNjE4LDcgQEAgc3RhdGljIGludCBzM2MyNDEwZmJfZGVidWdfc3RvcmUo c3RydWN0IGRldmljZSAqZGV2LAo+ICAKPiAgc3RhdGljIERFVklDRV9BVFRSKGRlYnVnLCAwNjY0 LCBzM2MyNDEwZmJfZGVidWdfc2hvdywgczNjMjQxMGZiX2RlYnVnX3N0b3JlKTsKPiAgCj4gLXN0 YXRpYyBzdHJ1Y3QgZmJfb3BzIHMzYzI0MTBmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmJfb3BzIHMzYzI0MTBmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4g IAkuZmJfY2hlY2tfdmFyCT0gczNjMjQxMGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0g czNjMjQxMGZiX3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9zM2ZiLmMKPiBpbmRleCBiZTE2YzM0OWMxMGYuLjYw YzQyNGZhZTk4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jCj4gQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0 YXRpYyBpbnQgczNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwg c3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAo+ICAvKiBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucyAq Lwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIHMzZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX29wZW4JPSBzM2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHMzZmJfcmVsZWFzZSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi9zYTExMDBmYi5jCj4gaW5kZXggODFhZDNhYTFjYTA2Li40NjgwY2MzZWZiODEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jCj4gKysrIGIvZHJp dmVycy92aWRlby9mYmRldi9zYTExMDBmYi5jCj4gQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMg aW50IHNhMTEwMGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gIAlyZXR1cm4gdm1faW9t YXBfbWVtb3J5KHZtYSwgaW5mby0+Zml4Lm1taW9fc3RhcnQsIGluZm8tPmZpeC5tbWlvX2xlbik7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHNhMTEwMGZiX29wcyA9IHsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ExMTAwZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRI SVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IHNhMTEwMGZiX2NoZWNrX3ZhciwKPiAgCS5m Yl9zZXRfcGFyCT0gc2ExMTAwZmJfc2V0X3BhciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9mYmRldi9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Nh dmFnZS9zYXZhZ2VmYl9kcml2ZXIuYwo+IGluZGV4IDUxMjc4OWY1Zjg4NC4uYWFiMzEyYTdkOWRh IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2F2YWdlL3NhdmFnZWZiX2RyaXZl ci5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMK PiBAQCAtMTYzNyw3ICsxNjM3LDcgQEAgc3RhdGljIGludCBzYXZhZ2VmYl9yZWxlYXNlKHN0cnVj dCBmYl9pbmZvICppbmZvLCBpbnQgdXNlcikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBzYXZhZ2VmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmJfb3BzIHNhdmFnZWZiX29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxF LAo+ICAJLmZiX29wZW4gICAgICAgID0gc2F2YWdlZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlICAg ICA9IHNhdmFnZWZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2g3NzYwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYwo+IGluZGV4IGFiOGZl ODM4Yzc3Ni4uYjhlYzhkOWJiNGM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2g3NzYwZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2g3NzYwZmIuYwo+IEBAIC0z NDEsNyArMzQxLDcgQEAgc3RhdGljIGludCBzaDc3NjBmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZv ICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHNo Nzc2MGZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2g3NzYwZmJfb3Bz ID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkuZmJfYmxhbmsgPSBzaDc3NjBmYl9i bGFuaywKPiAgCS5mYl9jaGVja192YXIgPSBzaDc3NjBmYl9jaGVja192YXIsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xjZGNmYi5jIGIvZHJpdmVycy92aWRl by9mYmRldi9zaF9tb2JpbGVfbGNkY2ZiLmMKPiBpbmRleCBjMjQ5NzYzZGJmMGIuLjI1ZjExOWVm ZWJjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NoX21vYmlsZV9sY2RjZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2hfbW9iaWxlX2xjZGNmYi5jCj4gQEAgLTE0 OTAsNyArMTQ5MCw3IEBAIHNoX21vYmlsZV9sY2RjX292ZXJsYXlfbW1hcChzdHJ1Y3QgZmJfaW5m byAqaW5mbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIAkJCQkgb3ZsLT5kbWFfaGFu ZGxlLCBvdmwtPmZiX3NpemUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzaF9t b2JpbGVfbGNkY19vdmVybGF5X29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMg c2hfbW9iaWxlX2xjZGNfb3ZlcmxheV9vcHMgPSB7Cj4gIAkub3duZXIgICAgICAgICAgPSBUSElT X01PRFVMRSwKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+ICAJLmZiX3dyaXRl ICAgICAgID0gZmJfc3lzX3dyaXRlLAo+IEBAIC0xOTY0LDcgKzE5NjQsNyBAQCBzaF9tb2JpbGVf bGNkY19tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKPiAgCQkJCSBjaC0+ZG1hX2hhbmRsZSwgY2gtPmZiX3NpemUpOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgc3RydWN0IGZiX29wcyBzaF9tb2JpbGVfbGNkY19vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZmJfb3BzIHNoX21vYmlsZV9sY2RjX29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgICA9 IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwk9IHNoX21vYmlsZV9sY2RjX3NldGNvbHJl ZywKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZi LmMKPiBpbmRleCA3ZGMwMTA1ZjcwMGQuLjUzM2EwNDdkMDdhMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Np bXBsZWZiLmMKPiBAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBzaW1wbGVmYl9kZXN0cm95 KHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJCWlvdW5tYXAoaW5mby0+c2NyZWVuX2Jhc2UpOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzaW1wbGVmYl9vcHMgPSB7Cj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHNpbXBsZWZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElT X01PRFVMRSwKPiAgCS5mYl9kZXN0cm95CT0gc2ltcGxlZmJfZGVzdHJveSwKPiAgCS5mYl9zZXRj b2xyZWcJPSBzaW1wbGVmYl9zZXRjb2xyZWcsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v ZmJkZXYvc2lzL3Npc19tYWluLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfbWFpbi5j Cj4gaW5kZXggYjQ0M2E4ZWQ0NjAwLi5hYzE0MDk2MmIxYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9zaXMvc2lzX21haW4uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv c2lzL3Npc19tYWluLmMKPiBAQCAtMTkwNiw3ICsxOTA2LDcgQEAgc2lzZmJfZ2V0X2ZpeChzdHJ1 Y3QgZmJfZml4X3NjcmVlbmluZm8gKmZpeCwgaW50IGNvbiwgc3RydWN0IGZiX2luZm8gKmluZm8p Cj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tICBmYl9vcHMgc3RydWN0dXJlcyAtLS0tLS0tLS0t LS0tLS0tLSAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgc2lzZmJfb3BzID0gewo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzaXNmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfb3Blbgk9IHNpc2ZiX29wZW4sCj4gIAkuZmJfcmVsZWFzZQk9IHNp c2ZiX3JlbGVhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2tlbGV0b25m Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9za2VsZXRvbmZiLmMKPiBpbmRleCA4MTJhMzZjYjYw YzMuLmJjYWNmYjY5MzRmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NrZWxl dG9uZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc2tlbGV0b25mYi5jCj4gQEAgLTYz NCw3ICs2MzQsNyBAQCBpbnQgeHh4ZmJfc3luYyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgICAg ICAqICBGcmFtZSBidWZmZXIgb3BlcmF0aW9ucwo+ICAgICAgICovCj4gIAo+IC1zdGF0aWMgc3Ry dWN0IGZiX29wcyB4eHhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHh4 eGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuCT0geHh4 ZmJfb3BlbiwKPiAgCS5mYl9yZWFkCT0geHh4ZmJfcmVhZCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9zbTcxMmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NtNzEyZmIuYwo+ IGluZGV4IDIwN2QwYWRkNjg0Yi4uNmExYjRhODUzZDllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvc203MTJmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zbTcxMmZi LmMKPiBAQCAtMTM2OSw3ICsxMzY5LDcgQEAgc3RhdGljIGludCBzbXRjX3NldF9wYXIoc3RydWN0 IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBm Yl9vcHMgc210Y2ZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc210Y2Zi X29wcyA9IHsKPiAgCS5vd25lciAgICAgICAgPSBUSElTX01PRFVMRSwKPiAgCS5mYl9jaGVja192 YXIgPSBzbXRjX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyICAgPSBzbXRjX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc21zY3VmeC5jIGIvZHJpdmVycy92aWRl by9mYmRldi9zbXNjdWZ4LmMKPiBpbmRleCBlMzYyZDdkYTg3ZmMuLmJmYWMzZWU0YTY0MiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Ntc2N1ZnguYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvc21zY3VmeC5jCj4gQEAgLTEyNjgsNyArMTI2OCw3IEBAIHN0YXRpYyBpbnQg dWZ4X29wc19ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdWZ4X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdWZ4X29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3JlYWQgPSBmYl9zeXNfcmVhZCwKPiAgCS5mYl93cml0ZSA9IHVmeF9v cHNfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NzZDEzMDdmYi5jCj4gaW5kZXggNzhjYTdmZmM0MGMyLi4x NDI1MzUyNjdmZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIu Ywo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMKPiBAQCAtMjgwLDcgKzI4 MCw3IEBAIHN0YXRpYyB2b2lkIHNzZDEzMDdmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKmlu Zm8sIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hCj4gIAlzc2QxMzA3ZmJfdXBkYXRlX2Rpc3Bs YXkocGFyKTsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgc3NkMTMwN2ZiX29wcyA9 IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc3NkMTMwN2ZiX29wcyA9IHsKPiAgCS5v d25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9yZWFkCT0gZmJfc3lzX3JlYWQsCj4gIAkuZmJf d3JpdGUJPSBzc2QxMzA3ZmJfd3JpdGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvc3N0ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0ZmIuYwo+IGluZGV4IDRlMjJhZTM4 M2M4Ny4uODJlNzA3YTQ4ZTRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0 ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3N0ZmIuYwo+IEBAIC0xMzA3LDcgKzEz MDcsNyBAQCBzdGF0aWMgaW50IHNzdGZiX3NldHVwKGNoYXIgKm9wdGlvbnMpCj4gIH0KPiAgCj4g IAo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyBzc3RmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZmJfb3BzIHNzdGZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAg CS5mYl9jaGVja192YXIJPSBzc3RmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3Bhcgk9IHNzdGZi X3NldF9wYXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+IGluZGV4IDllODhlM2Y1OTRjMi4uNTQwMGFiNzlm YmJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvc3RpZmIuYwo+IEBAIC0xMTAxLDcgKzExMDEsNyBAQCBzdGlmYl9p bml0X2Rpc3BsYXkoc3RydWN0IHN0aWZiX2luZm8gKmZiKQo+ICAKPiAgLyogLS0tLS0tLS0tLS0t IEludGVyZmFjZXMgdG8gaGFyZHdhcmUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLSAqLwo+ICAKPiAt c3RhdGljIHN0cnVjdCBmYl9vcHMgc3RpZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGZiX29wcyBzdGlmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJf c2V0Y29scmVnCT0gc3RpZmJfc2V0Y29scmVnLAo+ICAJLmZiX2JsYW5rCT0gc3RpZmJfYmxhbmss Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyMTAwMC5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9zdW54dnIxMDAwLmMKPiBpbmRleCA3ODRjOWJkNWQ1MDIuLjE1YjA3OTUw NWEwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjEwMDAuYwo+ICsr KyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyMTAwMC5jCj4gQEAgLTU5LDcgKzU5LDcgQEAg c3RhdGljIGludCBnZmJfc2V0Y29scmVnKHVuc2lnbmVkIHJlZ25vLAo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGdmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmJfb3BzIGdmYl9vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX3NldGNvbHJlZwkJPSBnZmJfc2V0Y29scmVnLAo+ICAJLmZiX2ZpbGxyZWN0CQk9IGNm Yl9maWxscmVjdCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAw LmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjI1MDAuYwo+IGluZGV4IDMxNjgzZTVhOGI3 OS4uMWQzYmFjZDlkNWFjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZy MjUwMC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnIyNTAwLmMKPiBAQCAtNjMs NyArNjMsNyBAQCBzdGF0aWMgaW50IHMzZF9zZXRjb2xyZWcodW5zaWduZWQgcmVnbm8sCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgczNkX29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNkX29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IHMzZF9zZXRjb2xyZWcsCj4gIAkuZmJfZmls bHJlY3QJCT0gY2ZiX2ZpbGxyZWN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L3N1bnh2cjUwMC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAuYwo+IGluZGV4IGQz OTI5NzYxMjZhNi4uOWRhZjE3YjExMTA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJk ZXYvc3VueHZyNTAwLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jCj4g QEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2lu Zm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSkKPiAgCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg ZmJfb3BzIGUzZF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGUzZF9vcHMg PSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSBlM2Rf c2V0Y29scmVnLAo+ICAJLmZiX2ZpbGxyZWN0CQk9IGUzZF9maWxscmVjdCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9mYmRldi90Y3guYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGN4LmMK PiBpbmRleCA3ODk3Zjg2ZmIyM2UuLjM0YjJlNWI2ZTg0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3RjeC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi90Y3guYwo+IEBA IC00MCw3ICs0MCw3IEBAIHN0YXRpYyBpbnQgdGN4X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJf c2NyZWVuaW5mbyAqLCBzdHJ1Y3QgZmJfaW5mbyAqKTsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVy YXRpb25zCj4gICAqLwo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdGN4X29wcyA9IHsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdGN4X29wcyA9IHsKPiAgCS5vd25lcgkJCT0gVEhJ U19NT0RVTEUsCj4gIAkuZmJfc2V0Y29scmVnCQk9IHRjeF9zZXRjb2xyZWcsCj4gIAkuZmJfYmxh bmsJCT0gdGN4X2JsYW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RkZnhm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi90ZGZ4ZmIuYwo+IGluZGV4IGZkYmIxZWE2NmU2Yy4u MDM0OWNmNjk2NTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGRmeGZiLmMK PiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RkZnhmYi5jCj4gQEAgLTExNDEsNyArMTE0MSw3 IEBAIHN0YXRpYyBpbnQgdGRmeGZiX2N1cnNvcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0 IGZiX2N1cnNvciAqY3Vyc29yKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgZmJfb3BzIHRkZnhmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRk ZnhmYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFy CT0gdGRmeGZiX2NoZWNrX3ZhciwKPiAgCS5mYl9zZXRfcGFyCT0gdGRmeGZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdGdhZmIuYwo+IGluZGV4IDI4NmIyMzcxYzdkZC4uN2NkMjYyODU4MjQxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdGdhZmIuYwo+IEBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNfZHJpdmVy IHRnYWZiX3RjX2RyaXZlcjsKPiAgICogIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+ ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdGdhZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZiX29wcyB0Z2FmYl9vcHMgPSB7Cj4gIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAo+ ICAJLmZiX2NoZWNrX3ZhcgkJPSB0Z2FmYl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3BhcgkJPSB0 Z2FmYl9zZXRfcGFyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RtaW9mYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi90bWlvZmIuYwo+IGluZGV4IDRmMmZjZWExMGQyYi4uNTAx MTE5NjZjOTgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdG1pb2ZiLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RtaW9mYi5jCj4gQEAgLTY0Niw3ICs2NDYsNyBAQCBz dGF0aWMgaW50IHRtaW9mYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHRtaW9mYl9vcHMg PSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRtaW9mYl9vcHMgPSB7Cj4gIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gIAo+ICAJLmZiX2lvY3RsCT0gdG1pb2ZiX2lvY3RsLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jIGIvZHJpdmVycy92aWRl by9mYmRldi90cmlkZW50ZmIuYwo+IGluZGV4IGRhNzRiZjZjNTk5Ni4uNzE1NTA5OTE3ZWFhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmMKPiArKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jCj4gQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHN0YXRp YyBpbnQgdHJpZGVudGZiX2JsYW5rKGludCBibGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqaW5m bykKPiAgCXJldHVybiAoYmxhbmtfbW9kZSA9PSBGQl9CTEFOS19OT1JNQUwpID8gMSA6IDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHRyaWRlbnRmYl9vcHMgPSB7Cj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHRyaWRlbnRmYl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElT X01PRFVMRSwKPiAgCS5mYl9zZXRjb2xyZWcgPSB0cmlkZW50ZmJfc2V0Y29scmVnLAo+ICAJLmZi X3Bhbl9kaXNwbGF5ID0gdHJpZGVudGZiX3Bhbl9kaXNwbGF5LAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L3ZhbGt5cmllZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmFsa3ly aWVmYi5jCj4gaW5kZXggZTA0ZmRlOWMxZmNkLi5jYThkNzM0M2FhYTEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy92aWRlby9mYmRldi92YWxreXJpZWZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3ZhbGt5cmllZmIuYwo+IEBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGludCB2YWxreXJp ZV9pbml0X2luZm8oc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9pbmZvX3ZhbGt5cmll ICpwKTsKPiAgc3RhdGljIHZvaWQgdmFsa3lyaWVfcGFyX3RvX2ZpeChzdHJ1Y3QgZmJfcGFyX3Zh bGt5cmllICpwYXIsIHN0cnVjdCBmYl9maXhfc2NyZWVuaW5mbyAqZml4KTsKPiAgc3RhdGljIHZv aWQgdmFsa3lyaWVfaW5pdF9maXgoc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvICpmaXgsIHN0cnVj dCBmYl9pbmZvX3ZhbGt5cmllICpwKTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHZhbGt5 cmllZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2YWxreXJpZWZiX29w cyA9IHsKPiAgCS5vd25lciA9CVRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9CXZhbGt5 cmllZmJfY2hlY2tfdmFyLAo+ICAJLmZiX3NldF9wYXIgPQl2YWxreXJpZWZiX3NldF9wYXIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3ZmYi5jCj4gaW5kZXggNTQxMjc5MDViZmU3Li45NWQzYzU5ODY3ZDAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy92aWRlby9mYmRldi92ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv dmZiLmMKPiBAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgaW50IHZmYl9wYW5fZGlzcGxheShzdHJ1 Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKPiAgc3RhdGljIGludCB2ZmJfbW1hcChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywKPiAgCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ICAK PiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdmZiX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBmYl9vcHMgdmZiX29wcyA9IHsKPiAgCS5mYl9yZWFkICAgICAgICA9IGZiX3N5c19yZWFkLAo+ ICAJLmZiX3dyaXRlICAgICAgID0gZmJfc3lzX3dyaXRlLAo+ICAJLmZiX2NoZWNrX3Zhcgk9IHZm Yl9jaGVja192YXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5j IGIvZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMKPiBpbmRleCAyYzZhNTc2ZWQ4NGMuLmEy MGVlYjgzMDhmZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYwo+ ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jCj4gQEAgLTEyNzAsNyArMTI3MCw3 IEBAIHN0YXRpYyB2b2lkIHZnYTE2ZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAg CWZyYW1lYnVmZmVyX3JlbGVhc2UoaW5mbyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJf b3BzIHZnYTE2ZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2Z2ExNmZi X29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAgCS5mYl9vcGVuICAgICAgICA9 IHZnYTE2ZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlICAgICA9IHZnYTE2ZmJfcmVsZWFzZSwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jIGIvZHJpdmVycy92 aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gaW5kZXggYmU4ZDk3MDJjYmIyLi5mNzQ0NDc5ZGM3 ZGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi5jCj4gQEAgLTIzOCw3ICsyMzgsNyBA QCBzdGF0aWMgaW50IHZ0ODUwMGxjZF9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICpp bmZvKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHZ0ODUw MGxjZF9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZ0ODUwMGxjZF9vcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfc2V0X3Bhcgk9IHZ0ODUwMGxj ZF9zZXRfcGFyLAo+ICAJLmZiX3NldGNvbHJlZwk9IHZ0ODUwMGxjZF9zZXRjb2xyZWcsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvdnQ4NjIzZmIuYwo+IGluZGV4IGMzMzlhOGZiYWQ4MS4uN2IzZWVmMWI4OTNmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYwo+ICsrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvdnQ4NjIzZmIuYwo+IEBAIC02MzQsNyArNjM0LDcgQEAgc3RhdGljIGludCB2 dDg2MjNmYl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0 IGZiX2luZm8gKmkKPiAgCj4gIC8qIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zICovCj4gIAo+IC1z dGF0aWMgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmJfb3BzIHZ0ODYyM2ZiX29wcyA9IHsKPiAgCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAg CS5mYl9vcGVuCT0gdnQ4NjIzZmJfb3BlbiwKPiAgCS5mYl9yZWxlYXNlCT0gdnQ4NjIzZmJfcmVs ZWFzZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvdzEwMGZiLmMKPiBpbmRleCAzYmUwNzgwN2VkY2QuLmZlNjI4ZWMyMDE0 OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3cxMDBmYi5jCj4gKysrIGIvZHJp dmVycy92aWRlby9mYmRldi93MTAwZmIuYwo+IEBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIGlu dCB3MTAwZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgLyoKPiAgICogIEZyYW1l IGJ1ZmZlciBvcGVyYXRpb25zCj4gICAqLwo+IC1zdGF0aWMgc3RydWN0IGZiX29wcyB3MTAwZmJf b3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB3MTAwZmJfb3BzID0gewo+ICAJ Lm93bmVyICAgICAgICA9IFRISVNfTU9EVUxFLAo+ICAJLmZiX2NoZWNrX3ZhciA9IHcxMDBmYl9j aGVja192YXIsCj4gIAkuZmJfc2V0X3BhciAgID0gdzEwMGZiX3NldF9wYXIsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvd204NTA1ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv d204NTA1ZmIuYwo+IGluZGV4IDE3Yzc4MDMxNWNhNS4uYjY1NmVmZjU4YzIzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvd204NTA1ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvd204NTA1ZmIuYwo+IEBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIGludCB3bTg1MDVm Yl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHdtODUwNWZiX29wcyA9IHsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBmYl9vcHMgd204NTA1ZmJfb3BzID0gewo+ICAJLm93bmVyCQk9IFRISVNf TU9EVUxFLAo+ICAJLmZiX3NldF9wYXIJPSB3bTg1MDVmYl9zZXRfcGFyLAo+ICAJLmZiX3NldGNv bHJlZwk9IHdtODUwNWZiX3NldGNvbHJlZywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9m YmRldi94ZW4tZmJmcm9udC5jIGIvZHJpdmVycy92aWRlby9mYmRldi94ZW4tZmJmcm9udC5jCj4g aW5kZXggYTNkNmI2ZGIyMjFiLi4wMDMwN2I4NjkzYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi94ZW4tZmJmcm9udC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi94ZW4t ZmJmcm9udC5jCj4gQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW50IHhlbmZiX3NldF9wYXIo c3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0 cnVjdCBmYl9vcHMgeGVuZmJfZmJfb3BzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29w cyB4ZW5mYl9mYl9vcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkuZmJfcmVh ZAk9IGZiX3N5c19yZWFkLAo+ICAJLmZiX3dyaXRlCT0geGVuZmJfd3JpdGUsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYveGlsaW54ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv eGlsaW54ZmIuYwo+IGluZGV4IDg2Mjg4MjliNDcwZC4uY2E0ZmY2NThjYWQwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYveGlsaW54ZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYveGlsaW54ZmIuYwo+IEBAIC0yNDcsNyArMjQ3LDcgQEAgeGlsaW54X2ZiX2JsYW5rKGlu dCBibGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqZmJpKQo+ICAJcmV0dXJuIDA7IC8qIHN1Y2Nl c3MgKi8KPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgeGlsaW54ZmJfb3BzID0gewo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB4aWxpbnhmYl9vcHMgPSB7Cj4gIAkub3duZXIJ CQk9IFRISVNfTU9EVUxFLAo+ICAJLmZiX3NldGNvbHJlZwkJPSB4aWxpbnhfZmJfc2V0Y29scmVn LAo+ICAJLmZiX2JsYW5rCQk9IHhpbGlueF9mYl9ibGFuaywKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==