<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>133434</bug_id>
          
          <creation_ts>2014-06-01 09:50:23 -0700</creation_ts>
          <short_desc>Provide better encapsulation for image related painting properties.</short_desc>
          <delta_ts>2014-06-02 12:33:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>133447</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012832</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 09:50:23 -0700</bug_when>
    <thetext>void drawImage(Image*, ColorSpace styleColorSpace, const FloatPoint&amp;, CompositeOperator = CompositeSourceOver, ImageOrientationDescription = ImageOrientationDescription());
void drawImage(Image*, ColorSpace styleColorSpace, const FloatRect&amp;, CompositeOperator = CompositeSourceOver, ImageOrientationDescription = ImageOrientationDescription(), bool useLowQualityScale = false);
void drawImage(Image*, ColorSpace styleColorSpace, const FloatPoint&amp; destPoint, const FloatRect&amp; srcRect, CompositeOperator = CompositeSourceOver, ImageOrientationDescription = ImageOrientationDescription());
void drawImage(Image*, ColorSpace styleColorSpace, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator = CompositeSourceOver, BlendMode = BlendModeNormal, ImageOrientationDescription = ImageOrientationDescription(), bool useLowQualityScale = false);
        
void drawTiledImage(Image*, ColorSpace styleColorSpace, const FloatRect&amp; destRect, const FloatPoint&amp; srcPoint, const FloatSize&amp; tileSize, CompositeOperator = CompositeSourceOver, bool useLowQualityScale = false, BlendMode = BlendModeNormal);
void drawTiledImage(Image*, ColorSpace styleColorSpace, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const FloatSize&amp; tileScaleFactor, Image::TileRule hRule = Image::StretchTile, Image::TileRule vRule = Image::StretchTile, CompositeOperator = CompositeSourceOver, bool useLowQualityScale = false);

void drawImageBuffer(ImageBuffer*, ColorSpace styleColorSpace, const FloatPoint&amp;, CompositeOperator = CompositeSourceOver, BlendMode = BlendModeNormal);
void drawImageBuffer(ImageBuffer*, ColorSpace styleColorSpace, const FloatRect&amp;, CompositeOperator = CompositeSourceOver, BlendMode = BlendModeNormal, bool useLowQualityScale = false);
void drawImageBuffer(ImageBuffer*, ColorSpace styleColorSpace, const FloatPoint&amp; destPoint, const FloatRect&amp; srcRect, CompositeOperator = CompositeSourceOver, BlendMode = BlendModeNormal);
void drawImageBuffer(ImageBuffer*, ColorSpace styleColorSpace, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator = CompositeSourceOver, BlendMode = BlendModeNormal, bool useLowQualityScale = false);

The image related drawing property list keeps growing and results in multiple overloading functions with seemingly random default parameters. Some kind of encapsulation should help on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012833</commentid>
    <comment_count>1</comment_count>
      <attachid>232346</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 10:10:52 -0700</bug_when>
    <thetext>Created attachment 232346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012834</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-01 10:13:24 -0700</bug_when>
    <thetext>Attachment 232346 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:199:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:200:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:201:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:202:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012855</commentid>
    <comment_count>3</comment_count>
      <attachid>232354</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 13:42:36 -0700</bug_when>
    <thetext>Created attachment 232354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012856</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-01 13:44:40 -0700</bug_when>
    <thetext>Attachment 232354 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:199:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:200:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:201:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext.h:202:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 4 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012865</commentid>
    <comment_count>5</comment_count>
      <attachid>232354</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-01 15:10:51 -0700</bug_when>
    <thetext>Comment on attachment 232354
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=232354&amp;action=review

Seems OK to bundle the arguments like this. We could also make overloaded constructors to make this a little less wordy for cases where only one argument has an unusual value. Today we have that for compositing mode, but we could also have it for the orientation description.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1655
&gt; -    c-&gt;drawImageBuffer(buffer, ColorSpaceDeviceRGB, bufferRect.location(), state().m_globalComposite);
&gt; +    c-&gt;drawImageBuffer(buffer, ColorSpaceDeviceRGB, bufferRect.location(), ImagePaintingContext(state().m_globalComposite));

No need for this change. It should compile as-is.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1661
&gt; -    context-&gt;drawImage(image, styleColorSpace, dest, src, op);
&gt; +    context-&gt;drawImage(image, styleColorSpace, dest, src, ImagePaintingContext(op));

No need for this change. It should compile as-is.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1666
&gt; -    context-&gt;drawImageBuffer(imageBuffer, styleColorSpace, dest, src, op);
&gt; +    context-&gt;drawImageBuffer(imageBuffer, styleColorSpace, dest, src, ImagePaintingContext(op));

No need for this change. It should compile as-is.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:198
&gt; +        ImagePaintingContext(CompositeOperator compositeOperator = CompositeSourceOver,
&gt; +            BlendMode blendMode = BlendModeNormal, ImageOrientationDescription orientationDescription = ImageOrientationDescription(), bool useLowQualityScale = false)

Not sure why you broke the line where you did.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:323
&gt; +        void drawImage(Image*, ColorSpace, const FloatRect&amp; dest, const FloatRect&amp; src, const ImagePaintingContext&amp; = ImagePaintingContext());

I suggest &quot;destination&quot; and &quot;source&quot; rather than &quot;dst&quot; and &quot;src&quot;.

We should also have all these functions take Image&amp; and ImageBuffer&amp; rather than pointers.

&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:307
&gt; -        filterContext-&gt;drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer2-&gt;logicalSize()), CompositeDestinationOut);
&gt; +        filterContext-&gt;drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer2-&gt;logicalSize()),
&gt; +            ImagePaintingContext(CompositeDestinationOut));

No need to change this. It should compile as is.

&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:312
&gt; -        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()), CompositeSourceAtop);
&gt; +        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()),
&gt; +            ImagePaintingContext(CompositeSourceAtop));

No need to change this. It should compile as is.

&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:317
&gt; -        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()), CompositeXOR);
&gt; +        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()),
&gt; +            ImagePaintingContext(CompositeXOR));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1332
&gt; -                pixelSnappedForPainting(0, 0, leftSlice, topSlice, deviceScaleFactor), op);
&gt; +                pixelSnappedForPainting(0, 0, leftSlice, topSlice, deviceScaleFactor), ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1338
&gt; -                pixelSnappedForPainting(0, imageHeight - bottomSlice, leftSlice, bottomSlice, deviceScaleFactor), op);
&gt; +                pixelSnappedForPainting(0, imageHeight - bottomSlice, leftSlice, bottomSlice, deviceScaleFactor), ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1345
&gt; -                pixelSnappedForPainting(0, topSlice, leftSlice, sourceHeight, deviceScaleFactor), FloatSize(leftSideScale, leftSideScale), Image::StretchTile, (Image::TileRule)vRule, op);
&gt; +                pixelSnappedForPainting(0, topSlice, leftSlice, sourceHeight, deviceScaleFactor), FloatSize(leftSideScale, leftSideScale),
&gt; +                Image::StretchTile, (Image::TileRule)vRule, ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1354
&gt; -                pixelSnappedForPainting(imageWidth - rightSlice, 0, rightSlice, topSlice, deviceScaleFactor), op);
&gt; +                pixelSnappedForPainting(imageWidth - rightSlice, 0, rightSlice, topSlice, deviceScaleFactor), ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1361
&gt; -                op);
&gt; +                ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1366
&gt; -            graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(borderImageRect.maxX() - rightWidth, y + topWidth, rightWidth, destinationHeight, deviceScaleFactor),
&gt; -                pixelSnappedForPainting(imageWidth - rightSlice, topSlice, rightSlice, sourceHeight, deviceScaleFactor), FloatSize(rightSideScale, rightSideScale),
&gt; -                Image::StretchTile, (Image::TileRule)vRule, op);
&gt; +            graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(borderImageRect.maxX() - rightWidth, y + topWidth, rightWidth, destinationHeight, deviceScaleFactor), pixelSnappedForPainting(imageWidth - rightSlice, topSlice, rightSlice, sourceHeight, deviceScaleFactor),
&gt; +                FloatSize(rightSideScale, rightSideScale), Image::StretchTile, (Image::TileRule)vRule, ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1373
&gt;          graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, y, destinationWidth, topWidth, deviceScaleFactor),
&gt; -            pixelSnappedForPainting(leftSlice, 0, sourceWidth, topSlice, deviceScaleFactor), FloatSize(topSideScale, topSideScale), (Image::TileRule)hRule, Image::StretchTile, op);
&gt; +            pixelSnappedForPainting(leftSlice, 0, sourceWidth, topSlice, deviceScaleFactor), FloatSize(topSideScale, topSideScale),
&gt; +            (Image::TileRule)hRule, Image::StretchTile, ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1379
&gt; -        graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, borderImageRect.maxY() - bottomWidth, destinationWidth, bottomWidth, deviceScaleFactor),
&gt; -            pixelSnappedForPainting(leftSlice, imageHeight - bottomSlice, sourceWidth, bottomSlice, deviceScaleFactor), FloatSize(bottomSideScale, bottomSideScale),
&gt; -            (Image::TileRule)hRule, Image::StretchTile, op);
&gt; +        graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, borderImageRect.maxY() - bottomWidth, destinationWidth,
&gt; +            bottomWidth, deviceScaleFactor), pixelSnappedForPainting(leftSlice, imageHeight - bottomSlice, sourceWidth, bottomSlice, deviceScaleFactor),
&gt; +            FloatSize(bottomSideScale, bottomSideScale), (Image::TileRule)hRule, Image::StretchTile, ImagePaintingContext(op));

No need to change this. It should compile as is.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1406
&gt; -            middleScaleFactor, (Image::TileRule)hRule, (Image::TileRule)vRule, op);
&gt; +            middleScaleFactor, (Image::TileRule)hRule, (Image::TileRule)vRule, ImagePaintingContext(op));

No need to change this. It should compile as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012888</commentid>
    <comment_count>6</comment_count>
      <attachid>232362</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 20:37:48 -0700</bug_when>
    <thetext>Created attachment 232362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012889</commentid>
    <comment_count>7</comment_count>
      <attachid>232362</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 20:38:00 -0700</bug_when>
    <thetext>Comment on attachment 232362
Patch

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012890</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-01 20:39:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 232354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232354&amp;action=review
&gt; 
&gt; Seems OK to bundle the arguments like this. We could also make overloaded constructors to make this a little less wordy for cases where only one argument has an unusual value. Today we have that for compositing mode, but we could also have it for the orientation description.
Good idea. Done.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1655
&gt; &gt; -    c-&gt;drawImageBuffer(buffer, ColorSpaceDeviceRGB, bufferRect.location(), state().m_globalComposite);
&gt; &gt; +    c-&gt;drawImageBuffer(buffer, ColorSpaceDeviceRGB, bufferRect.location(), ImagePaintingContext(state().m_globalComposite));
&gt; 
&gt; No need for this change. It should compile as-is.
Done.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1661
&gt; &gt; -    context-&gt;drawImage(image, styleColorSpace, dest, src, op);
&gt; &gt; +    context-&gt;drawImage(image, styleColorSpace, dest, src, ImagePaintingContext(op));
&gt; 
&gt; No need for this change. It should compile as-is.
Done.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1666
&gt; &gt; -    context-&gt;drawImageBuffer(imageBuffer, styleColorSpace, dest, src, op);
&gt; &gt; +    context-&gt;drawImageBuffer(imageBuffer, styleColorSpace, dest, src, ImagePaintingContext(op));
&gt; 
&gt; No need for this change. It should compile as-is.
Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:198
&gt; &gt; +        ImagePaintingContext(CompositeOperator compositeOperator = CompositeSourceOver,
&gt; &gt; +            BlendMode blendMode = BlendModeNormal, ImageOrientationDescription orientationDescription = ImageOrientationDescription(), bool useLowQualityScale = false)
&gt; 
&gt; Not sure why you broke the line where you did.
Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:323
&gt; &gt; +        void drawImage(Image*, ColorSpace, const FloatRect&amp; dest, const FloatRect&amp; src, const ImagePaintingContext&amp; = ImagePaintingContext());
&gt; 
&gt; I suggest &quot;destination&quot; and &quot;source&quot; rather than &quot;dst&quot; and &quot;src&quot;.
Done.

&gt; 
&gt; We should also have all these functions take Image&amp; and ImageBuffer&amp; rather than pointers.
https://bugs.webkit.org/show_bug.cgi?id=133442

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:307
&gt; &gt; -        filterContext-&gt;drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer2-&gt;logicalSize()), CompositeDestinationOut);
&gt; &gt; +        filterContext-&gt;drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer2-&gt;logicalSize()),
&gt; &gt; +            ImagePaintingContext(CompositeDestinationOut));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:312
&gt; &gt; -        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()), CompositeSourceAtop);
&gt; &gt; +        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()),
&gt; &gt; +            ImagePaintingContext(CompositeSourceAtop));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:317
&gt; &gt; -        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()), CompositeXOR);
&gt; &gt; +        filterContext-&gt;drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in-&gt;absolutePaintRect()), IntRect(IntPoint(), imageBuffer-&gt;logicalSize()),
&gt; &gt; +            ImagePaintingContext(CompositeXOR));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1332
&gt; &gt; -                pixelSnappedForPainting(0, 0, leftSlice, topSlice, deviceScaleFactor), op);
&gt; &gt; +                pixelSnappedForPainting(0, 0, leftSlice, topSlice, deviceScaleFactor), ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1338
&gt; &gt; -                pixelSnappedForPainting(0, imageHeight - bottomSlice, leftSlice, bottomSlice, deviceScaleFactor), op);
&gt; &gt; +                pixelSnappedForPainting(0, imageHeight - bottomSlice, leftSlice, bottomSlice, deviceScaleFactor), ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1345
&gt; &gt; -                pixelSnappedForPainting(0, topSlice, leftSlice, sourceHeight, deviceScaleFactor), FloatSize(leftSideScale, leftSideScale), Image::StretchTile, (Image::TileRule)vRule, op);
&gt; &gt; +                pixelSnappedForPainting(0, topSlice, leftSlice, sourceHeight, deviceScaleFactor), FloatSize(leftSideScale, leftSideScale),
&gt; &gt; +                Image::StretchTile, (Image::TileRule)vRule, ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1354
&gt; &gt; -                pixelSnappedForPainting(imageWidth - rightSlice, 0, rightSlice, topSlice, deviceScaleFactor), op);
&gt; &gt; +                pixelSnappedForPainting(imageWidth - rightSlice, 0, rightSlice, topSlice, deviceScaleFactor), ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1361
&gt; &gt; -                op);
&gt; &gt; +                ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1366
&gt; &gt; -            graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(borderImageRect.maxX() - rightWidth, y + topWidth, rightWidth, destinationHeight, deviceScaleFactor),
&gt; &gt; -                pixelSnappedForPainting(imageWidth - rightSlice, topSlice, rightSlice, sourceHeight, deviceScaleFactor), FloatSize(rightSideScale, rightSideScale),
&gt; &gt; -                Image::StretchTile, (Image::TileRule)vRule, op);
&gt; &gt; +            graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(borderImageRect.maxX() - rightWidth, y + topWidth, rightWidth, destinationHeight, deviceScaleFactor), pixelSnappedForPainting(imageWidth - rightSlice, topSlice, rightSlice, sourceHeight, deviceScaleFactor),
&gt; &gt; +                FloatSize(rightSideScale, rightSideScale), Image::StretchTile, (Image::TileRule)vRule, ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1373
&gt; &gt;          graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, y, destinationWidth, topWidth, deviceScaleFactor),
&gt; &gt; -            pixelSnappedForPainting(leftSlice, 0, sourceWidth, topSlice, deviceScaleFactor), FloatSize(topSideScale, topSideScale), (Image::TileRule)hRule, Image::StretchTile, op);
&gt; &gt; +            pixelSnappedForPainting(leftSlice, 0, sourceWidth, topSlice, deviceScaleFactor), FloatSize(topSideScale, topSideScale),
&gt; &gt; +            (Image::TileRule)hRule, Image::StretchTile, ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1379
&gt; &gt; -        graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, borderImageRect.maxY() - bottomWidth, destinationWidth, bottomWidth, deviceScaleFactor),
&gt; &gt; -            pixelSnappedForPainting(leftSlice, imageHeight - bottomSlice, sourceWidth, bottomSlice, deviceScaleFactor), FloatSize(bottomSideScale, bottomSideScale),
&gt; &gt; -            (Image::TileRule)hRule, Image::StretchTile, op);
&gt; &gt; +        graphicsContext-&gt;drawTiledImage(image.get(), colorSpace, pixelSnappedForPainting(x + leftWidth, borderImageRect.maxY() - bottomWidth, destinationWidth,
&gt; &gt; +            bottomWidth, deviceScaleFactor), pixelSnappedForPainting(leftSlice, imageHeight - bottomSlice, sourceWidth, bottomSlice, deviceScaleFactor),
&gt; &gt; +            FloatSize(bottomSideScale, bottomSideScale), (Image::TileRule)hRule, Image::StretchTile, ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:1406
&gt; &gt; -            middleScaleFactor, (Image::TileRule)hRule, (Image::TileRule)vRule, op);
&gt; &gt; +            middleScaleFactor, (Image::TileRule)hRule, (Image::TileRule)vRule, ImagePaintingContext(op));
&gt; 
&gt; No need to change this. It should compile as is.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012934</commentid>
    <comment_count>9</comment_count>
      <attachid>232362</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 07:24:22 -0700</bug_when>
    <thetext>Comment on attachment 232362
Patch

Clearing flags on attachment: 232362

Committed r169529: &lt;http://trac.webkit.org/changeset/169529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012935</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 07:24:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012939</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 08:01:08 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 133447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012944</commentid>
    <comment_count>12</comment_count>
      <attachid>232380</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-02 08:27:23 -0700</bug_when>
    <thetext>Created attachment 232380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012945</commentid>
    <comment_count>13</comment_count>
      <attachid>232380</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-02 08:28:04 -0700</bug_when>
    <thetext>Comment on attachment 232380
Patch

Missing paintingDisabled() check caused the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012948</commentid>
    <comment_count>14</comment_count>
      <attachid>232380</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-06-02 09:04:45 -0700</bug_when>
    <thetext>Comment on attachment 232380
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=232380&amp;action=review

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:196
&gt; +    struct ImagePaintingContext {

I don&apos;t really like this name; it sounds like it wraps a GraphicsContext. Maybe ImagePaintingOptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012949</commentid>
    <comment_count>15</comment_count>
      <attachid>232380</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 09:05:56 -0700</bug_when>
    <thetext>Comment on attachment 232380
Patch

Clearing flags on attachment: 232380

Committed r169531: &lt;http://trac.webkit.org/changeset/169531&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012950</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 09:06:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012980</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-02 12:33:00 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 232380 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232380&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:196
&gt; &gt; +    struct ImagePaintingContext {
&gt; 
&gt; I don&apos;t really like this name; it sounds like it wraps a GraphicsContext. Maybe ImagePaintingOptions.
https://trac.webkit.org/changeset/169534</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232346</attachid>
            <date>2014-06-01 10:10:52 -0700</date>
            <delta_ts>2014-06-01 13:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133434-20140601101027.patch</filename>
            <type>text/plain</type>
            <size>39560</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkZTAyMjNiMDYyNWZj
YTJkZWRiZDc3YjkyODljZTQ1MmMwYmQyZC4uMjM0ZTQ5NzVhZGQ4ZWQ1ZjQ0MzJkMjA2ZTk2NjFm
MWUwOGFkNDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA1LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBiZXR0ZXIgZW5j
YXBzdWxhdGlvbiBmb3IgaW1hZ2UgcmVsYXRlZCBwYWludGluZyBwcm9wZXJ0aWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1hZ2UgcmVsYXRlZCBk
cmF3aW5nIHByb3BlcnR5IGxpc3Qga2VlcHMgZ3Jvd2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBiZWxv
dyBhbmQgcmVzdWx0cyBpbgorICAgICAgICBtdWx0aXBsZSBvdmVybG9hZGluZ3Mgd2l0aCBzZWVt
aW5nbHkgcmFuZG9tIGRlZmF1bHQgcGFyYW1ldGVycy4KKyAgICAgICAgCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGls
ZWRJbWFnZSgpCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkKKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgZW5jYXBzdWxhdGlvbiBmb3IgdGhl
IGltYWdlIGRyYXdpbmcgcHJvcGVydGllcy4gRW5jYXBzdWxhdGlvbiBlbnN1cmVzIHRoYXQKKyAg
ICAgICAgaW50cm9kdWNpbmcgYSBuZXcgcHJvcGVydHkgZG9lcyBub3QgcmVzdWx0IGluIHlldCBh
bm90aGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpwYWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9z
aXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ0NvbnRl
eHQ6OkltYWdlUGFpbnRpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmVuZFNoYWRvd0xh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludFNuYXBzaG90KToKKwogMjAxNC0wNS0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFudXAgdGVtcG9yYXJ5IHNldHRpbmcgb2YgaW1hZ2UgaW50
ZXJwb2xhdGlvbiBxdWFsaXR5IGluIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA2N2IwNzdlZjU1OWYxYjZkMTI3OGIzODY2ZTUyYTllZmE1ODI5NTQw
Li5jYzkxZGNkNmU2NGQ4ZGEyMzM2ZGU1MmE2OWQzZDRhYThiYmQyN2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtNTI2LDcgKzUyNiw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
OGZpbGxQYXRoRVJLTlNfNFBhdGhFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5Y2xlYXJSZWN0RVJLTlNfOUZsb2F0UmVjdEUKLV9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OWRyYXdJbWFnZUVQTlNfNUltYWdlRU5TXzEwQ29sb3JT
cGFjZUVSS05TXzEwRmxvYXRQb2ludEVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRU5TXzI3SW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5ZHJh
d0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJLTlNf
MjBJbWFnZVBhaW50aW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXNl
dFNoYWRvd0VSS05TXzlGbG9hdFNpemVFZlJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUVmZgogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHREMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDc1MTIxMjMxZWNmYzM4NTVlYzhlODJhMWNlYWZkMDE1OTUxMDI0MDcuLjI0ZTFl
Y2ZjNzlkMTY3NTJhYWJmNDY2YjY0ZjJkZmQ0ZTU5ZTU4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MDMsOSArNDAzLDExIEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAg
ICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJl
bmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwKKyAgICAgICAgICAgICAgICAg
ICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwg
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwKKyAgICAgICAgICAg
ICAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNj
YWxlKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDVkZGU1Y2JmZmM5
ZWNhNzIwMTNiNjkxOTQyNjQwMGM5MjhhY2M1NDYuLmE0NzZkMmEzZGY4MzgxNDk1OWY5NGUwYWU1
MmNiYjQ3MmFjMWNhZTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTM3OCwxNyArMTM3OCwxNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQq
IGltYWdlLCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKGltYWdlKTsKIAogICAgIGlm
IChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRy
YXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5v
cm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQo
b3AsIGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2Fu
dmFzQ29tcG9zaXRlZERyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAg
ICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFz
KCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0
LCBub3JtYWxpemVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ0NvbnRleHQob3AsIGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJH
Qiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
LT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE0NjEsMTcg
KzE0NjEsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1M
Q2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihi
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkubV9n
bG9iYWxDb21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCk7CisgICAgICAgIGMtPmRyYXdJ
bWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdDb250ZXh0KHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
bV9nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21wb3Np
dGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKGJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVh
ckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBz
dGF0ZSgpLm1fZ2xvYmFsQmxlbmQpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29u
dGV4dChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQpKTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCk7
CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KHN0YXRlKCkubV9nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3KGRzdFJl
Y3QpOwogICAgIH0KIH0KQEAgLTE2NTIsMTkgKzE2NTIsMTggQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJ
bnRSZWMKICAgICBjLT5jbGlwT3V0KGJ1ZmZlclJlY3QpOwogICAgIGMtPmNsZWFyUmVjdChjYW52
YXNSZWN0KTsKICAgICBjLT5yZXN0b3JlKCk7Ci0KLSAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCku
bV9nbG9iYWxDb21wb3NpdGUpOworICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlY3QubG9jYXRpb24oKSwgSW1hZ2VQYWludGluZ0NvbnRl
eHQoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpOwogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAog
c3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlKiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywg
b3ApOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
LCBzcmMsIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGNv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBJbWFnZVBhaW50aW5nQ29udGV4dChvcCkpOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxD
YW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAxYjBjNjU3NGFjNjJhZTAzZTgyODBiZjI3ZGMz
MmJiM2I1Y2UwNDZjLi5hOWJjZjU1MjY0ODBlZmQ5MjJjNGZkZGQwMWIxNDA2NThmOTA3MDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKQEAgLTU3MCw4NyArNTcwLDc1IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICNl
bmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdDb250ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0
UmVjdChwLCBpbWFnZS0+c2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNp
emUoKSksIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlc2NyaXB0aW9uKTsKKyAgICBkcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QsIGltYWdlLT5zaXplKCkpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRl
eHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgciwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdCwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQog
ewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3SW1hZ2UoaW1hZ2Us
IHN0eWxlQ29sb3JTcGFjZSwgciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUo
KSksIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OworICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRleHQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBkZXNjcmlwdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2Uq
IGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdl
UGFpbnRpbmdDb250ZXh0KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNl
LCBGbG9hdFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBkZXNjcmlwdGlvbik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVh
bGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkpOwotICAgIGltYWdlLT5kcmF3KHRoaXMsIGRlc3QsIHNyYywgc3R5bGVDb2xvclNwYWNlLCBv
cCwgYmxlbmRNb2RlLCBkZXNjcmlwdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50
aW5nQ29udGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBkZXN0LCBz
cmMsIHN0eWxlQ29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ0NvbnRleHQubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ0NvbnRleHQubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdDb250
ZXh0Lm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyYywgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2l6ZSwKKyAgICBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWlu
dGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNjYWxlID8g
SW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1h
Z2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0UmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBzdHlsZUNv
bG9yU3BhY2UsIG9wLCBibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGlu
Z0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3Qs
IHNyYywgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fYmxlbmRNb2RlKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRy
YXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmNSZWN0LCBvcCk7CisgICAg
ICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgZGVzdCwgc3JjLCBpbWFnZVBhaW50aW5n
Q29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIHVz
ZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVjdCwgdGls
ZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZSgqdGhpcywgaW1hZ2VQYWludGluZ0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJ
bnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFn
ZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyYywgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3Ip
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdCwgY29uc3QgSW1hZ2VQYWludGluZ0Nv
bnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxv
YXRSZWN0KHAsIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LCBpbWFnZS0+bG9naWNhbFNpemUo
KSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQ
YWludGluZ0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWlu
dGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UtPmxvZ2ljYWxTaXplKCkpKSwgb3AsIGJsZW5kTW9k
ZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQotewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCwgc3JjUmVjdC5zaXpl
KCkpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IGNvbG9yU3BhY2UsIGRlc3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFn
ZS0+bG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nQ29udGV4dCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRl
eHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkg
fHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNj
YWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwot
ICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgYmxl
bmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgaW1hZ2UtPmRyYXcodGhpcywgY29sb3JT
cGFjZSwgZGVzdCwgc3JjLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2NvbXBvc2l0ZU9wZXJhdG9y
LCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ0NvbnRleHQu
bV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA5OWE2Yjc2YzVhYWFmYjU5NDg2MDMwZjVjNmVk
Yzk3YWJkNjRmMTliLi5hMDIzZDQyMDUwYzc4NzMwY2JlY2IyZjUyNzI1ODIxNTc0NTg3MDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMTkzLDYgKzE5MywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBz
ZXRTdHJva2VBbmRGaWxsQ29sb3IoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqLCBDR0NvbG9yUmVm
KTsKICNlbmRpZgogCisgICAgc3RydWN0IEltYWdlUGFpbnRpbmdDb250ZXh0IHsKKyAgICAgICAg
SW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLAorICAgICAgICAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUgPSBmYWxzZSkKKyAgICAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihj
b21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQor
ICAgICAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlw
dGlvbikKKyAgICAgICAgICAgICwgbV91c2VMb3dRdWFsaXR5U2NhbGUodXNlTG93UXVhbGl0eVNj
YWxlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBt
X2NvbXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CisgICAg
ICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247
CisgICAgICAgIGJvb2wgbV91c2VMb3dRdWFsaXR5U2NhbGU7CisgICAgfTsKKwogICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
Q29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTMwMiwy
MSArMzE4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgICAgICB2b2lkIGRy
YXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBv
aW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAg
ICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCksIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0UG9pbnQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdl
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsCi0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRj
aFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotCi0gICAgICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
LSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdl
KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdCwgY29uc3QgSW1hZ2VQYWludGlu
Z0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQgZHJhd0lt
YWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBhaW50aW5nQ29udGV4dCgpKTsKKyAgICAgICAgdm9p
ZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBh
aW50aW5nQ29udGV4dCgpKTsKKworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmMs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9
IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCisgICAgICAgICAgICBJbWFn
ZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQm
ID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25z
dCBJbWFnZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBhaW50aW5nQ29udGV4dCgpKTsKKyAgICAg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRp
bmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcios
IENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOwog
CiAgICAgICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAKaW5kZXggMmU5MTc4NWE3YjEyMTkxZGNiMDYyMTU0NzlmZjBiZmQ1MDdk
MWQ3Yi4uYWQyOTk0YjY5YWVlMWI2Yjg1MGJmZGUwZDNjYzNkYTZmZTYxMjRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTkxNiw3
ICs5MTYsOCBAQCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZSgqY29u
dGV4dCk7CiAKICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQtPmRyYXdJ
bWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJvdW5kZWRJbnRQ
b2ludChtX2xheWVyT3JpZ2luKSwgSW50UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSksIGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKKyAg
ICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6
ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwKKyAgICAgICAgSW1hZ2VQ
YWludGluZ0NvbnRleHQoY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpKTsKIAogICAgIG1f
bGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3Jh
dGNoQnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggNDRlZDBmMWU3ZWMwN2RkZGU0
ZTNlMmMzODNmZGFmYTcxOTg1YTk2MC4uZmZkNTBlYTY3ZWJhYmQ5ZWE1ZDQ4NWEzZjI4NzJhOWYx
NTliYTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI5NywyMSArMjk3LDI0IEBAIHZvaWQgRkVD
b21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QueSgpIC0gaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkueSgpKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
MlJlY3QoSW50UG9pbnQoZGVzdGluYXRpb25SZWN0LngoKSAtIGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKS54KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25SZWN0LnkoKSAtIGluMi0+YWJzb2x1dGVQYWludFJlY3QoKS55KCkpLCBkZXN0aW5hdGlvblJl
Y3Quc2l6ZSgpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdGluYXRpb25Qb2ludCwgc291cmNlMlJl
Y3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJjZVJlY3QsIENvbXBv
c2l0ZVNvdXJjZUluKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdChkZXN0aW5hdGlvblBvaW50
LCBzb3VyY2UyUmVjdC5zaXplKCkpLCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50
UmVjdChkZXN0aW5hdGlvblBvaW50LCBzb3VyY2VSZWN0LnNpemUoKSksIHNvdXJjZVJlY3QsIElt
YWdlUGFpbnRpbmdDb250ZXh0KENvbXBvc2l0ZVNvdXJjZUluKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKICAgICAgICAgZmlsdGVy
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXpl
KCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQ
b2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLAorICAgICAgICAgICAgSW1hZ2VQ
YWludGluZ0NvbnRleHQoQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgogICAgICAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwg
Q29tcG9zaXRlU291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1h
Z2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLAorICAgICAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRl
eHQoQ29tcG9zaXRlU291cmNlQXRvcCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09N
UE9TSVRFX09QRVJBVE9SX1hPUjoKICAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LAorICAgICAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlWE9SKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMzdhYTU4MGUx
OWNiZTA2N2Q1ZDk1YWZhOTE0ZWU2MmI0M2MzZTMxYS4uZGQxNGU5Yjk0ZjMzYmU2MDY3ODhkMjA4
NjE4YzM0MTg5YTUxYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0
aW5hdGlvbkMKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zm
c2V0LnkoKSk7CiAKICAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0
ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFj
ZSgpLAotICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhkZXN0UmVjdCwgbV9yZW5kZXJM
YXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoZGVzdFJlY3Qs
IG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CiAKICAgICBmaWx0ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
ZmE2OTZiYjU4YWZjN2RjNDg1YzhkYTIwZWI1NzE4NWNlZWNlNWIxNC4uMzcxOTFmNWZiMjBjODU1
NWYzY2MwOTRjZmUwYTgzYjJkYjRiODRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04NDEsMTIgKzg0MSwxMyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVy
LCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAg
ICAgICAgICAgICAgICBpbWFnZS0+c2V0U3BhY2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQaGFz
ZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxp
bmcsIGJnTGF5ZXItPmJsZW5kTW9kZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJl
Y3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLAorICAg
ICAgICAgICAgICAgIEltYWdlUGFpbnRpbmdDb250ZXh0KGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5i
bGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlT
Y2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoYmdMYXllci0+Y2xpcCgpID09
IFRleHRGaWxsQm94KSB7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtYXNrSW1h
Z2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5h
dGlvbkluKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KENv
bXBvc2l0ZURlc3RpbmF0aW9uSW4pKTsKICAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKICAgICB9CiB9CkBAIC0xMzI4LDE5ICsxMzI5LDIwIEBAIGJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0aGUgaW1h
Z2UgaXMgb2J0YWluZWQgZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoMCwgMCwgbGVmdFNsaWNlLCB0
b3BTbGljZSkKICAgICAgICAgaWYgKGRyYXdUb3ApCiAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9yUGFp
bnRpbmcoeCwgeSwgbGVmdFdpZHRoLCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAg
ICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKDAsIDAsIGxlZnRTbGljZSwgdG9w
U2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgb3ApOworICAgICAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UsIGRldmljZVNjYWxlRmFj
dG9yKSwgSW1hZ2VQYWludGluZ0NvbnRleHQob3ApKTsKIAogICAgICAgICAvLyBUaGUgYm90dG9t
IGxlZnQgY29ybmVyIHJlY3QgaXMgKHR4LCB0eSArIGggLSBib3R0b21XaWR0aCwgbGVmdFdpZHRo
LCBib3R0b21XaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRo
ZSBpbWFnZSBpcyAoMCwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3Rv
bVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQ
YWludGluZyh4LCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsIGxlZnRXaWR0
aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRGb3JQYWludGluZygwLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xp
Y2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKKyAgICAgICAgICAgICAg
ICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBs
ZWZ0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIEltYWdlUGFpbnRpbmdD
b250ZXh0KG9wKSk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGxlZnQgZWRnZS4KICAgICAgICAg
Ly8gSGF2ZSB0byBzY2FsZSBhbmQgdGlsZSBpbnRvIHRoZSBib3JkZXIgcmVjdC4KICAgICAgICAg
aWYgKHNvdXJjZUhlaWdodCA+IDApCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGlu
Zyh4LCB5ICsgdG9wV2lkdGgsIGxlZnRXaWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNj
YWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCB0
b3BTbGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxv
YXRTaXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRpbGUs
IChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKKyAgICAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRGb3JQYWludGluZygwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmlj
ZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLAor
ICAgICAgICAgICAgICAgIEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVs
ZSwgSW1hZ2VQYWludGluZ0NvbnRleHQob3ApKTsKICAgICB9CiAKICAgICBpZiAoZHJhd1JpZ2h0
KSB7CkBAIC0xMzQ5LDMyICsxMzUxLDMyIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgb2J0YWluZWQg
ZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0
U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1RvcCkKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhib3JkZXJJbWFnZVJlY3QubWF4WCgpIC0gcmlnaHRXaWR0aCwgeSwgcmln
aHRXaWR0aCwgdG9wV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRGb3JQYWludGluZyhpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRT
bGljZSwgdG9wU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgb3ApOworICAgICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdo
dFNsaWNlLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBJbWFnZVBhaW50aW5nQ29udGV4
dChvcCkpOwogCiAgICAgICAgIC8vIFRoZSBib3R0b20gcmlnaHQgY29ybmVyIHJlY3QgaXMgKHR4
ICsgdyAtIHJpZ2h0V2lkdGgsIHR5ICsgaCAtIGJvdHRvbVdpZHRoLCByaWdodFdpZHRoLCBib3R0
b21XaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFn
ZSBpcyAoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2Us
IHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3JkZXJJbWFnZVJlY3QubWF4WCgpIC0gcmlnaHRX
aWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRoLAogICAgICAgICAgICAg
ICAgIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoLCBkZXZpY2VTY2FsZUZhY3RvciksIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGltYWdlV2lkdGggLSByaWdodFNsaWNlLCBpbWFnZUhlaWdodCAtIGJv
dHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLAot
ICAgICAgICAgICAgICAgIG9wKTsKKyAgICAgICAgICAgICAgICBJbWFnZVBhaW50aW5nQ29udGV4
dChvcCkpOwogCiAgICAgICAgIC8vIFBhaW50IHRoZSByaWdodCBlZGdlLgogICAgICAgICBpZiAo
c291cmNlSGVpZ2h0ID4gMCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVk
SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJv
cmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5ICsgdG9wV2lkdGgsIHJpZ2h0V2lk
dGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICAg
ICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIHRvcFNs
aWNlLCByaWdodFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRT
aXplKHJpZ2h0U2lkZVNjYWxlLCByaWdodFNpZGVTY2FsZSksCi0gICAgICAgICAgICAgICAgSW1h
Z2U6OlN0cmV0Y2hUaWxlLCAoSW1hZ2U6OlRpbGVSdWxlKXZSdWxlLCBvcCk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3JkZXJJbWFnZVJlY3QubWF4WCgpIC0gcmlnaHRX
aWR0aCwgeSArIHRvcFdpZHRoLCByaWdodFdpZHRoLCBkZXN0aW5hdGlvbkhlaWdodCwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhpbWFnZVdpZHRoIC0gcmlnaHRT
bGljZSwgdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0
b3IpLAorICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShyaWdodFNpZGVTY2FsZSwgcmlnaHRTaWRl
U2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRpbGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIEltYWdl
UGFpbnRpbmdDb250ZXh0KG9wKSk7CiAgICAgfQogCiAgICAgLy8gUGFpbnQgdGhlIHRvcCBlZGdl
LgogICAgIGlmIChkcmF3VG9wICYmIHNvdXJjZVdpZHRoID4gMCkKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoeCArIGxlZnRXaWR0aCwgeSwgZGVzdGluYXRpb25XaWR0aCwgdG9wV2lk
dGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKGxlZnRTbGljZSwgMCwgc291cmNlV2lkdGgsIHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3Rv
ciksIEZsb2F0U2l6ZSh0b3BTaWRlU2NhbGUsIHRvcFNpZGVTY2FsZSksIChJbWFnZTo6VGlsZVJ1
bGUpaFJ1bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgb3ApOworICAgICAgICAgICAgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcobGVmdFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmlj
ZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwKKyAg
ICAgICAgICAgIChJbWFnZTo6VGlsZVJ1bGUpaFJ1bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgSW1h
Z2VQYWludGluZ0NvbnRleHQob3ApKTsKIAogICAgIC8vIFBhaW50IHRoZSBib3R0b20gZWRnZS4K
ICAgICBpZiAoZHJhd0JvdHRvbSAmJiBzb3VyY2VXaWR0aCA+IDApCi0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKHggKyBsZWZ0V2lkdGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBi
b3R0b21XaWR0aCwgZGVzdGluYXRpb25XaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFj
dG9yKSwKLSAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGxlZnRTbGljZSwgaW1h
Z2VIZWlnaHQgLSBib3R0b21TbGljZSwgc291cmNlV2lkdGgsIGJvdHRvbVNsaWNlLCBkZXZpY2VT
Y2FsZUZhY3RvciksIEZsb2F0U2l6ZShib3R0b21TaWRlU2NhbGUsIGJvdHRvbVNpZGVTY2FsZSks
Ci0gICAgICAgICAgICAoSW1hZ2U6OlRpbGVSdWxlKWhSdWxlLCBJbWFnZTo6U3RyZXRjaFRpbGUs
IG9wKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoeCArIGxlZnRXaWR0aCwgYm9y
ZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRoLCBkZXN0aW5hdGlvbldpZHRoLAorICAg
ICAgICAgICAgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcobGVmdFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBzb3VyY2VXaWR0
aCwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIEZsb2F0U2l6
ZShib3R0b21TaWRlU2NhbGUsIGJvdHRvbVNpZGVTY2FsZSksIChJbWFnZTo6VGlsZVJ1bGUpaFJ1
bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgSW1hZ2VQYWludGluZ0NvbnRleHQob3ApKTsKIAogICAg
IC8vIFBhaW50IHRoZSBtaWRkbGUuCiAgICAgaWYgKGRyYXdNaWRkbGUpIHsKQEAgLTE0MDEsNyAr
MTQwMyw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2Uo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsCiAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCB5ICsgdG9wV2lkdGgsIGRlc3Rp
bmF0aW9uV2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCiAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhsZWZ0U2xpY2UsIHRvcFNsaWNlLCBzb3Vy
Y2VXaWR0aCwgc291cmNlSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICBt
aWRkbGVTY2FsZUZhY3RvciwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgKEltYWdlOjpUaWxlUnVs
ZSl2UnVsZSwgb3ApOworICAgICAgICAgICAgbWlkZGxlU2NhbGVGYWN0b3IsIChJbWFnZTo6VGls
ZVJ1bGUpaFJ1bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIEltYWdlUGFpbnRpbmdDb250ZXh0
KG9wKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAwOTMyYTVhZWQ0YzQ0MGJk
NDBkZmRjNTFlMWI1YmRiMTk5Yjc5Nzc5Li42OWUwYTA3YTdhY2Q5Yzg4NmZlNWVmMWQ1M2RiYWJk
ZjA0NTZlNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNj
cmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24o
KSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlciwgb3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nQ29u
dGV4dChDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IGUzNGYyY2M0MmEzZGVjZjM0OWYyMTNiYWMxZTljYTVlMzVkZmU1Y2MuLmI2ZTZk
NWUxNGNmNzA0NmQzM2FkNGM4OTQxNTQ4YWZlMzYxNDIzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAg
ICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxl
KCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VT
aXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2Uu
Z2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlv
dXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxl
RmFjdG9yKSwgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgZXJy
b3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC01NjgsNyArNTY4LDgg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFU
SU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0o
c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlUmVzb3VyY2UoKS5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdl
dCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBjb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAorICAgICAgICBJbWFnZVBhaW50
aW5nQ29udGV4dChjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBib29sIFJlbmRlcklt
YWdlOjpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmlu
ZGV4IDcyNTlmYzU4NzNlYzc1YTJiMTA5MzM1MWIxYjJhYjY2Yzc0ZjkzYjMuLjU0ODdjZjRjYzUw
YmU0MWI2MTRkMjFiMzdiZDZiNzBjMDgwYzk4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTQxLDcgKzE0MSw3
IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBDb21wb3NpdGVT
b3VyY2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7
CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxp
Z25lZFJlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZU5vcm1hbCwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJz
b3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25z
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232354</attachid>
            <date>2014-06-01 13:42:36 -0700</date>
            <delta_ts>2014-06-01 20:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133434-20140601134212.patch</filename>
            <type>text/plain</type>
            <size>40636</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkZTAyMjNiMDYyNWZj
YTJkZWRiZDc3YjkyODljZTQ1MmMwYmQyZC4uMjM0ZTQ5NzVhZGQ4ZWQ1ZjQ0MzJkMjA2ZTk2NjFm
MWUwOGFkNDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA1LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBiZXR0ZXIgZW5j
YXBzdWxhdGlvbiBmb3IgaW1hZ2UgcmVsYXRlZCBwYWludGluZyBwcm9wZXJ0aWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1hZ2UgcmVsYXRlZCBk
cmF3aW5nIHByb3BlcnR5IGxpc3Qga2VlcHMgZ3Jvd2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBiZWxv
dyBhbmQgcmVzdWx0cyBpbgorICAgICAgICBtdWx0aXBsZSBvdmVybG9hZGluZ3Mgd2l0aCBzZWVt
aW5nbHkgcmFuZG9tIGRlZmF1bHQgcGFyYW1ldGVycy4KKyAgICAgICAgCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGls
ZWRJbWFnZSgpCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkKKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgZW5jYXBzdWxhdGlvbiBmb3IgdGhl
IGltYWdlIGRyYXdpbmcgcHJvcGVydGllcy4gRW5jYXBzdWxhdGlvbiBlbnN1cmVzIHRoYXQKKyAg
ICAgICAgaW50cm9kdWNpbmcgYSBuZXcgcHJvcGVydHkgZG9lcyBub3QgcmVzdWx0IGluIHlldCBh
bm90aGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpwYWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9z
aXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ0NvbnRl
eHQ6OkltYWdlUGFpbnRpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmVuZFNoYWRvd0xh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludFNuYXBzaG90KToKKwogMjAxNC0wNS0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFudXAgdGVtcG9yYXJ5IHNldHRpbmcgb2YgaW1hZ2UgaW50
ZXJwb2xhdGlvbiBxdWFsaXR5IGluIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA2N2IwNzdlZjU1OWYxYjZkMTI3OGIzODY2ZTUyYTllZmE1ODI5NTQw
Li5jYzkxZGNkNmU2NGQ4ZGEyMzM2ZGU1MmE2OWQzZDRhYThiYmQyN2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtNTI2LDcgKzUyNiw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
OGZpbGxQYXRoRVJLTlNfNFBhdGhFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5Y2xlYXJSZWN0RVJLTlNfOUZsb2F0UmVjdEUKLV9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OWRyYXdJbWFnZUVQTlNfNUltYWdlRU5TXzEwQ29sb3JT
cGFjZUVSS05TXzEwRmxvYXRQb2ludEVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRU5TXzI3SW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5ZHJh
d0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJLTlNf
MjBJbWFnZVBhaW50aW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXNl
dFNoYWRvd0VSS05TXzlGbG9hdFNpemVFZlJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUVmZgogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHREMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDc1MTIxMjMxZWNmYzM4NTVlYzhlODJhMWNlYWZkMDE1OTUxMDI0MDcuLjI0ZTFl
Y2ZjNzlkMTY3NTJhYWJmNDY2YjY0ZjJkZmQ0ZTU5ZTU4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MDMsOSArNDAzLDExIEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAg
ICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJl
bmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwKKyAgICAgICAgICAgICAgICAg
ICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwg
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwKKyAgICAgICAgICAg
ICAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNj
YWxlKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDVkZGU1Y2JmZmM5
ZWNhNzIwMTNiNjkxOTQyNjQwMGM5MjhhY2M1NDYuLmE0NzZkMmEzZGY4MzgxNDk1OWY5NGUwYWU1
MmNiYjQ3MmFjMWNhZTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTM3OCwxNyArMTM3OCwxNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQq
IGltYWdlLCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKGltYWdlKTsKIAogICAgIGlm
IChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRy
YXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5v
cm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQo
b3AsIGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2Fu
dmFzQ29tcG9zaXRlZERyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAg
ICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFz
KCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0
LCBub3JtYWxpemVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ0NvbnRleHQob3AsIGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJH
Qiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
LT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE0NjEsMTcg
KzE0NjEsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1M
Q2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihi
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkubV9n
bG9iYWxDb21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCk7CisgICAgICAgIGMtPmRyYXdJ
bWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdDb250ZXh0KHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
bV9nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21wb3Np
dGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKGJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVh
ckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBz
dGF0ZSgpLm1fZ2xvYmFsQmxlbmQpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29u
dGV4dChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQpKTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCk7
CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KHN0YXRlKCkubV9nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3KGRzdFJl
Y3QpOwogICAgIH0KIH0KQEAgLTE2NTIsMTkgKzE2NTIsMTggQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJ
bnRSZWMKICAgICBjLT5jbGlwT3V0KGJ1ZmZlclJlY3QpOwogICAgIGMtPmNsZWFyUmVjdChjYW52
YXNSZWN0KTsKICAgICBjLT5yZXN0b3JlKCk7Ci0KLSAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCku
bV9nbG9iYWxDb21wb3NpdGUpOworICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlY3QubG9jYXRpb24oKSwgSW1hZ2VQYWludGluZ0NvbnRl
eHQoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpOwogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAog
c3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlKiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywg
b3ApOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
LCBzcmMsIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGNv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBJbWFnZVBhaW50aW5nQ29udGV4dChvcCkpOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxD
YW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAxYjBjNjU3NGFjNjJhZTAzZTgyODBiZjI3ZGMz
MmJiM2I1Y2UwNDZjLi5hOWJjZjU1MjY0ODBlZmQ5MjJjNGZkZGQwMWIxNDA2NThmOTA3MDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKQEAgLTU3MCw4NyArNTcwLDc1IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICNl
bmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdDb250ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0
UmVjdChwLCBpbWFnZS0+c2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNp
emUoKSksIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlc2NyaXB0aW9uKTsKKyAgICBkcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QsIGltYWdlLT5zaXplKCkpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRl
eHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgciwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdCwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQog
ewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3SW1hZ2UoaW1hZ2Us
IHN0eWxlQ29sb3JTcGFjZSwgciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUo
KSksIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OworICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRleHQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBkZXNjcmlwdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2Uq
IGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdl
UGFpbnRpbmdDb250ZXh0KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNl
LCBGbG9hdFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBkZXNjcmlwdGlvbik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVh
bGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkpOwotICAgIGltYWdlLT5kcmF3KHRoaXMsIGRlc3QsIHNyYywgc3R5bGVDb2xvclNwYWNlLCBv
cCwgYmxlbmRNb2RlLCBkZXNjcmlwdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50
aW5nQ29udGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBkZXN0LCBz
cmMsIHN0eWxlQ29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ0NvbnRleHQubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ0NvbnRleHQubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdDb250
ZXh0Lm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyYywgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2l6ZSwKKyAgICBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWlu
dGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNjYWxlID8g
SW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1h
Z2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0UmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBzdHlsZUNv
bG9yU3BhY2UsIG9wLCBibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGlu
Z0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3Qs
IHNyYywgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fYmxlbmRNb2RlKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRy
YXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmNSZWN0LCBvcCk7CisgICAg
ICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgZGVzdCwgc3JjLCBpbWFnZVBhaW50aW5n
Q29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIHVz
ZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVjdCwgdGls
ZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZSgqdGhpcywgaW1hZ2VQYWludGluZ0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJ
bnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFn
ZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyYywgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3Ip
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdCwgY29uc3QgSW1hZ2VQYWludGluZ0Nv
bnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxv
YXRSZWN0KHAsIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LCBpbWFnZS0+bG9naWNhbFNpemUo
KSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQ
YWludGluZ0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWlu
dGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UtPmxvZ2ljYWxTaXplKCkpKSwgb3AsIGJsZW5kTW9k
ZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQotewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCwgc3JjUmVjdC5zaXpl
KCkpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IGNvbG9yU3BhY2UsIGRlc3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFn
ZS0+bG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nQ29udGV4dCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRl
eHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkg
fHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNj
YWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwot
ICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgYmxl
bmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgaW1hZ2UtPmRyYXcodGhpcywgY29sb3JT
cGFjZSwgZGVzdCwgc3JjLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2NvbXBvc2l0ZU9wZXJhdG9y
LCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ0NvbnRleHQu
bV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA5OWE2Yjc2YzVhYWFmYjU5NDg2MDMwZjVjNmVk
Yzk3YWJkNjRmMTliLi5hMDIzZDQyMDUwYzc4NzMwY2JlY2IyZjUyNzI1ODIxNTc0NTg3MDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMTkzLDYgKzE5MywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBz
ZXRTdHJva2VBbmRGaWxsQ29sb3IoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqLCBDR0NvbG9yUmVm
KTsKICNlbmRpZgogCisgICAgc3RydWN0IEltYWdlUGFpbnRpbmdDb250ZXh0IHsKKyAgICAgICAg
SW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLAorICAgICAgICAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUgPSBmYWxzZSkKKyAgICAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihj
b21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQor
ICAgICAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlw
dGlvbikKKyAgICAgICAgICAgICwgbV91c2VMb3dRdWFsaXR5U2NhbGUodXNlTG93UXVhbGl0eVNj
YWxlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBt
X2NvbXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CisgICAg
ICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247
CisgICAgICAgIGJvb2wgbV91c2VMb3dRdWFsaXR5U2NhbGU7CisgICAgfTsKKwogICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
Q29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTMwMiwy
MSArMzE4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgICAgICB2b2lkIGRy
YXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBv
aW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAg
ICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCksIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0UG9pbnQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdl
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsCi0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRj
aFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotCi0gICAgICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
LSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdl
KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdCwgY29uc3QgSW1hZ2VQYWludGlu
Z0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQgZHJhd0lt
YWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBhaW50aW5nQ29udGV4dCgpKTsKKyAgICAgICAgdm9p
ZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBh
aW50aW5nQ29udGV4dCgpKTsKKworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmMs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9
IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCisgICAgICAgICAgICBJbWFn
ZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQm
ID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25z
dCBJbWFnZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBhaW50aW5nQ29udGV4dCgpKTsKKyAgICAg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRp
bmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcios
IENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOwog
CiAgICAgICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAKaW5kZXggMmU5MTc4NWE3YjEyMTkxZGNiMDYyMTU0NzlmZjBiZmQ1MDdk
MWQ3Yi4uYWQyOTk0YjY5YWVlMWI2Yjg1MGJmZGUwZDNjYzNkYTZmZTYxMjRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTkxNiw3
ICs5MTYsOCBAQCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZSgqY29u
dGV4dCk7CiAKICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQtPmRyYXdJ
bWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJvdW5kZWRJbnRQ
b2ludChtX2xheWVyT3JpZ2luKSwgSW50UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSksIGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKKyAg
ICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6
ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwKKyAgICAgICAgSW1hZ2VQ
YWludGluZ0NvbnRleHQoY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpKTsKIAogICAgIG1f
bGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3Jh
dGNoQnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggNGYwOTRhNmUyYzhj
ZTgwMjI0NmQ5NDgwYWEzYmVhMzFjODEwZjdmMy4uZWQyZmNkZDU1ZGM4MjI3ODIzMzY2NGRlMjc0
YzRkZDg2NzNkYjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250
ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sbwogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1v
ZGUgPSBkZXN0aW5hdGlvbkNvbnRleHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6
IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1h
Z2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdl
dCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBk
ZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQob3AsIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogfQog
CiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCA0NGVkMGYxZTdlYzA3ZGRkZTRlM2UyYzM4
M2ZkYWZhNzE5ODVhOTYwLi5mZmQ1MGVhNjdlYmFiZDllYTVkNDg1YTNmMjg3MmE5ZjE1OWJhNmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjk3LDIxICsyOTcsMjQgQEAgdm9pZCBGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uUmVjdC55KCkgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS55KCkp
LCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdChJ
bnRQb2ludChkZXN0aW5hdGlvblJlY3QueCgpIC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLngo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3Qu
eSgpIC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLnkoKSksIGRlc3RpbmF0aW9uUmVjdC5zaXpl
KCkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0aW5hdGlvblBvaW50LCBzb3VyY2UyUmVjdCk7Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdGluYXRpb25Qb2ludCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJj
ZTJSZWN0LnNpemUoKSksIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KGRl
c3RpbmF0aW9uUG9pbnQsIHNvdXJjZVJlY3Quc2l6ZSgpKSwgc291cmNlUmVjdCwgSW1hZ2VQYWlu
dGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlSW4pKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgogICAgICAgICBmaWx0ZXJDb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSksIENv
bXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSksCisgICAgICAgICAgICBJbWFnZVBhaW50aW5n
Q29udGV4dChDb21wb3NpdGVEZXN0aW5hdGlvbk91dCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6CiAgICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZp
bHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSks
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3Np
dGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
ci0+bG9naWNhbFNpemUoKSksCisgICAgICAgICAgICBJbWFnZVBhaW50aW5nQ29udGV4dChDb21w
b3NpdGVTb3VyY2VBdG9wKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVf
T1BFUkFUT1JfWE9SOgogICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50
KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksCisgICAg
ICAgICAgICBJbWFnZVBhaW50aW5nQ29udGV4dChDb21wb3NpdGVYT1IpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAzN2FhNTgwZTE5Y2JlMDY3
ZDVkOTVhZmE5MTRlZTYyYjQzYzNlMzFhLi5kZDE0ZTliOTRmMzNiZTYwNjc4OGQyMDg2MThjMzQx
ODlhNTFhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRl
cmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9u
QwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgp
KTsKIAogICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0
cHV0KCksIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCi0g
ICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5y
ZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhkZXN0UmVjdCwgbV9yZW5k
ZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAog
ICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBmYTY5NmJi
NThhZmM3ZGM0ODVjOGRhMjBlYjU3MTg1Y2VlY2U1YjE0Li4zNzE5MWY1ZmIyMGM4NTU1ZjNjYzA5
NGNmZTBhODNiMmRiNGI4NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTg0MSwxMiArODQxLDEzIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21l
dHJ5LnRpbGVTaXplKCkpOwogICAgICAgICAgICAgaWYgKGltYWdlLmdldCgpKQogICAgICAgICAg
ICAgICAgIGltYWdlLT5zZXRTcGFjZVNpemUoZ2VvbWV0cnkuc3BhY2VTaXplKCkpOwotICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCBnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCksIGdl
b21ldHJ5LnRpbGVTaXplKCksIGNvbXBvc2l0ZU9wLCB1c2VMb3dRdWFsaXR5U2NhbGluZywgYmdM
YXllci0+YmxlbmRNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RpbGVkSW1hZ2Uo
aW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCBn
ZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCksIGdlb21ldHJ5LnRpbGVTaXplKCksCisgICAgICAgICAg
ICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9k
ZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZp
bGxCb3gpIHsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4p
OworICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRl
RGVzdGluYXRpb25JbikpOwogICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogICAgIH0KIH0KQEAgLTEzMjgsMTkgKzEzMjksMjAgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBv
YnRhaW5lZCBmcm9tIG91ciBzbGljZSwgYW5kIGlzICgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNl
KQogICAgICAgICBpZiAoZHJhd1RvcCkKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4
LCB5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoLCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSwg
ZGV2aWNlU2NhbGVGYWN0b3IpLCBvcCk7CisgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBJ
bWFnZVBhaW50aW5nQ29udGV4dChvcCkpOwogCiAgICAgICAgIC8vIFRoZSBib3R0b20gbGVmdCBj
b3JuZXIgcmVjdCBpcyAodHgsIHR5ICsgaCAtIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIGJvdHRv
bVdpZHRoKQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdl
IGlzICgwLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdG9tU2xpY2Up
CiAgICAgICAgIGlmIChkcmF3Qm90dG9tKQogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KHgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0
b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90
dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgb3ApOworICAgICAgICAgICAgICAgIHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGlj
ZSwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgSW1hZ2VQYWludGluZ0NvbnRleHQo
b3ApKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgbGVmdCBlZGdlLgogICAgICAgICAvLyBIYXZl
IHRvIHNjYWxlIGFuZCB0aWxlIGludG8gdGhlIGJvcmRlciByZWN0LgogICAgICAgICBpZiAoc291
cmNlSGVpZ2h0ID4gMCkKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1h
Z2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgsIHkg
KyB0b3BXaWR0aCwgbGVmdFdpZHRoLCBkZXN0aW5hdGlvbkhlaWdodCwgZGV2aWNlU2NhbGVGYWN0
b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKDAsIHRvcFNsaWNl
LCBsZWZ0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUo
bGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVTY2FsZSksIEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdl
OjpUaWxlUnVsZSl2UnVsZSwgb3ApOworICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBh
aW50aW5nKDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVG
YWN0b3IpLCBGbG9hdFNpemUobGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVTY2FsZSksCisgICAgICAg
ICAgICAgICAgSW1hZ2U6OlN0cmV0Y2hUaWxlLCAoSW1hZ2U6OlRpbGVSdWxlKXZSdWxlLCBJbWFn
ZVBhaW50aW5nQ29udGV4dChvcCkpOwogICAgIH0KIAogICAgIGlmIChkcmF3UmlnaHQpIHsKQEAg
LTEzNDksMzIgKzEzNTEsMzIgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5l
UGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgLy8g
VGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91
ciBzbGljZSwgYW5kIGlzIChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwg
dG9wU2xpY2UpCiAgICAgICAgIGlmIChkcmF3VG9wKQogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBh
aW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5LCByaWdodFdpZHRo
LCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0
b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcCk7CisgICAgICAgICAgICAgICAgcGl4ZWxT
bmFwcGVkRm9yUGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2Us
IHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wKSk7
CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSByaWdodCBjb3JuZXIgcmVjdCBpcyAodHggKyB3IC0g
cmlnaHRXaWR0aCwgdHkgKyBoIC0gYm90dG9tV2lkdGgsIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRo
KQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIChp
bWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRT
bGljZSwgYm90dG9tU2xpY2UpCiAgICAgICAgIGlmIChkcmF3Qm90dG9tKQogICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBi
b3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsCiAgICAgICAgICAgICAgICAgcmln
aHRXaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xp
Y2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAg
ICAgICAgICAgb3ApOworICAgICAgICAgICAgICAgIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wKSk7
CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIHJpZ2h0IGVkZ2UuCiAgICAgICAgIGlmIChzb3VyY2VI
ZWlnaHQgPiAwKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShp
bWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm9yZGVySW1h
Z2VSZWN0Lm1heFgoKSAtIHJpZ2h0V2lkdGgsIHkgKyB0b3BXaWR0aCwgcmlnaHRXaWR0aCwgZGVz
dGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgdG9wU2xpY2UsIHJp
Z2h0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUocmln
aHRTaWRlU2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKLSAgICAgICAgICAgICAgICBJbWFnZTo6U3Ry
ZXRjaFRpbGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5
ICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VTY2FsZUZh
Y3RvciksIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGltYWdlV2lkdGggLSByaWdodFNsaWNlLCB0
b3BTbGljZSwgcmlnaHRTbGljZSwgc291cmNlSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCisg
ICAgICAgICAgICAgICAgRmxvYXRTaXplKHJpZ2h0U2lkZVNjYWxlLCByaWdodFNpZGVTY2FsZSks
IEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgSW1hZ2VQYWludGlu
Z0NvbnRleHQob3ApKTsKICAgICB9CiAKICAgICAvLyBQYWludCB0aGUgdG9wIGVkZ2UuCiAgICAg
aWYgKGRyYXdUb3AgJiYgc291cmNlV2lkdGggPiAwKQogICAgICAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQ
YWludGluZyh4ICsgbGVmdFdpZHRoLCB5LCBkZXN0aW5hdGlvbldpZHRoLCB0b3BXaWR0aCwgZGV2
aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcobGVm
dFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxv
YXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwgKEltYWdlOjpUaWxlUnVsZSloUnVs
ZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CisgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQ
YWludGluZyhsZWZ0U2xpY2UsIDAsIHNvdXJjZVdpZHRoLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVG
YWN0b3IpLCBGbG9hdFNpemUodG9wU2lkZVNjYWxlLCB0b3BTaWRlU2NhbGUpLAorICAgICAgICAg
ICAgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZVBhaW50
aW5nQ29udGV4dChvcCkpOwogCiAgICAgLy8gUGFpbnQgdGhlIGJvdHRvbSBlZGdlLgogICAgIGlm
IChkcmF3Qm90dG9tICYmIHNvdXJjZVdpZHRoID4gMCkKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoeCArIGxlZnRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdp
ZHRoLCBkZXN0aW5hdGlvbldpZHRoLCBib3R0b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAot
ICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcobGVmdFNsaWNlLCBpbWFnZUhlaWdo
dCAtIGJvdHRvbVNsaWNlLCBzb3VyY2VXaWR0aCwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFj
dG9yKSwgRmxvYXRTaXplKGJvdHRvbVNpZGVTY2FsZSwgYm90dG9tU2lkZVNjYWxlKSwKLSAgICAg
ICAgICAgIChJbWFnZTo6VGlsZVJ1bGUpaFJ1bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgb3ApOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xv
clNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCBib3JkZXJJbWFn
ZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsIGRlc3RpbmF0aW9uV2lkdGgsCisgICAgICAgICAg
ICBib3R0b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHNvdXJjZVdpZHRoLCBib3R0
b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLAorICAgICAgICAgICAgRmxvYXRTaXplKGJvdHRv
bVNpZGVTY2FsZSwgYm90dG9tU2lkZVNjYWxlKSwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1h
Z2U6OlN0cmV0Y2hUaWxlLCBJbWFnZVBhaW50aW5nQ29udGV4dChvcCkpOwogCiAgICAgLy8gUGFp
bnQgdGhlIG1pZGRsZS4KICAgICBpZiAoZHJhd01pZGRsZSkgewpAQCAtMTQwMSw3ICsxNDAzLDcg
QEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwKICAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKHggKyBsZWZ0V2lkdGgsIHkgKyB0b3BXaWR0aCwgZGVzdGluYXRpb25X
aWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGxlZnRTbGljZSwgdG9wU2xpY2UsIHNvdXJjZVdpZHRo
LCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgIG1pZGRsZVNj
YWxlRmFjdG9yLCAoSW1hZ2U6OlRpbGVSdWxlKWhSdWxlLCAoSW1hZ2U6OlRpbGVSdWxlKXZSdWxl
LCBvcCk7CisgICAgICAgICAgICBtaWRkbGVTY2FsZUZhY3RvciwgKEltYWdlOjpUaWxlUnVsZSlo
UnVsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgSW1hZ2VQYWludGluZ0NvbnRleHQob3ApKTsK
ICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDA5MzJhNWFlZDRjNDQwYmQ0MGRmZGM1
MWUxYjViZGIxOTliNzk3NzkuLjY5ZTBhMDdhN2FjZDljODg2ZmU1ZWYxZDUzZGJhYmRmMDQ1NmU0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYg
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNl
bmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IGFsaWduZWRSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgb3JpZW50YXRpb25EZXNjcmlwdGlv
biwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggZTM0ZjJjYzQyYTNkZWNmMzQ5ZjIxM2JhYzFlOWNhNWUzNWRmZTVjYy4uYjZlNmQ1ZTE0Y2Y3
MDQ2ZDMzYWQ0Yzg5NDE1NDhhZmUzNjE0MjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAgICAgIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFn
ZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkRm9yUGFp
bnRpbmcoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBk
ZXZpY2VTY2FsZUZhY3RvciksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3Qo
cGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3Ip
LCBJbWFnZVBhaW50aW5nQ29udGV4dChDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1
cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTU2OCw3ICs1NjgsOCBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAg
ICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgp
LmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZVJlc291cmNlKCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHJlY3QsCisgICAgICAgIEltYWdlUGFpbnRpbmdDb250
ZXh0KGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIGJvb2wgUmVuZGVySW1hZ2U6OmJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgYmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNzI1
OWZjNTg3M2VjNzVhMmIxMDkzMzUxYjFiMmFiNjZjNzRmOTNiMy4uNTQ4N2NmNGNjNTBiZTQxYjYx
NGQyMWIzN2JkNmI3MGMwODBjOTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9p
ZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG8KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQog
ICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGlt
YWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIENvbXBvc2l0ZVNvdXJjZU92
ZXIsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBj
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVj
dCwgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQog
CiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232362</attachid>
            <date>2014-06-01 20:37:48 -0700</date>
            <delta_ts>2014-06-02 08:27:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133434-20140601203723.patch</filename>
            <type>text/plain</type>
            <size>31711</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkZTAyMjNiMDYyNWZj
YTJkZWRiZDc3YjkyODljZTQ1MmMwYmQyZC4uZDc4NGM5NDQ0NGZmMTUwMzY0MTlmNTFmNTNhYmEx
OGNjODQ4YzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA2LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBiZXR0ZXIgZW5j
YXBzdWxhdGlvbiBmb3IgaW1hZ2UgcmVsYXRlZCBwYWludGluZyBwcm9wZXJ0aWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW1hZ2UgcmVsYXRlZCBkcmF3
aW5nIHByb3BlcnR5IGxpc3Qga2VlcHMgZ3Jvd2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBiZWxvdyBh
bmQgcmVzdWx0cyBpbgorICAgICAgICBtdWx0aXBsZSBvdmVybG9hZGluZ3Mgd2l0aCBzZWVtaW5n
bHkgcmFuZG9tIGRlZmF1bHQgcGFyYW1ldGVycy4KKyAgICAgICAgCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJ
bWFnZSgpCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkKKyAgICAg
ICAgCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgZW5jYXBzdWxhdGlvbiBmb3IgdGhlIGlt
YWdlIGRyYXdpbmcgcHJvcGVydGllcy4gRW5jYXBzdWxhdGlvbiBlbnN1cmVzIHRoYXQKKyAgICAg
ICAgaW50cm9kdWNpbmcgYSBuZXcgcHJvcGVydHkgZG9lcyBub3QgcmVzdWx0IGluIHlldCBhbm90
aGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpw
YWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nQ29udGV4dDo6SW1hZ2VQYWludGluZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QpOgorCiAyMDE0LTA1LTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2xlYW51cCB0ZW1wb3Jhcnkgc2V0dGluZyBvZiBpbWFnZSBpbnRlcnBvbGF0aW9u
IHF1YWxpdHkgaW4gR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDY3YjA3N2VmNTU5ZjFiNmQxMjc4YjM4NjZlNTJhOWVmYTU4Mjk1NDAuLmNjOTFkY2Q2
ZTY0ZDhkYTIzMzZkZTUyYTY5ZDNkNGFhOGJiZDI3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC01MjYsNyArNTI2LDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ4ZmlsbFBhdGhF
UktOU180UGF0aEUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNf
OUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNf
OUZsb2F0UmVjdEVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDljbGVhclJlY3RFUktOU185RmxvYXRSZWN0RQotX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHQ5ZHJhd0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNf
MTBGbG9hdFBvaW50RU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFTlNfMjdJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb25FCitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlkcmF3SW1hZ2VFUE5T
XzVJbWFnZUVOU18xMENvbG9yU3BhY2VFUktOU18xMEZsb2F0UG9pbnRFUktOU18yMEltYWdlUGFp
bnRpbmdDb250ZXh0RQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5c2V0U2hhZG93RVJL
TlNfOUZsb2F0U2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQ5dHJhbnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29u
dGV4dEQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXgg
NzUxMjEyMzFlY2ZjMzg1NWVjOGU4MmExY2VhZmQwMTU5NTEwMjQwNy4uZmRkNTMwZmUzN2YyNmY1
NjQ4NmU5M2Y0MTgwYTQ1ZTU3ZTQxMTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKQEAgLTQwMyw5ICs0MDMsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50
OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJv
bwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5z
dHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdDb250ZXh0KG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA1ZGRlNWNiZmZjOWVjYTcyMDEzYjY5
MTk0MjY0MDBjOTI4YWNjNTQ2Li4yNjZlOTBjODc0ZTU0MDk2MjI3ZDJkN2E5NjYxNDc5ZjNiNzE4
ZjJhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEzNzgsMTcgKzEzNzgsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgY29u
c3QgRmxvYXRSZWMKICAgICBjaGVja09yaWdpbihpbWFnZSk7CiAKICAgICBpZiAocmVjdENvbnRh
aW5zQ2FudmFzKG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoY2Fj
aGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wLCBibGVuZE1v
ZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNG
dWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0
ZWREcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVy
KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRl
cmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdD
b250ZXh0KG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6
ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGMt
PmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIo
KSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQob3AsIGJsZW5kTW9kZSkpOwogICAgICAgICBkaWRE
cmF3KG5vcm1hbGl6ZWREc3RSZWN0KTsKICAgICB9CiB9CkBAIC0xNDYxLDE3ICsxNDYxLDE3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1l
bnQqIHNvdXJjZUNhbnZhcywgY29uc3QKICNlbmRpZgogCiAgICAgaWYgKHJlY3RDb250YWluc0Nh
bnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9z
aXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIo
YnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50
aW5nQ29udGV4dChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxl
bmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNG
dWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewogICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xv
YmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2ds
b2JhbEJsZW5kKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQoc3RhdGUo
KS5tX2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2VC
dWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0
ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQpOworICAgICAgICBj
LT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBz
cmNSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBz
dGF0ZSgpLm1fZ2xvYmFsQmxlbmQpKTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9
CiB9CkBAIC0xNjUyLDcgKzE2NTIsNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMt
PmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAgICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAg
IGMtPnJlc3RvcmUoKTsKLQogICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGJ1ZmZlclJlY3QubG9jYXRpb24oKSwgc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSk7CiAgICAgYy0+cmVzdG9yZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWIwYzY1NzRhYzYyYWUw
M2U4MjgwYmYyN2RjMzJiYjNiNWNlMDQ2Yy4uY2RhMmQxNTA5YmUwMDlmYTFmMDAzNjMyY2ZjYzEy
ZGM4YTZhMjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC01NzAsODcgKzU3MCw3NSBAQCBmbG9hdCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRpbmdDb250ZXh0KQogewog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KHAsIGltYWdlLT5zaXplKCkpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgZGVzY3JpcHRp
b24pOworICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVz
dGluYXRpb24sIGltYWdlLT5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+
c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdDb250ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5zaXplKCkpLCBvcCwgQmxlbmRNb2RlTm9ybWFs
LCBkZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2UoaW1hZ2Us
IHN0eWxlQ29sb3JTcGFjZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLT5zaXplKCkpLCBpbWFnZVBhaW50aW5nQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmIGltYWdlUGFpbnRp
bmdDb250ZXh0KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9h
dFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFs
LCBkZXNjcmlwdGlvbik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1h
Z2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
aW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNj
YWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwot
ICAgIGltYWdlLT5kcmF3KHRoaXMsIGRlc3QsIHNyYywgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxl
bmRNb2RlLCBkZXNjcmlwdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nQ29u
dGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBzdHlsZUNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
Q29udGV4dC5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLAorICAgIGNvbnN0IEltYWdlUGFpbnRpbmdDb250
ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCB1c2VMb3dR
dWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3RSZWN0LCBzcmNQb2ludCwgdGls
ZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSk7CisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRp
b25Mb3cgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGltYWdlLT5kcmF3VGls
ZWQodGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdl
UGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdDb250ZXh0
Lm1fYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCisgICAgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRp
bmdDb250ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhSdWxlID09IElt
YWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAg
ICAgLy8gSnVzdCBkbyBhIHNjYWxlLgotICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29s
b3JTcGFjZSwgZGVzdCwgc3JjUmVjdCwgb3ApOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNv
bG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNj
YWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0g
ICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBp
bWFnZVBhaW50aW5nQ29udGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25M
b3cgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGltYWdlLT5kcmF3VGlsZWQo
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUs
IGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3IpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdDb250ZXh0JiBpbWFnZVBhaW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IEZsb2F0UmVjdChwLCBpbWFnZS0+bG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgb3AsIGJsZW5kTW9kZSk7CisgICAgZHJhd0ltYWdl
QnVmZmVyKGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5s
b2dpY2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXpl
KCkpLCBpbWFnZVBhaW50aW5nQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
Q29udGV4dCYgaW1hZ2VQYWludGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UtPmxvZ2ljYWxTaXpl
KCkpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQot
ewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3Qo
ZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UtPmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGlu
Z0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWludGluZ0NvbnRl
eHQpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93
Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5
Rm9yVGhpc1Njb3BlKCp0aGlzLCB1c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9u
ZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywg
c3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlT
Y2FsZSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX3VzZUxvd1F1
YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50
aW5nQ29udGV4dC5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ0NvbnRleHQubV91c2VMb3dRdWFs
aXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0
JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCA5OWE2Yjc2YzVhYWFmYjU5NDg2MDMwZjVjNmVkYzk3YWJkNjRmMTli
Li44YjNjNjE1ODM5ZmVkNDU2YjA4NTBiODdiOGFlODhkYTAxNzllYjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTkz
LDYgKzE5MywzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBzZXRTdHJva2VBbmRG
aWxsQ29sb3IoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqLCBDR0NvbG9yUmVmKTsKICNlbmRpZgog
CisgICAgc3RydWN0IEltYWdlUGFpbnRpbmdDb250ZXh0IHsKKyAgICAgICAgSW1hZ2VQYWludGlu
Z0NvbnRleHQoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKQorICAg
ICAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICAg
ICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCisgICAgICAgICAgICAsIG1fb3JpZW50YXRp
b25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAgICAgLCBtX3Vz
ZUxvd1F1YWxpdHlTY2FsZSh1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIEltYWdlUGFpbnRpbmdDb250ZXh0KEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgICAg
ICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAs
IG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKKyAgICAgICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgICAgICAgICAsIG1fdXNlTG93UXVh
bGl0eVNjYWxlKHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCkKKyAgICAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRv
cikKKyAgICAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICAgICAgICAgLCBt
X29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAg
ICAgICwgbV91c2VMb3dRdWFsaXR5U2NhbGUodXNlTG93UXVhbGl0eVNjYWxlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJh
dG9yOworICAgICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CisgICAgICAgIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247CisgICAgICAgIGJvb2wg
bV91c2VMb3dRdWFsaXR5U2NhbGU7CisgICAgfTsKKwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4
dCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTMwMiwyMSArMzMzLDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSos
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIHZvaWQgZHJhd0lt
YWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0UG9pbnQsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsCi0gICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAg
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFj
dG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotCi0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9p
bnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
Tm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0
JiA9IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFn
ZSosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOworICAgICAgICB2b2lk
IGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYg
PSBJbWFnZVBhaW50aW5nQ29udGV4dCgpKTsKKworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdl
KEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLAorICAgICAgICAg
ICAgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7
CisgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCisgICAgICAgICAgICBJbWFnZTo6VGlsZVJ1bGUsIElt
YWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGlu
Z0NvbnRleHQoKSk7CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGlu
Z0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdDb250
ZXh0KCkpOwogCiAgICAgICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggMmU5MTc4NWE3YjEyMTkxZGNiMDYyMTU0Nzlm
ZjBiZmQ1MDdkMWQ3Yi4uOTE3Y2UwOTM4NzM1OWRkNjg5M2FiMzhkMDE5OTUwNjI3N2M1MDJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
QEAgLTkxNiw3ICs5MTYsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZSgqY29udGV4dCk7CiAKICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJv
dW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgSW50UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53
aWR0aCgpLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSksIGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlv
bigpKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBt
X2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4
dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOwogCiAgICAgbV9sYXllckltYWdlID0gMDsKICAgICBT
Y3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA0ZjA5NGE2ZTJjOGNlODAyMjQ2ZDk0ODBhYTNiZWEzMWM4
MTBmN2YzLi5lZDJmY2RkNTVkYzgyMjc4MjMzNjY0ZGUyNzRjNGRkODY3M2RiNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4
dCA9PSBjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVz
dGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJ
bWFnZVBhaW50aW5nQ29udGV4dChvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCmluZGV4IDQ0ZWQwZjFlN2VjMDdkZGRlNGUzZTJjMzgzZmRhZmE3MTk4NWE5NjAuLmY1NmNh
NDZiMjFlMjBhOTUyOGI1MmNkM2Q5YzRmMThmNDk4NTM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBA
IC0yOTcsOCArMjk3LDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uUmVjdC55
KCkgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS55KCkpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgp
KTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdChJbnRQb2ludChkZXN0aW5hdGlvblJlY3Qu
eCgpIC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLngoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QueSgpIC0gaW4yLT5hYnNvbHV0ZVBhaW50
UmVjdCgpLnkoKSksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwotICAgICAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0aW5hdGlvblBvaW50LCBzb3VyY2UyUmVjdCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdGluYXRp
b25Qb2ludCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJD
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRSZWN0KGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJjZTJSZWN0LnNpemUoKSksIHNvdXJjZTJS
ZWN0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJjZVJl
Y3Quc2l6ZSgpKSwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAzN2Fh
NTgwZTE5Y2JlMDY3ZDVkOTVhZmE5MTRlZTYyYjQzYzNlMzFhLi5kZDE0ZTliOTRmMzNiZTYwNjc4
OGQyMDg2MThjMzQxODlhNTFhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEZpbHRl
ckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQq
IGRlc3RpbmF0aW9uQwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFp
bnRPZmZzZXQueSgpKTsKIAogICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVy
KGZpbHRlci0+b3V0cHV0KCksIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCksCi0gICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGRlc3RSZWN0LCBtX3Jl
bmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENv
bXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhkZXN0
UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCBmYTY5NmJiNThhZmM3ZGM0ODVjOGRhMjBlYjU3MTg1Y2VlY2U1YjE0Li43N2M2MjdhMDM5
NDQ3MTQ1MTQ1ZjRiYzAxOTM3NDc1NWU3NzdiZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTg0MSw3ICs4NDEsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xh
eWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkK
ICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3BhY2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQ
aGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNj
YWxpbmcsIGJnTGF5ZXItPmJsZW5kTW9kZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBJ
bWFnZVBhaW50aW5nQ29udGV4dChjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcAppbmRleCAwOTMyYTVhZWQ0YzQ0MGJkNDBkZmRjNTFlMWI1YmRiMTk5
Yjc5Nzc5Li4yZDc0ZDBmZGY2MGNlNDU0NzEwZjhiZjJkYTMzMjU2NTQ3MWE4Y2IwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAg
LTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90
SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9y
aWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBj
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVj
dCwgQ29tcG9zaXRlU291cmNlT3Zlciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVh
bGl0eVNjYWxpbmcpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xv
clNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAppbmRleCBlMzRmMmNjNDJhM2RlY2YzNDlmMjEzYmFjMWU5Y2E1ZTM1ZGZlNWNjLi5lNGNh
OWRkMTBhNDI4NTc5ZGQxODFjYmRlZDI2YTZiMTEzNWUzZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAg
ICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHls
ZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdl
U2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgb3JpZW50YXRp
b25EZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5
b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2Fs
ZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIGVycm9y
UGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTY4LDcgKzU2OCw4IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZVJlc291cmNlKCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlUmVzb3VyY2UoKS5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
LmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcmVjdCwKKyAgICAgICAgSW1hZ2VQYWludGlu
Z0NvbnRleHQoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFn
ZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRl
eCA3MjU5ZmM1ODczZWM3NWEyYjEwOTMzNTFiMWIyYWI2NmM3NGY5M2IzLi5jMDkxNDczNTA2ZDM2
YmQ5M2U0NDc2MDI0N2QyM2UyY2NlYThmYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJ
T04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShz
dHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1h
Z2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291
cmNlT3Zlciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwor
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3Zl
cnJpZGVDdXJzb3IpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232380</attachid>
            <date>2014-06-02 08:27:23 -0700</date>
            <delta_ts>2014-06-02 09:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133434-20140602082659.patch</filename>
            <type>text/plain</type>
            <size>31636</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGM2NDhkNGRhODM3
ODc0YjAzMWVlNTY1MDQzMDkxMjQ2OGU5MC4uNWZiMDIzYWU1ZTRlZjk3ZWJkYWY0ZDVlN2VhODhj
YTdjZWU1ZDgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA2LTAyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBiZXR0ZXIgZW5j
YXBzdWxhdGlvbiBmb3IgaW1hZ2UgcmVsYXRlZCBwYWludGluZyBwcm9wZXJ0aWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW1hZ2UgcmVsYXRlZCBkcmF3
aW5nIHByb3BlcnR5IGxpc3Qga2VlcHMgZ3Jvd2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBiZWxvdyBh
bmQgcmVzdWx0cyBpbgorICAgICAgICBtdWx0aXBsZSBvdmVybG9hZGluZ3Mgd2l0aCBzZWVtaW5n
bHkgcmFuZG9tIGRlZmF1bHQgcGFyYW1ldGVycy4KKyAgICAgICAgCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJ
bWFnZSgpCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkKKyAgICAg
ICAgCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgZW5jYXBzdWxhdGlvbiBmb3IgdGhlIGlt
YWdlIGRyYXdpbmcgcHJvcGVydGllcy4gRW5jYXBzdWxhdGlvbiBlbnN1cmVzIHRoYXQKKyAgICAg
ICAgaW50cm9kdWNpbmcgYSBuZXcgcHJvcGVydHkgZG9lcyBub3QgcmVzdWx0IGluIHlldCBhbm90
aGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpw
YWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nQ29udGV4dDo6SW1hZ2VQYWludGluZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QpOgorCiAyMDE0LTA2LTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY5NTI5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBjNzIyMGM1N2YzMjcyOTc3Yzk4OTUzNmE2YTBiNTY1YmY5MDlkYTYy
Li45NzkyZjc5MTFmODgwNTY3MTQ4NGE0MmE4NjA1NTFiNWMwYjk4MjdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtNTI2LDcgKzUyNiw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
OGZpbGxQYXRoRVJLTlNfNFBhdGhFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhmaWxs
UmVjdEVSS05TXzlGbG9hdFJlY3RFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5Y2xlYXJSZWN0RVJLTlNfOUZsb2F0UmVjdEUKLV9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OWRyYXdJbWFnZUVQTlNfNUltYWdlRU5TXzEwQ29sb3JT
cGFjZUVSS05TXzEwRmxvYXRQb2ludEVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRU5TXzI3SW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5ZHJh
d0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJLTlNf
MjBJbWFnZVBhaW50aW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXNl
dFNoYWRvd0VSS05TXzlGbG9hdFNpemVFZlJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUVmZgogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHREMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDc1MTIxMjMxZWNmYzM4NTVlYzhlODJhMWNlYWZkMDE1OTUxMDI0MDcuLmZkZDUz
MGZlMzdmMjZmNTY0ODZlOTNmNDE4MGE0NWU1N2U0MTE1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MDMsOSArNDAzLDkgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRS
ZWN0JiByLCBib28KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAg
ICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVu
ZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmIAotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nQ29udGV4
dChvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNWRkZTVjYmZmYzll
Y2E3MjAxM2I2OTE5NDI2NDAwYzkyOGFjYzU0Ni4uMjY2ZTkwYzg3NGU1NDA5NjIyN2QyZDdhOTY2
MTQ3OWYzYjcxOGYyYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMzc4LDE3ICsxMzc4LDE3IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCog
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjCiAgICAgY2hlY2tPcmlnaW4oaW1hZ2UpOwogCiAgICAgaWYg
KHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJh
d0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0
LCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9y
bWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChv
cCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKSB7CiAgICAgICAgIGZ1bGxDYW52
YXNDb21wb3NpdGVkRHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
LT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBvcCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMo
KTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGlt
YWdlLT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdl
KGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFn
ZVBhaW50aW5nQ29udGV4dChvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVD
YW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2Ut
PnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9y
bWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdDb250ZXh0KG9wLCBibGVuZE1vZGUpKTsKICAg
ICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQogfQpAQCAtMTQ2MSwxNyAr
MTQ2MSwxNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxD
YW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMsIGNvbnN0CiAjZW5kaWYKIAogICAgIGlmIChyZWN0
Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5tX2ds
b2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKTsKKyAgICAgICAgYy0+ZHJhd0lt
YWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ0NvbnRleHQoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5t
X2dsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0
ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoYnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9z
aXRlKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3Rh
dGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFy
Q2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0
YXRlKCkubV9nbG9iYWxCbGVuZCk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdDb250
ZXh0KHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkubV9nbG9iYWxCbGVuZCkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ0NvbnRleHQoc3RhdGUoKS5tX2dsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVj
dCk7CiAgICAgfQogfQpAQCAtMTY1Miw3ICsxNjUyLDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRS
ZWMKICAgICBjLT5jbGlwT3V0KGJ1ZmZlclJlY3QpOwogICAgIGMtPmNsZWFyUmVjdChjYW52YXNS
ZWN0KTsKICAgICBjLT5yZXN0b3JlKCk7Ci0KICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkubV9n
bG9iYWxDb21wb3NpdGUpOwogICAgIGMtPnJlc3RvcmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDFiMGM2
NTc0YWM2MmFlMDNlODI4MGJmMjdkYzMyYmIzYjVjZTA0NmMuLmFjZWRmNzJjZjYyMzk0NTg5YmUx
OGIyM2E0Yzk4OTU2N2ZhYzg4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTcwLDg3ICs1NzAsNzggQEAgZmxv
YXQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1h
Z2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWludGluZ0NvbnRleHQp
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZShpbWFn
ZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QocCwgaW1hZ2UtPnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLT5zaXplKCkpLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBkZXNj
cmlwdGlvbik7CisgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVz
dGluYXRpb24sIGltYWdlLT5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+
c2l6ZSgpKSwgaW1hZ2VQYWludGluZ0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nQ29u
dGV4dCYgaW1hZ2VQYWludGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCByLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgZGVz
Y3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xv
clNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUo
KSksIGltYWdlUGFpbnRpbmdDb250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFBvaW50JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCi17Ci0gICAg
ZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LCBzcmNSZWN0
LnNpemUoKSksIHNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlc2NyaXB0aW9uKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWludGluZ0Nv
bnRleHQpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICAKKwogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCB1c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRy
YXcodGhpcywgZGVzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2Ny
aXB0aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOworICAgIGltYWdlLT5kcmF3KHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdDb250ZXh0Lm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLAorICAgIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiBpbWFnZVBhaW50aW5n
Q29udGV4dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCB1c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RSZWN0LCBzcmNQb2ludCwgdGlsZVNpemUsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nQ29u
dGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KCkpOworICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdDb250ZXh0Lm1fYmxlbmRNb2RlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJ
bWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCisgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiBpbWFnZVBh
aW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAm
JiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNj
YWxlLgotICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3Jj
UmVjdCwgb3ApOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdDb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlv
bkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdUaWxl
ZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgc3R5
bGVDb2xvclNwYWNlLCBvcCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nQ29udGV4
dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCkpOworICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNvbG9yU3BhY2UsIGltYWdl
UGFpbnRpbmdDb250ZXh0Lm1fY29tcG9zaXRlT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiBpbWFnZVBh
aW50aW5nQ29udGV4dCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAg
ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChwLCBpbWFn
ZS0+bG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5sb2dpY2Fs
U2l6ZSgpKSwgb3AsIGJsZW5kTW9kZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xv
clNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5n
Q29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWlu
dGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UtPmxvZ2ljYWxTaXplKCkpKSwgb3AsIGJsZW5kTW9k
ZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQotewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCwgc3JjUmVjdC5zaXpl
KCkpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNp
emUoaW1hZ2UtPmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ0NvbnRleHQpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nQ29udGV4dCYgaW1hZ2VQYWludGluZ0NvbnRleHQpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJ
WE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93Ci0gICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCB1c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS0+
ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
Q29udGV4dC5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nQ29udGV4dC5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ0NvbnRleHQubV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA5
OWE2Yjc2YzVhYWFmYjU5NDg2MDMwZjVjNmVkYzk3YWJkNjRmMTliLi44YjNjNjE1ODM5ZmVkNDU2
YjA4NTBiODdiOGFlODhkYTAxNzllYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTkzLDYgKzE5MywzNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBzZXRTdHJva2VBbmRGaWxsQ29sb3IoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqLCBDR0NvbG9yUmVmKTsKICNlbmRpZgogCisgICAgc3RydWN0IEltYWdl
UGFpbnRpbmdDb250ZXh0IHsKKyAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKQorICAgICAgICAgICAgOiBtX2NvbXBv
c2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICAgICAgICAgLCBtX2JsZW5kTW9k
ZShibGVuZE1vZGUpCisgICAgICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAgICAgLCBtX3VzZUxvd1F1YWxpdHlTY2FsZSh1
c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEltYWdl
UGFpbnRpbmdDb250ZXh0KEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgICAgICA6IG1fY29tcG9zaXRlT3Bl
cmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5k
TW9kZSkKKyAgICAgICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCisgICAgICAgICAgICAsIG1fdXNlTG93UXVhbGl0eVNjYWxlKHVzZUxvd1F1
YWxpdHlTY2FsZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgSW1hZ2VQYWludGlu
Z0NvbnRleHQoYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCksIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgICAg
IDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgICAgICwgbV91c2VMb3dRdWFs
aXR5U2NhbGUodXNlTG93UXVhbGl0eVNjYWxlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBCbGVu
ZE1vZGUgbV9ibGVuZE1vZGU7CisgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBt
X29yaWVudGF0aW9uRGVzY3JpcHRpb247CisgICAgICAgIGJvb2wgbV91c2VMb3dRdWFsaXR5U2Nh
bGU7CisgICAgfTsKKwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKQEAgLTMwMiwyMSArMzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdp
ZHRoKTsKIAotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFs
c2UpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAg
ICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsCi0gICAgICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFs
c2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IElt
YWdlOjpTdHJldGNoVGlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0g
ZmFsc2UpOwotCi0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7
Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdFBvaW50LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAg
ICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdD
b250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdDb250ZXh0JiA9
IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSos
IENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nQ29udGV4dCYgPSBJbWFnZVBhaW50aW5nQ29u
dGV4dCgpKTsKKworICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLAorICAgICAgICAgICAgY29uc3QgSW1hZ2VQYWlu
dGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVG
YWN0b3IsCisgICAgICAgICAgICBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisKKyAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0g
SW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ0NvbnRleHQmID0gSW1hZ2VQYWludGluZ0NvbnRleHQoKSk7CisgICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdDb250ZXh0JiA9IEltYWdlUGFpbnRpbmdDb250ZXh0KCkpOwogCiAgICAgICAg
IHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7
CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKaW5kZXggMmU5MTc4NWE3YjEyMTkxZGNiMDYyMTU0NzlmZjBiZmQ1MDdkMWQ3Yi4uOTE3
Y2UwOTM4NzM1OWRkNjg5M2FiMzhkMDE5OTUwNjI3N2M1MDJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTkxNiw3ICs5MTYsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZSgqY29udGV4dCk7CiAK
ICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJvdW5kZWRJbnRQb2ludChtX2xh
eWVyT3JpZ2luKSwgSW50UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSksIGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKKyAgICBjb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9h
dFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0
aW9uKCkpOwogCiAgICAgbV9sYXllckltYWdlID0gMDsKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApp
bmRleCA0ZjA5NGE2ZTJjOGNlODAyMjQ2ZDk0ODBhYTNiZWEzMWM4MTBmN2YzLi5lZDJmY2RkNTVk
YzgyMjc4MjMzNjY0ZGUyNzRjNGRkODY3M2RiNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApA
QCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvCiB7CiAgICAgQmFja2lu
Z1N0b3JlQ29weSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4dCA9PSBjb250ZXh0KCkgPyBD
b3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4
dChvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVh
bGl0eVNjYWxlKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDQ0ZWQwZjFl
N2VjMDdkZGRlNGUzZTJjMzgzZmRhZmE3MTk4NWE5NjAuLmY1NmNhNDZiMjFlMjBhOTUyOGI1MmNk
M2Q5YzRmMThmNDk4NTM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0yOTcsOCArMjk3LDggQEAg
dm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uUmVjdC55KCkgLSBpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKS55KCkpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKICAgICAgICAgSW50UmVj
dCBzb3VyY2UyUmVjdChJbnRQb2ludChkZXN0aW5hdGlvblJlY3QueCgpIC0gaW4yLT5hYnNvbHV0
ZVBhaW50UmVjdCgpLngoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0aW5hdGlvblJlY3QueSgpIC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLnkoKSksIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0aW5hdGlvblBvaW50LCBz
b3VyY2UyUmVjdCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdGluYXRpb25Qb2ludCwgc291cmNlUmVj
dCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KGRlc3RpbmF0
aW9uUG9pbnQsIHNvdXJjZTJSZWN0LnNpemUoKSksIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmls
dGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRSZWN0KGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJjZVJlY3Quc2l6ZSgpKSwgc291cmNl
UmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAzN2FhNTgwZTE5Y2JlMDY3ZDVkOTVh
ZmE5MTRlZTYyYjQzYzNlMzFhLi5kZDE0ZTliOTRmMzNiZTYwNjc4OGQyMDg2MThjMzQxODlhNTFh
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVs
cGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAg
IGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAog
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCks
IG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCi0gICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhkZXN0UmVjdCwgbV9yZW5kZXJMYXll
ci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIGZp
bHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBmYTY5NmJiNThhZmM3
ZGM0ODVjOGRhMjBlYjU3MTg1Y2VlY2U1YjE0Li43N2M2MjdhMDM5NDQ3MTQ1MTQ1ZjRiYzAxOTM3
NDc1NWU3NzdiZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKQEAgLTg0MSw3ICs4NDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxl
U2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAgICAgICAgICBp
bWFnZS0+c2V0U3BhY2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwg
Z2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpLCBnZW9tZXRyeS50
aWxlU2l6ZSgpLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcsIGJnTGF5ZXItPmJs
ZW5kTW9kZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdl
dCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnku
cmVsYXRpdmVQaGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nQ29udGV4
dChjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApp
bmRleCAwOTMyYTVhZWQ0YzQ0MGJkNDBkZmRjNTFlMWI1YmRiMTk5Yjc5Nzc5Li4yZDc0ZDBmZGY2
MGNlNDU0NzEwZjhiZjJkYTMzMjU2NTQ3MWE4Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04p
CiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHls
ZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNl
T3Zlciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAg
IGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nQ29udGV4dChvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGluZykpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENv
bnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBlMzRmMmNj
NDJhM2RlY2YzNDlmMjEzYmFjMWU5Y2E1ZTM1ZGZlNWNjLi5lNGNhOWRkMTBhNDI4NTc5ZGQxODFj
YmRlZDI2YTZiMTEzNWUzZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2Vk
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRp
b24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2Uu
Z2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlv
dXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxl
RmFjdG9yKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdChwYWludE9mZnNl
dCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTY4LDcgKzU2OCw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRh
dGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCku
aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1
c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlUmVzb3Vy
Y2UoKS5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSwgcmVjdCwKKyAgICAgICAgSW1hZ2VQYWludGluZ0NvbnRleHQoY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxk
QmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA3MjU5ZmM1ODczZWM3NWEy
YjEwOTMzNTFiMWIyYWI2NmM3NGY5M2IzLi5jMDkxNDczNTA2ZDM2YmQ5M2U0NDc2MDI0N2QyM2Uy
Y2NlYThmYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCku
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlciwgb3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGNvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50
aW5nQ29udGV4dChvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykp
OwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNv
cihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>