<?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>227748</bug_id>
          
          <creation_ts>2021-07-07 09:57:05 -0700</creation_ts>
          <short_desc>[GPU Process] Enable drawing the SVGImage in the GPU Process</short_desc>
          <delta_ts>2022-04-18 15:45:31 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227519</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230886</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231062</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231001</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238893</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235758</dependson>
          <blocked>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775302</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-07 09:57:05 -0700</bug_when>
    <thetext>Reverts https://bugs.webkit.org/show_bug.cgi?id=227519</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776953</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-14 09:58:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/80582699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838401</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 15:30:16 -0800</bug_when>
    <thetext>We need to revert all these changes:

r279722
r284740
r283531</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838403</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 15:32:10 -0800</bug_when>
    <thetext>The intermediate ImageBuffers of the SVGImage need to be &quot;really&quot; compatible with the underlying ImageBuffer of the GraphicsContext. This is tracked by bug 235758.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838449</commentid>
    <comment_count>4</comment_count>
      <attachid>451181</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 17:19:40 -0800</bug_when>
    <thetext>Created attachment 451181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839548</commentid>
    <comment_count>5</comment_count>
      <attachid>451502</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-10 00:12:48 -0800</bug_when>
    <thetext>Created attachment 451502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841156</commentid>
    <comment_count>6</comment_count>
      <attachid>451869</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-14 00:22:53 -0800</bug_when>
    <thetext>Created attachment 451869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841370</commentid>
    <comment_count>7</comment_count>
      <attachid>451869</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-02-14 13:03:06 -0800</bug_when>
    <thetext>Comment on attachment 451869
Patch

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

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:206
&gt; +    auto imageBuffer = ImageBuffer::create(size(), RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);

Why is this being hard coded to SRGB?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842422</commentid>
    <comment_count>8</comment_count>
      <attachid>452221</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-16 11:45:09 -0800</bug_when>
    <thetext>Created attachment 452221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842485</commentid>
    <comment_count>9</comment_count>
      <attachid>452221</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 13:19:04 -0800</bug_when>
    <thetext>Comment on attachment 452221
Patch

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

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:213
&gt; +    auto imageBuffer = ImageBuffer::create(size(), renderingMode, ShouldUseDisplayList::No, RenderingPurpose::DOM, 1, colorSpace, PixelFormat::BGRA8, hostWindow);

Why isn&apos;t this createCompatibleBuffer()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842493</commentid>
    <comment_count>10</comment_count>
      <attachid>452221</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-16 13:28:17 -0800</bug_when>
    <thetext>Comment on attachment 452221
Patch

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

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:213
&gt;&gt; +    auto imageBuffer = ImageBuffer::create(size(), renderingMode, ShouldUseDisplayList::No, RenderingPurpose::DOM, 1, colorSpace, PixelFormat::BGRA8, hostWindow);
&gt; 
&gt; Why isn&apos;t this createCompatibleBuffer()?

Because it is hard to a GraphicsContext for all the callers. Here are a few examples:

- (void)getPreviewSnapshotImage:(CGImageRef*)cgImage andRects:(NSArray **)rects
+ (CGImageRef)imageForURL:(NSURL *)url
- (WebUITextIndicatorData *)initWithImage:(CGImageRef)image textIndicatorData:(const WebCore::TextIndicatorData&amp;)indicatorData scale:(CGFloat)scale
static RetainPtr&lt;UIImage&gt; uiImageForImage(Image* image)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842497</commentid>
    <comment_count>11</comment_count>
      <attachid>452221</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-16 13:29:44 -0800</bug_when>
    <thetext>Comment on attachment 452221
Patch

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

&gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:213
&gt;&gt;&gt; +    auto imageBuffer = ImageBuffer::create(size(), renderingMode, ShouldUseDisplayList::No, RenderingPurpose::DOM, 1, colorSpace, PixelFormat::BGRA8, hostWindow);
&gt;&gt; 
&gt;&gt; Why isn&apos;t this createCompatibleBuffer()?
&gt; 
&gt; Because it is hard to a GraphicsContext for all the callers. Here are a few examples:
&gt; 
&gt; - (void)getPreviewSnapshotImage:(CGImageRef*)cgImage andRects:(NSArray **)rects
&gt; + (CGImageRef)imageForURL:(NSURL *)url
&gt; - (WebUITextIndicatorData *)initWithImage:(CGImageRef)image textIndicatorData:(const WebCore::TextIndicatorData&amp;)indicatorData scale:(CGFloat)scale
&gt; static RetainPtr&lt;UIImage&gt; uiImageForImage(Image* image)

Because it is hard to *get* a GraphicsContext ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842518</commentid>
    <comment_count>12</comment_count>
      <attachid>452221</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 14:07:59 -0800</bug_when>
    <thetext>Comment on attachment 452221
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:213
&gt;&gt;&gt;&gt; +    auto imageBuffer = ImageBuffer::create(size(), renderingMode, ShouldUseDisplayList::No, RenderingPurpose::DOM, 1, colorSpace, PixelFormat::BGRA8, hostWindow);
&gt;&gt;&gt; 
&gt;&gt;&gt; Why isn&apos;t this createCompatibleBuffer()?
&gt;&gt; 
&gt;&gt; Because it is hard to a GraphicsContext for all the callers. Here are a few examples:
&gt;&gt; 
&gt;&gt; - (void)getPreviewSnapshotImage:(CGImageRef*)cgImage andRects:(NSArray **)rects
&gt;&gt; + (CGImageRef)imageForURL:(NSURL *)url
&gt;&gt; - (WebUITextIndicatorData *)initWithImage:(CGImageRef)image textIndicatorData:(const WebCore::TextIndicatorData&amp;)indicatorData scale:(CGFloat)scale
&gt;&gt; static RetainPtr&lt;UIImage&gt; uiImageForImage(Image* image)
&gt; 
&gt; Because it is hard to *get* a GraphicsContext ...

I see. This is just getting a NativeImage from an SVGImage without any notion of what the caller will do with it. In that case it might be risky to sometimes return an Accelerated image.

For the code paths involving the GPUP, it might make more sense to create a version of this that takes the destination context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842541</commentid>
    <comment_count>13</comment_count>
      <attachid>452221</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-16 14:56:00 -0800</bug_when>
    <thetext>Comment on attachment 452221
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:213
&gt;&gt;&gt;&gt;&gt; +    auto imageBuffer = ImageBuffer::create(size(), renderingMode, ShouldUseDisplayList::No, RenderingPurpose::DOM, 1, colorSpace, PixelFormat::BGRA8, hostWindow);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why isn&apos;t this createCompatibleBuffer()?
&gt;&gt;&gt; 
&gt;&gt;&gt; Because it is hard to a GraphicsContext for all the callers. Here are a few examples:
&gt;&gt;&gt; 
&gt;&gt;&gt; - (void)getPreviewSnapshotImage:(CGImageRef*)cgImage andRects:(NSArray **)rects
&gt;&gt;&gt; + (CGImageRef)imageForURL:(NSURL *)url
&gt;&gt;&gt; - (WebUITextIndicatorData *)initWithImage:(CGImageRef)image textIndicatorData:(const WebCore::TextIndicatorData&amp;)indicatorData scale:(CGFloat)scale
&gt;&gt;&gt; static RetainPtr&lt;UIImage&gt; uiImageForImage(Image* image)
&gt;&gt; 
&gt;&gt; Because it is hard to *get* a GraphicsContext ...
&gt; 
&gt; I see. This is just getting a NativeImage from an SVGImage without any notion of what the caller will do with it. In that case it might be risky to sometimes return an Accelerated image.
&gt; 
&gt; For the code paths involving the GPUP, it might make more sense to create a version of this that takes the destination context.

I can add the new version for nativeImage in a separate patch. Or maybe I can pass an optional pointer to GraphicsContext to the existing one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842588</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 16:12:51 -0800</bug_when>
    <thetext>Committed r289981 (247367@main): &lt;https://commits.webkit.org/247367@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452221.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451181</attachid>
            <date>2022-02-07 17:19:40 -0800</date>
            <delta_ts>2022-02-10 00:12:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227748-20220207171939.patch</filename>
            <type>text/plain</type>
            <size>109583</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uNzlhZDFjNjdkNmFlNzEyMGQ5NTZlMDRhNzZhNmUx
YTk3MjczNDc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NSBAQAorMjAyMi0wMi0wNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IEVuYWJsZSBkcmF3aW5nIHRoZSBTVkdJbWFnZSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzc0OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0
cyB0aGUgcmV2aXNpb25zIHIyNzk3MjIsIHIyODQ3NDAgYW5kIHIyODM1MzEuIEl0IHdpbGwKKyAg
ICAgICAgZW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdlIGluIEdQVSBQcm9jZXNzIGFsd2F5cy4K
KworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmdWxsQ2FudmFzQ29tcG9zaXRl
ZERyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3Rm9yQ2FudmFzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ2FudmFzRm9y
Q29udGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9y
Q29udGFpbmVySW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
OmRyYXdGb3JDYW52YXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRy
YXdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0Fz
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd0ZvckNhbnZhcyk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKKzIw
MjItMDItMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgdG8gR3JhcGhp
Y3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU3NTgKKyAgICAgICAgcmRhcjovLzg4NDc4NDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBy
ZWNvcmQgdGhlIGRyYXdpbmcgaWYgdGhlIGNvbmNyZXRlIHR5cGUgb2YgCisgICAgICAgIHRoZSBH
cmFwaGljc0NvbnRleHQgaXMgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LiBDdXJyZW50
bHkgYWxsIHRoZQorICAgICAgICBpbnRlcm1lZGlhdGUgY29tcGF0aWJsZSBJbWFnZUJ1ZmZlcnMg
YXJlIG9mIHR5cGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4KKyAgICAgICAgVGhlIGRyYXdpbmcgdG8g
dGhlc2UgSW1hZ2VCdWZmZXJzIHN0aWxsIGhhcHBlbnMgaW4gdGhlIFdlYlByb2Nlc3MuIE1vcmVv
dmVyCisgICAgICAgIHdoZW4gd2UgY2FsbCBkcmF3SW1hZ2VCdWZmZXIoKSBvciBjbGlwVG9JbWFn
ZUJ1ZmZlcigpIGZvciBvbmUgb2YgdGhlc2UKKyAgICAgICAgaW50ZXJtZWRpYXRlIEltYWdlQnVm
ZmVycyB0byBhIHJlbW90ZSBJbWFnZUJ1ZmZlciwgd2UgaGF2ZSB0byBzaW5rIHRoZQorICAgICAg
ICBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXIgdG8gYSBOYXRpdmVJbWFnZSBhbmQgc2VuZCBpdCB0
byBHUFVQcm9jZXNzLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2ls
bCBwcm92aWRlIHRoZXNlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdl
QnVmZmVyOgorCisgICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSAodmlydHVhbCk6IENyZWF0ZXMgYW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgc2ltaWxhciB0
byB0aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBCZWNh
dXNlCisgICAgICAgICAgIFJlY29yZGVySW1wbCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5IGFyZSBzdXBlciBjbGFzc2VzIG9mCisgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCwg
dGhleSB3aWxsIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAg
ICAgICAgICAgdHlwZSBvZiBJbWFnZUJ1ZmZlci4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5IGhhcyBhY2Nlc3MgdG8gdGhlCisgICAgICAgICAgIFJlbW90UmVuZGVyaW5nQmFja2VuZFBy
b3h5IHNvIGl0IGNhbiBjYWxsIGl0cyBjcmVhdGVJbWFnZUJ1ZmZlcigpLgorCisgICAgICAgIDIu
IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSAobm9uLXZpcnR1YWwpOiBDcmVh
dGVzIGEgc2NhbGVkCisgICAgICAgICAgIEltYWdlQnVmZmVyIGFuZCBzZXRzIHRoZSBjb250ZXh0
IGFjY29yZGluZ2x5LiBJdCBhbGxvd3MgYWxzbyBmb3JjaW5nCisgICAgICAgICAgIGNyZWF0aW5n
IGFuIGluLXByb2Nlc3MgQ29uY3JldGVJbWFnZUJ1ZmZlci4gVGhpcyBpcyBjb250cm9sbGVkIGJ5
IGFuCisgICAgICAgICAgIGV4dHJhIHBhcmFtZXRlciBvZiB0aGUgZW51bSB0eXBlIENyZWF0ZU1l
dGhvZC4KKworICAgICAgICAzLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcigpICh2aXJ0dWFsKTogVGFrZXMgdGhlCisgICAgICAgICAgIHNjYWxlRmFjdG9yKCkg
aW50byBjb25zaWRlcmF0aW9uIHdoZW4gY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyLiBCeSAKKyAg
ICAgICAgICAgZGVmYXVsdCB0aGUgdHlwZSBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgdGhlIENvbmNy
ZXRlSW1hZ2VCdWZmZXIuCisgICAgICAgICAgIEJlY2F1c2UgUmVjb3JkIGluaGVyaXRzIEdyYXBo
aWNzQ29udGV4dCBhbmQgYmVjYXVzZSBpdCBpcyB0aGUgYmFzZQorICAgICAgICAgICBjbGFzcyBv
ZiBSZWNvcmRlckltcGwgYW5kIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSwgaXQgd2ls
bCAKKyAgICAgICAgICAgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGRlZmF1
bHQgSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgNC4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJblBy
b2Nlc3NDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKTogVGhpcyBhbHdheXMKKyAgICAgICAgICAgcmV0
dXJucyBhbiBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2Yg
dGhlCisgICAgICAgICAgIHVuZGVybHlpbmcgSW1hZ2VCdWZmZXIgb2YgdGhlIEdyYXBoaWNzQ29u
dGV4dC4gVGhpcyB3aWxsIGJlIHVzZWQgd2hlbgorICAgICAgICAgICBkcmF3aW5nIGhhcyB0byBo
YXBwZW4gaW4gV2ViUG9yY2VzczogUERGIGltYWdlcyBhbmQgU1ZHIGZvbnRzIGZvcgorICAgICAg
ICAgICBleGFtcGxlLgorCisgICAgICAgIFR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMg
YXJlIHByb3ZpZGVkOiBvbmUgdGFrZXMgYSBGbG9hdFNpemUgYW5kCisgICAgICAgIHRoZSBvdGhl
ciB0YWtlcyBhIEZsb2F0UmVjY3QuIFRoZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBm
b3VyIGNvcm5lcnMgCisgICAgICAgIG9mIHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICog
aHRtbC9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xk
ZXJDYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0FwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNjYWxlZEltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZv
ckltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNv
bXBhdGlibGVJbWFnZUJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUluUHJvY2Vzc0NvbXBhdGlibGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xvbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5m
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFn
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09U
U1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFj
OjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNl
dHVwRmlsdGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBh
aW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJ
bnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jh
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0
Rm9yVGV4dEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBUb1RleHRNYXNrKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFn
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGVhcjJEUm90YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6
aW1hZ2VCdWZmZXJGb3JFZmZlY3QgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250
YWluZXIpOgorCiAyMDIyLTAyLTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6
RGVsZWdhdGUgYW5kIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGNkYTY0NDBlOWYwZWU0ZDMwNmViNzc2ZjYwZjE1NWUxYzY2ZDY5NjEuLjg0MDJkODJiOTI3
YjE3YjdhMTg4Yjc2YTk4ZTBlYzIyNTVjNzg1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjItMDItMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgdG8gR3Jh
cGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU3NTgKKyAgICAgICAgcmRhcjovLzg4NDc4NDcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDItMDIgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUg
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSBhbmQgRGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAK
aW5kZXggMmMxYTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQw
N2JjNzc4MzkwMzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENh
bnZhczo6cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0
aGVyZSBhcmUgbm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0g
Y3R4LT5jbGlwQm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1h
Z2UgPSBjdHgtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2
MDkyMGE1Y2FjLi5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBA
QCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgx
LjAgLyB4U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhT
Y2FsZSwgeVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3Rl
ZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4
Y2ZmMThiOWM3ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLjg4ZDlmNzhjOWE1YzljYmIyMjA4
Y2RjNzg5NDExZGU4Mjc2NmMzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+
PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFz
IHRoZSBjYW52YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3
aGljaCBpcyBvd25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5n
IHRoZSBjb250ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAv
LyBjbGVhciB0aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3Jp
Z2luYWwgYnVmZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJl
Y3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUo
KSksIGJ1ZmZlcigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXJDb3B5ID0gYnVmZmVyKCktPmNsb25lKCk7CiAgICAgICAgIGRvd25jYXN0PE9m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuY2xlYXJDYW52YXMo
KTsKICAgICAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogCkBAIC00NTEsMTQgKzQ1MSwxMyBAQCB2
b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmICht
X3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICAgICAgaWYgKGJ1ZmZlckNvcHkp
CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y2xvbmUoKSkKICAg
ICAgICAgICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUoV1RG
TW92ZShidWZmZXJDb3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhY2Vo
b2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVyID0gIW1f
cGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1fcGxhY2Vob2xkZXJE
YXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAg
bV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y2xv
bmUoKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYg
c2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTUwZTY4YjI4NzE2MzhkMjA3YWNlYjIzMjc1NDkz
ZGVhNmI0MTJjNi4uNmU0Y2RmNTJkMmYxZDZjYjJmZTM3ZGRhNWE4ZGM3ZDRiMjRkYTM3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NTQsMTcgKzE1NTQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKIAogICAgIGJvb2wgcmVwYWludEVudGlyZUNhbnZhcyA9IGZhbHNlOwogICAg
IGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUZvckNhbnZhcygqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVk
U3JjUmVjdCwgb3B0aW9ucywgY29sb3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCpp
bWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKICAg
ICAgICAgcmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxD
YW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERy
YXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3Ap
OwogICAgICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG9w
ID09IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0g
ICAgICAgIGMtPmRyYXdJbWFnZUZvckNhbnZhcygqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucywgY29sb3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJh
d0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRp
b25zKTsKICAgICAgICAgcmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGMtPmRyYXdJbWFnZUZvckNhbnZhcygqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucywgY29sb3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJh
d0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRp
b25zKTsKIAogICAgIGRpZERyYXcocmVwYWludEVudGlyZUNhbnZhcywgbm9ybWFsaXplZERzdFJl
Y3QpOwogCkBAIC0xNjExLDcgKzE2MTEsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291cmNlQ2FudgogICAg
ICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCku
Z2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KSB7CiAgICAgICAgIGlm
ICgmc291cmNlQ2FudmFzID09ICZjYW52YXNCYXNlKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgY29sb3JTcGFjZSgpLCAq
YykpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvcHkgPSBjLT5jcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoc3JjUmVjdC5zaXplKCksIGNvbG9yU3BhY2UoKSkpIHsKKyAgICAgICAgICAgICAg
ICBjb3B5LT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIC1zcmNSZWN0LmxvY2F0
aW9uKCkpOwogICAgICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7CiAgICAgICAgICAgICAgICAg
Yy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5LCBkc3RSZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkg
fSwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAg
ICAgICAgICAgIH0KQEAgLTE4MDcsMTIgKzE4MDgsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
SW4KICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3RhdGljIHZvaWQg
ZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdJbWFnZUZvckNh
bnZhcyhpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0
LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQg
ZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNw
YWNlKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cHRpb25zKTsKIH0KQEAgLTE4NDMsNyArMTg0NCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1h
CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVj
dC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9m
ZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9y
bSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRq
dXN0ZWREZXN0LCBzcmMsIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfSwgY29sb3JT
cGFjZSgpKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgp
LCBhZGp1c3RlZERlc3QsIHNyYywgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciB9KTsK
IAogICAgIGNvbXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCBlY2Q1MGI3MGZk
YmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZlLi45ZDRhNmU5OTAzZmZlMzQ1YTg3OGQ3ZjQz
NzA0OTVhZWExMGRmYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0KQEAgLTExMCw3ICsxMTAsOCBAQCBzdGF0aWMgQ0dQREZQYWdlUmVmIGFwcGxlUGF5
QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7CisgICAgLy8gQ3JlYXRlIGluLXByb2Nlc3MgSW1h
Z2VCdWZmZXIgc2luY2UgdGhlIGRlY29kaW5nIG9mIFBERiBpbWFnZXMgaGFzIHRvIGhhcHBlbiBp
biBXZWJQcm9jZXNzLgorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUluUHJv
Y2Vzc0NvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYmU2Y2Vj
NzgyNzc3OTRkZjU3ZDRmNWZjZjdmNGY3ZDJhNmUwM2FjMy4uMWVmYzZkNGMzZjUzZmIzN2E1YzUy
MDI0ODcyYjg4Zjc4ZjIzODc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI3
NiwxMyArMjc2LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmUKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlRm9yQ2FudmFzKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fcHJpbWFyeUNvbnRleHQuZHJhd0ltYWdlRm9yQ2FudmFzKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0ltYWdlRm9yQ2FudmFzKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBJ
bWFnZURyYXdSZXN1bHQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0
byByZXN1bHQgPSBtX3ByaW1hcnlDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMmRiODUwMTk0Y2Q4MWNjOTQ3MDQ3MzFmYTJkNjUxMjA0Njk5NjE4ZC4u
NWE0YzAwM2Q5OTFjOGVlZDI2Y2EyNzUxZTg2NWZmY2Q1ZmQyNjhjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaApAQCAtMTAwLDcgKzEwMCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pIGZpbmFsOwotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2VGb3JDYW52YXMoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkgZmluYWw7CiAg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUs
IEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCmluZGV4IDgwMjc0MzVhZDI5NDU2NjI5OGE3OTFiM2FmNmFmYTliZjI3ODFlNjguLjU3NDU0
NDdjOGM1NGZmODhhOTM2NmY1MGZlYjM2NGQ3NzgwY2IwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdl
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBjdHh0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBjdHh0LmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggNTBmZTBjNDY2MTRiNzAyYmExODYxZTczODAzYzEwMDI1YTA4MDRiNC4u
NjFhMzgzMjMzY2I2ZWIxYTk0ZTkxZjFmZmU0NzdmMmNjZGYxNTExNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsCiAK
IHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZmVmMzZlNTdhNjVhMTQ4Njkw
ZGIzMGEyYzJhNTY4NGQwMDBjOGFkYy4uYmRhNzAxMTA5OGZhNTE3YTY0NDMyYWZlY2JkMDUzYzFm
OTU5NWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQK
ICAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JI
YXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50
aWFsbHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9y
KSkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE0OTJlOThkYTI4
MGMyM2VjNzM2MzA3YWRlMmRkZWYzMmJmYTRjZWYuLjlmZjI1YmZjYjU4N2RjN2FlMmZhOGI2ZmVj
OTM2NDkxMTMyOTc1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTUxLDYgKzU1MSwxMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3N0YXRpYyBJbnRTaXpl
IHNjYWxlZEltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGUpCit7CisgICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNv
bnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCisgICAg
Ly8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KKyAgICByZXR1cm4gZXhwYW5k
ZWRJbnRTaXplKHNpemUgKiBzY2FsZSk7Cit9CisKK3N0YXRpYyBJbnRSZWN0IHNjYWxlZEltYWdl
QnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUp
Cit7CisgICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNj
YWxlKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworc3Rh
dGljIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZSgxLCAxKTsKKyAgICBJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2FsZSk7CisgICAg
cmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9CisKK0ludFNpemUgR3JhcGhpY3NDb250ZXh0Ojpjb21w
YXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxlRmFjdG9yKCkpOworfQor
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9h
dFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0aG9kIGNyZWF0ZU1ldGhvZCkgY29u
c3QKK3sKKyAgICBhdXRvIGV4cGFuZGVkU2NhbGVkU2l6ZSA9IHNjYWxlZEltYWdlQnVmZmVyU2l6
ZShzaXplLCBzY2FsZSk7CisgICAgaWYgKGV4cGFuZGVkU2NhbGVkU2l6ZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBp
bmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShleHBhbmRlZFNjYWxlZFNpemUpOworCisgICAgUmVm
UHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICBpZiAoY3JlYXRlTWV0aG9kID09IENy
ZWF0ZU1ldGhvZDo6QmFzZSkKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5nU2NhbGUsIGNv
bG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGVsc2UKKyAgICAgICAgaW1hZ2VCdWZmZXIg
PSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFNpemUgKiBjbGFtcGluZ1NjYWxlLCBj
b2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKKworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShj
bGFtcGluZ1NjYWxlKTsKKworICAgIC8vICdleHBhbmRlZFNjYWxlZFNpemUnIGlzIG1hcHBlZCB0
byAnc2l6ZScuIFNvIHVzZSAnZXhwYW5kZWRTY2FsZWRTaXplIC8gc2l6ZScKKyAgICAvLyBub3Qg
J3NjYWxlJyBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSBlcXVhbC4KKyAgICBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGV4cGFuZGVkU2NhbGVkU2l6ZSAvIHNpemUpOworICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCBjcmVhdGVNZXRob2QpIGNv
bnN0Cit7CisgICAgYXV0byBleHBhbmRlZFNjYWxlZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJl
Y3QocmVjdCwgc2NhbGUpOworICAgIGlmIChleHBhbmRlZFNjYWxlZFJlY3QuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1w
aW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUoKSk7CisK
KyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworICAgIGlmIChjcmVhdGVNZXRo
b2QgPT0gQ3JlYXRlTWV0aG9kOjpCYXNlKQorICAgICAgICBpbWFnZUJ1ZmZlciA9IEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUoKSAqIGNs
YW1waW5nU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGVsc2UKKyAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFJlY3Quc2l6
ZSgpICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisKKyAgICBp
ZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuc2NhbGUoY2xhbXBpbmdTY2FsZSk7CisgICAgCisgICAgLy8gJ3JlY3Qn
IGlzIG1hcHBlZCB0byBhIHJlY3RhbmdsZSBpbnNpZGUgZXhwYW5kZWRTY2FsZWRSZWN0LgorICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1leHBhbmRlZFNjYWxlZFJlY3QubG9j
YXRpb24oKSk7CisgICAgCisgICAgLy8gVGhlIHNpemUgb2YgdGhpcyByZWN0YW5nbGUgaXMgbm90
IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkuCisgICAgLy8g
U28gdXNlICdzY2FsZScgbm90ICdleHBhbmRlZFNjYWxlZFJlY3Quc2l6ZSgpIC8gcmVjdC5zaXpl
KCknLgorICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGUpOworICAgIHJldHVy
biBpbWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2Rl
LnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9
CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdN
b2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZl
cihyZWN0LCBzY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5y
ZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCitSZWZQdHI8SW1hZ2VC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3Bh
Y2UsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRl
TWV0aG9kOjpCYXNlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1
ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVl
X29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJblByb2Nlc3NDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVm
ZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJblByb2Nlc3NDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFj
dG9yKCksIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIENyZWF0ZU1l
dGhvZDo6QmFzZSk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJu
IGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CkBAIC01NjgsMTIgKzY4Miw2IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAgcmV0
dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQog
Ci1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMoSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKQotewotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd0ZvckNhbnZh
cygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucywgY2FudmFzQ29sb3JTcGFjZSk7
Ci19Ci0KIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTY2OCw3ICs3NzYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHJlY3QpCiAKIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24p
CiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgKnRoaXMpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZGVzdGluYXRpb24uc2l6
ZSgpLCBjb2xvclNwYWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGNmNzA5MmRlMzNiYzViNzI4YWQ0NjFiMGZjMDIxNzdmNjllZWZmMzIuLjBkNjhl
YTJhODFiYzRmNGEwNDNkZWNhNjg3NjBiZDZkZGU0OGM0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MTYsMTQgKzQx
NiwyMyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbWFnZXMsIFBhdHRlcm5zLCBhbmQgTWVkaWEKIAor
ICAgIEludFNpemUgY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmKSBj
b25zdDsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlID0geyAxLCAxIH0sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01v
ZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CisKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUluUHJvY2Vzc0NvbXBhdGli
bGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW5Qcm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZUZvckNhbnZhcyhJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52
YXNDb2xvclNwYWNlKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
CkBAIC01NDYsNiArNTU1LDEzIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbGxFbGxpcHNlQXNQ
YXRoKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc3Ryb2tlRWxsaXBzZUFzUGF0aChjb25z
dCBGbG9hdFJlY3QmKTsKIAorICAgIGVudW0gY2xhc3MgQ3JlYXRlTWV0aG9kIDogYm9vbCB7IERl
ZmF1bHQsIEJhc2UgfTsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBSZW5kZXJpbmdNb2RlKSBjb25zdDsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0aG9kKSBj
b25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIFJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCkgY29uc3Q7CisKICAgICBGbG9hdFJl
Y3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9h
dFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNv
cm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4
Zjc4YWUxNzg5YzQ4MmUuLjEyNDk0NGVjMDc3MDIyMGUwZGMzYjJlYjY1MDY2NTQ5YTFlNjc2MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTE1Mywx
MSArMTUzLDYgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcoKnRoaXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdGb3JD
YW52YXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4gZHJhdyhjb250ZXh0
LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0KLQogSW1hZ2VEcmF3UmVzdWx0IEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRU
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xv
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggOWM3M2Nl
MmI2ZjgwZjFjMWRmNWM0N2Y3MjYxNDRkODNiN2I4NDE0Zi4uMGQ1NDdhNmUyYTYyYmM4NjliMjQy
N2FiNTZjNmZhNTQ1ZWM0NmVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikg
eyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKLSAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ2FudmFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRp
bGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXgg
MDE5M2JmYjBmOTZjN2QzNDA1M2U3NjhhMGMyNThmYzEyNTc4MGZkMy4uYzVlZjMwYTJiMGIwNzg2
NDk2ODdlMGRlMTc2N2YwNWUzNzlhMzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDczICs3Miwx
NCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNsb25lKCkgY29uc3QKIHsKLSAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNv
bnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlm
IChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkK
LSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2Nh
bGVkU2l6ZSwgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAg
aW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXpl
LCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6
ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi0vLyBUaGlzIGlzIHVzZWZ1bCB3aGVu
IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcGl4ZWwgZ3JpZCBvZiB0aGUgSW1hZ2VCdWZmZXIg
YWxpZ25zIHdpdGggdGhlIHBpeGVsIGdyaWQgb2YgdGhlIGNvbnRleHQuCi0vLyBTaW1wbHkgc2F5
aW5nIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIGlzbid0IHN1
ZmZpY2llbnQgaW4gdGhpcyBzaXR1YXRpb24sIGJlY2F1c2UgcmVjdC5sb2NhdGlvbigpIG1heSBu
b3QgbGllIG9uIGEgcGl4ZWwgYm91bmRhcnkuCi0vLyBJbiB0aGlzIHNpdHVhdGlvbiwgd2UgaGF2
ZSB0byBpbmZsYXRlIGJvdGggdGhlIGxlZnQgc2lkZSBhbmQgdGhlIHJpZ2h0IHNpZGUsIHdoaWNo
IGNhbiBsZWFkIHRvIGRpZmZlcmVudCByZXN1bHRzIHRoYW4KLS8vIGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIHdvdWxkIGhhdmUgcHJvZHVjZWQuCi1hdXRvIElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbXBhdGli
bGVCdWZmZXJEZXNjcmlwdGlvbj4KLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGluZm8gPSBJbWFnZUJ1ZmZlcjo6Y29t
cGF0aWJsZUJ1ZmZlckluZm8ocmVjdCwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0
ZXMsIGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNp
emVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLnNjYWxlKGluZm8uc2NhbGUpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC1pbmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmxvY2F0aW9uKCkpOwotICAg
IHJldHVybiB7IHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW5mby5pbmZsYXRlZFJl
Y3RJblVzZXJDb29yZGluYXRlcyB9IH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgYXV0byBjbG9uZSA9
IGNvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUoKSwgY29s
b3JTcGFjZSgpKTsKKyAgICBpZiAoIWNsb25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6
ZShzaXplLCBjb250ZXh0KTsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250ZXh0
KTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBjbG9uZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihjb25zdF9jYXN0PEltYWdlQnVmZmVyJj4oKnRoaXMpLCBGbG9hdFBvaW50KCkp
OworICAgIHJldHVybiBjbG9uZTsKIH0KIAogYm9vbCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplKQpAQCAtMTg1LDU4ICsxMjYsNiBAQCBGbG9hdFJl
Y3QgSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBy
ZXR1cm4gRmxvYXRSZWN0KHJlY3QubG9jYXRpb24oKSwgY2xhbXBlZFNpemUocmVjdC5zaXplKCkp
KTsKIH0KIAotSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAg
Ly8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMg
c2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCi0gICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9u
ZSBwaXhlbCBwZXIgdW5pdC4KLSAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250
ZXh0LnNjYWxlRmFjdG9yKCkpOwotfQotCi1hdXRvIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVm
ZmVySW5mbyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgLT4gQ29tcGF0aWJsZUJ1ZmZlckluZm8KLXsKLSAgICBhdXRvIHNjYWxlRmFjdG9yID0g
Y29udGV4dC5zY2FsZUZhY3RvcigpOwotICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7Ci0gICAg
c2NhbGVkUmVjdC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBpbmZsYXRlZFNjYWxlZFJl
Y3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOwotICAgIGF1dG8gaW5mbGF0ZWRSZWN0
SW5Vc2VyQ29vcmRpbmF0ZXMgPSBGbG9hdFJlY3QoaW5mbGF0ZWRTY2FsZWRSZWN0KTsKLQotICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gYWxsb2NhdGUgaHVnZSBJbWFnZUJ1ZmZlcnMgYmVjYXVzZSB0
aGV5IGNhbiB0YWtlIGEgbG90IG9mIG1lbW9yeSwKLSAgICAvLyBzbyBpZiB0aGUgc2l6ZSB3b3Vs
ZCBoYXZlIGJlZW4gdG9vIGJpZywgZGVjcmVhc2UgcmVzb2x1dGlvbiBhbmQgc2NhbGUgdGhlIHJl
c3VsdGluZyBjb250ZXh0LgotICAgIC8vIFRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIEltYWdlQnVm
ZmVyIHdpbGwgbG9zZSBxdWFsaXR5LCBidXQgd2lsbCBzdGlsbCBnZW5lcmFsbHkgbG9vayBjb3Jy
ZWN0LgotICAgIGNvbnN0ZXhwciBpbnQgbWF4RGltZW5zaW9uID0gNDA5NjsKLSAgICBpZiAoaW5m
bGF0ZWRTY2FsZWRSZWN0LndpZHRoKCkgPiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhl
IHBpeGVsIGdyaWRzIHdvbid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8g
dHJ5IHRvIGhhbmRsZSBmcmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxl
ZFJlY3Quc2V0V2lkdGgobWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2Vy
Q29vcmRpbmF0ZXMuc2NhbGUobWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRp
bmF0ZXMud2lkdGgoKSwgMSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldFdpZHRoKG1heERpbWVu
c2lvbiAvIHJlY3Qud2lkdGgoKSk7Ci0gICAgfQotICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3Qu
aGVpZ2h0KCkgPiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBpeGVsIGdyaWRzIHdv
bid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBm
cmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJlY3Quc2V0SGVpZ2h0
KG1heERpbWVuc2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNj
YWxlKDEsIG1heERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmhlaWdo
dCgpKTsKLSAgICAgICAgc2NhbGVGYWN0b3Iuc2V0SGVpZ2h0KG1heERpbWVuc2lvbiAvIHJlY3Qu
aGVpZ2h0KCkpOwotICAgIH0KLQotICAgIGF1dG8gcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGlu
YXRlcyA9IGluZmxhdGVkU2NhbGVkUmVjdC5zaXplKCk7Ci0gICAgaW5mbGF0ZWRSZWN0SW5Vc2Vy
Q29vcmRpbmF0ZXMuc2NhbGUoMS4wZiAvIHNjYWxlRmFjdG9yKTsKLSAgICByZXR1cm4geyBXVEZN
b3ZlKHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMpLCBXVEZNb3ZlKGluZmxhdGVkUmVj
dEluVXNlckNvb3JkaW5hdGVzKSwgc2NhbGVGYWN0b3IgfTsKLX0KLQotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQotewotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29t
cGF0aWJsZUJ1ZmZlclNpemUocmVjdC5zaXplKCksIGNvbnRleHQpOwotCi0gICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBj
b2xvclNwYWNlLCBjb250ZXh0KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIC1y
ZWN0LmxvY2F0aW9uKCkpOwotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlcikKIHsKICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnNpbmtJbnRvTmF0aXZl
SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCmluZGV4IDRiNzFmMjM1M2M4ZDBjZDhlZGY0YWY1ZTU5MjZiN2RlMjkyYzhhNjIuLmFlNjQy
MWExZjNlNDkxOWJmMzEwOGEzN2Y0ZmM3YWEzNjU4YjEwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBD
by4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsMTUg
KzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VE
aXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyog
PSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3Qg
SG9zdFdpbmRvdyogPSBudWxscHRyKTsKIAotICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9y
IGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RydWN0IENvbXBhdGli
bGVCdWZmZXJEZXNjcmlwdGlvbiB7Ci0gICAgICAgIFJlZjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7Ci0gICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAg
ICB9OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZmZXJEZXNjcmlwdGlv
bj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3RJblVzZXJDb29y
ZGluYXRlcywgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgUmVmUHRyPElt
YWdlQnVmZmVyPiBjbG9uZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1
c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZp
bHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBp
bmcoY29uc3QgRmxvYXRTaXplJik7CkBAIC02NywxNSArNTksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZShjb25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUmIHNj
YWxlKTsKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
OwogCi0gICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RydWN0IENvbXBhdGlibGVCdWZm
ZXJJbmZvIHsKLSAgICAgICAgSW50U2l6ZSBwaHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVz
OwotICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7Ci0gICAg
ICAgIEZsb2F0U2l6ZSBzY2FsZTsKLSAgICB9OwotICAgIHN0YXRpYyBDb21wYXRpYmxlQnVmZmVy
SW5mbyBjb21wYXRpYmxlQnVmZmVySW5mbyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKTsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
cigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJh
Y2tlbmQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOwpAQCAt
MTE5LDkgKzEwMyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRp
b24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQ
dHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikgPSAwOwogCi0gICAgLy8gQ3JlYXRlIGFu
IGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBm
cm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cAppbmRleCA2ZmZjMjgyYjljYzc1MDQwODg4Y2IzNjRmYjMzMDIwMmZjYjAzYmQwLi4zNzBjN2Rj
Mjg5NmYzOTYyY2IzZWQ1MDk4MmRhYjY5OTc0ZjYzMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIHZvaWQgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4dCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IDBlMDRjYmJjNDJlMjdiY2M5YTUzNGZkMGZhZGMyMDdmZWNkMzFi
ZDEuLmVhN2UxMjU2NzZlZTNlNWRhMWY2ZDFkOTAxY2Q3ODlkYjk3MzU5NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC0yMzIsMTQgKzIzMiwxNSBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0
ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAg
ICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1h
Z2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCiAgICAgaWYgKG1fcGRmSW1hZ2VD
YWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkg
ewotICAgICAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1
ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBzY2FsZWRT
aXplID0gY29udGV4dC5jb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSk7
CiAgICAgICAgIGlmIChzX2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVk
QXJlYSgpICogNCAtIG1fY2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewogICAg
ICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAvLyBD
cmVhdGUgaW4tcHJvY2VzcyBJbWFnZUJ1ZmZlciBzaW5jZSB0aGUgZGVjb2Rpbmcgb2YgUERGIGlt
YWdlcyBoYXMgdG8gaGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgbV9jYWNoZWRJbWFnZUJ1ZmZl
ciA9IGNvbnRleHQuY3JlYXRlSW5Qcm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNhY2hlZElt
YWdlU2l6ZSk7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKSB7CiAgICAgICAgIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpOwogICAgICAgICByZXR1cm47CkBAIC0yOTIsNyArMjkzLDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICAgICAgICAgIC8vIHNjYWxhciA9IHNxcnQobWF4IG51
bWJlciBvZiBwaXhlbHMgLyAod2lkdGggKiBoZWlnaHQpKQogICAgICAgICAgICAgYXV0byBzY2Fs
YXIgPSBzdGQ6Om1pbigxLmYsIHN0ZDo6c3FydChzdGF0aWNfY2FzdDxmbG9hdD4oc19tYXhDYWNo
ZWRJbWFnZUFyZWEpIC8gKGRzdFJlY3Qud2lkdGgoKSAqIGRzdFJlY3QuaGVpZ2h0KCkpKSk7CiAg
ICAgICAgICAgICBGbG9hdFJlY3QgbG9jYWxEZXN0aW5hdGlvblJlY3QoRmxvYXRQb2ludCgpLCBk
c3RSZWN0LnNpemUoKSAqIHNjYWxhcik7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGxvY2FsRGVzdGluYXRpb25S
ZWN0LnNpemUoKSwgY29udGV4dCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gY29udGV4dC5jcmVhdGVJblByb2Nlc3NDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9jYWxEZXN0
aW5hdGlvblJlY3Quc2l6ZSgpKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlckNvbnRl
eHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybUNv
bnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBsb2NhbERlc3RpbmF0aW9uUmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgICAgICAgICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggYzI5NWVmZTgz
NDdiMDQ1YmUzMWRiMzY3NjczZWU3Zjk5NWIxYTRjMy4uNTRiN2ZiNDY0YTlkODQ3ZTIzMjQ2N2M3
ZDBkOTRhYzQyNmUyOGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcApAQCAtMzc0LDE0ICszNzQsMTkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUK
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
IGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgRmxvYXRQb2ludCBw
ZW5Qb3NpdGlvbiA9IHN0YXJ0UG9pbnQ7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtR2x5cGhzOyArK2kpIHsKICAgICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5kc0Zvckds
eXBoKGdseXBoc1tpXSk7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyRGVzY3JpcHRpb24g
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihib3VuZHMsIG1fb3duZXIpKSB7
Ci0gICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlckRlc2NyaXB0
aW9uLT5pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyAr
IGksIDEsIEZsb2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7Ci0gICAgICAgICAgICBhdXRvIGRl
c3RpbmF0aW9uUmVjdCA9IGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmluZmxhdGVkUmVjdEluVXNl
ckNvb3JkaW5hdGVzOworCisgICAgICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVy
IHNpbmNlIHRoZSBkZWNvZGluZyBvZiBPVC1TVkcgZm9udHMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQ
cm9jZXNzLgorICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fb3duZXIuY3JlYXRlSW5Q
cm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyKGJvdW5kcykpIHsKKyAgICAgICAgICAgIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKGltYWdlQnVmZmVyLT5jb250ZXh0KCksIGZvbnQsIGdseXBocyAr
IGksIGFkdmFuY2VzICsgaSwgMSwgRmxvYXRQb2ludCgpLCBzbW9vdGhpbmdNb2RlKTsKKworICAg
ICAgICAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoYm91
bmRzKTsKICAgICAgICAgICAgIGRlc3RpbmF0aW9uUmVjdC5tb3ZlQnkocGVuUG9zaXRpb24pOwot
ICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJEZXNjcmlwdGlv
bi0+aW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX293bmVyLmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgICAgIH0K
KwogICAgICAgICBwZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2YW5jZXNbaV0pKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODlmM2QzNTNk
YTdiYjQxNzExOGZmNzE4OGNlZGMwN2MwOGJjYzg0Ny4uNTQ3M2JhYzEwMDhlNGFkNTA1MDRiYzU5
MTMzOGM1OWIwMTJlYTJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtNTA3LDYgKzUwNywyNiBAQCBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbgogICAgIHJl
dHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CiB9CiAKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgc2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVu
ZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0aG9kOjpEZWZhdWx0KTsKK30KKworUmVmUHRyPEltYWdl
QnVmZmVyPiBSZWNvcmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0
LCBzY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJp
bmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkRlZmF1bHQpOworfQorCitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlY29yZGVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBj
b2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSks
IENyZWF0ZU1ldGhvZDo6RGVmYXVsdCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3Jk
ZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2Us
IHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0
aG9kOjpEZWZhdWx0KTsKK30KKwogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgUmVjb3JkZXI6OnBh
aW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
NDBlN2EwYzI1NjAzNzEzNTljYWVkZGZkZDUzOTIwNWVkMTU4N2U5OC4uNDIzZDYxNjRkYjRkMmUx
NGMzNDE5NTBkZTcyYzVlOGU2NTdhZjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC0xODUsNiArMTg1LDEyIEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBDb250
ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIENvbnRleHRTdGF0ZSYgY3VycmVu
dFN0YXRlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0IGZpbmFsOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01v
ZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0IGZpbmFsOworCiBwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCog
cGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggM2VjYmM3YmEz
MzM1ZmM3YmJhYmY5MGUxNDdkYzNiYTkzNGY2NDg2NS4uMjBjYmUwMDI1ZWRiNjBiMDhkYmI4MmVj
MzRlN2NkZjRjZDhjM2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwCkBAIC00MzEsNiArNDMxLDExIEBAIGJvb2wgUmVjb3JkZXJJbXBsOjpyZWNv
cmRSZXNvdXJjZVVzZShGb250JiBmb250KQogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IFJlY29yZGVySW1wbDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBS
ZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKK30KKwogLy8gRklYTUU6IHNoYXJlIHdpdGggU2hhZG93RGF0YQogc3RhdGljIGlu
bGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVyUmFkaXVzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCA5MjZjMzNiMzEx
MTIyNTVlYzMyYzIyNDZlMzI5MTllMThlY2Y1NDAzLi5hOTYxZjZmZjcyNmNmNjY2OTYxMTI4ODEx
YTNkNzliZWM4YmRlNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaApAQCAtMTI3LDYgKzEyNyw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAK
KyAgICB1c2luZyBSZWNvcmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXI7CisgICAgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlKSBjb25zdCBmaW5hbDsKKwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4u
IGFyZ3MpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IGIxODhjZWFiNDI2OTZmZmUyMDEyMDlhOTAwYWI3MDA5OTUwYjg1ZTUuLmJhZWQxNGNlMGFk
N2M5YzA0Yzk1YjBlNzE1MDUyYTY1MGUwNzlhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGQ6OnBhaXI8c3RkOjpvcHRp
b25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aQogICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsK
ICAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKTsKLSAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0u
Y29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOworICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG1f
Y29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24o
KS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIGlmICghbV9tYXNrSW1h
Z2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1l
bW9yeSwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXgg
ZDc5ZTg1YWEyYmM5NzU4NzJhZmZiMWQ3MDcxOTRkZGVkYmQzOTA5YS4uNzQxOTE1YzBjMDNkNDFi
MzNiNTczOWM5NjQ0YzM3NzI2NWVlMWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQpAQCAtNzM0LDcgKzczNCw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JG
b2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3NDb250CiAK
ICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJh
d1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsK
LSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZs
b2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCksIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAg
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggNTI4ZjAyMjA0YTYxODZmOTg1MWEzMjRjNTBlOWI2MWNiMjUyMDM3
NC4uMTliYjBjNDJmYmM1ZmMyMTM1NzYwNzgyMjY1N2ZiYjYyYWY4NzI4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04OTQs
NyArODk0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgbWFza1JlY3QuaW50
ZXJzZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocGFpbnRJbmZvLnJlY3QsIGRldmljZVNjYWxl
RmFjdG9yKSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFz
a0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6
ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIG1h
c2tJbWFnZSA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKG1hc2tSZWN0LnNp
emUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBi
b3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDc3YThhMjc4MTI5MjVhNWE0NjcyYzY1ZGY5OGNmN2FkYjI5NmZkZTcuLjk3
M2FkYzU4NjJkM2YxNDMyMDJjYmFmZTFjN2FiNjZjNTAzY2E1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgR3JhcGhpY3ND
b250ZXh0KiBSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgZGVzdGlu
YXRpb25Db250ZXh0LAogCiAgICAgYXV0byByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxjdWxhdGVM
YXllckJvdW5kcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBvZmZzZXRGcm9tUm9vdCwgeyB9KTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHBhaW50aW5nRmlsdGVycy0+
YmVnaW5GaWx0ZXJFZmZlY3QocmVuZGVyZXIoKSwgZW5jbG9zaW5nSW50UmVjdChyb290UmVsYXRp
dmVCb3VuZHMpLCBlbmNsb3NpbmdJbnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCks
IGVuY2xvc2luZ0ludFJlY3QoZmlsdGVyUmVwYWludFJlY3QpKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQqIGZpbHRlckNvbnRleHQgPSBwYWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZmZWN0KHJl
bmRlcmVyKCksIGRlc3RpbmF0aW9uQ29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyb290UmVsYXRp
dmVCb3VuZHMpLCBlbmNsb3NpbmdJbnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCks
IGVuY2xvc2luZ0ludFJlY3QoZmlsdGVyUmVwYWludFJlY3QpKTsKICAgICBpZiAoIWZpbHRlckNv
bnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDRlZmNmYWI1NTU3YjU1MzNiZWU5
NWM5NDI4MjYxMmExNzVmNjUzMzguLmQyZmYyZTkxYWIxMDlhMDFhOTdkN2Y3ODJmM2NiNmEzN2Jh
MDI2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0zMzEyLDcgKzMzMTIsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRl
cm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogewog
ICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIodGlsZVNp
emUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4
IDZkZTRmZjAxN2I5MjU3YTliNmIxMDczNmYxYzRlMTg5MWE4ZTc1YTAuLjViYTk0Y2ZkNWRiYjFl
NDRiNWZiZDNjNWJjMTFhZDE5YWVhZjhmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSwxOSArMTI5LDE2
IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQog
ICAgIHJldHVybiBtX3NvdXJjZUltYWdlID8gJm1fc291cmNlSW1hZ2UtPmNvbnRleHQoKSA6IG51
bGxwdHI7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCkKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhdXRvJiBmaWx0ZXIg
PSAqbV9maWx0ZXI7CiAgICAgYXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKG1fZmlsdGVyUmVnaW9uLnNpemUoKSk7CiAKLSAgICBpZiAoIW1fc291cmNlSW1hZ2Ug
fHwgbV9zb3VyY2VJbWFnZS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewotICAgICAg
ICBtX3NvdXJjZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgZmlsdGVy
LnJlbmRlcmluZ01vZGUoKSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJw
b3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG1fbGF5ZXIucmVuZGVyZXIoKS5ob3N0V2luZG93KCkpOwotICAgICAgICBpZiAoYXV0
byBjb250ZXh0ID0gaW5wdXRDb250ZXh0KCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShm
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgfQorICAgIGlmICghbV9zb3VyY2VJbWFnZSB8fCBt
X3NvdXJjZUltYWdlLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKQorICAgICAgICBtX3Nv
dXJjZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihtX2ZpbHRlclJlZ2lvbi5zaXpl
KCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5
ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQorR3JhcGhpY3NDb250ZXh0KiBS
ZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5
ZXJSZXBhaW50UmVjdCkKIHsKICAgICBpZiAoIW1fZmlsdGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE5Myw3ICsxOTAsNyBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmls
dGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsCiAgICAgcmVz
ZXREaXJ0eVNvdXJjZVJlY3QoKTsKIAogICAgIGZpbHRlci5zZXRGaWx0ZXJSZWdpb24obV9maWx0
ZXJSZWdpb24pOwotICAgIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKKyAgICBhbGxv
Y2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNvbnRleHQpOwogCiAgICAgYXV0byogc291cmNlR3Jh
cGhpY3NDb250ZXh0ID0gaW5wdXRDb250ZXh0KCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljc0Nv
bnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgK
aW5kZXggYjBjYjc3YzhlMTA1YzRiZTA3ZjY2ZTY5MjQ3MTczYmM4ZTVlM2E5ZS4uMDUxM2M4ODVi
NDBiNzVlMDEzMmYzZWFkZmVmNjBjNzg2Nzg5YjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MywxNCArNjMsMTQg
QEAgcHVibGljOgogICAgIC8vIFBlciByZW5kZXIKICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBiZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZmls
dGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBsYXllclJlcGFpbnRSZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZm
ZWN0KFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJl
Y3QmIGxheWVyUmVwYWludFJlY3QpOwogICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIHJlc2V0RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVj
dCA9IExheW91dFJlY3QoKTsgfQogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7
Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CisgICAgdm9pZCBhbGxv
Y2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgUmVuZGVy
TGF5ZXImIG1fbGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KaW5kZXggMWE2NjczMjI3MjJhZDM4ZmMxNTE0YmJiMTE5ZWRjZTNhOGVmNzNmMy4u
YWJkNGMxZGIxMzE0ZDQ0MjFiNzMyMmFhODU3NTFhZWIyZjU5M2FkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBi
b29sIFJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwgY29uc3QgUAogewogICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0KCk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocGFpbnRSZWN0LnNpemUoKSwgZGVzdGluYXRpb25D
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihwYWludFJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA2Yzk0ZTkyZTBmZmY4NDAxM2YxYTZlYzY4MjljN2U5
MDBhMjAwNzhmLi5lNDdhNjZkMGYzMGYyYWE0N2MwNDQ4YjFkMWRkNGE0MTZiZmM2NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05OTYsNyArOTk2
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBHcmFwaGljc0NvbnQKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yID0gby5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBhdXRvIGNvbWJv
Qm94SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb21i
b0JveFNpemUsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgY29udGV4dCk7CisgICAgYXV0byBjb21ib0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVh
dGVJbWFnZUJ1ZmZlcihjb21ib0JveFNpemUsIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNj
YWxlRmFjdG9yIH0pOwogICAgIGlmICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExp
c3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAg
ICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bktleSA6IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uTGVmdFRvUmlnaHQsCiAgICAgfV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9C
b3hCdXR0b25TaXplLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNv
bnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgeyBkZXZp
Y2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFjb21ib0JveEJ1
dHRvbkltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNzksNyArMTM3OSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3Mg
PSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigp
IDwgMDsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gcGFpbnRJbmZvLmNvbnRleHQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihpbmZsYXRl
ZFJlY3Quc2l6ZSgpLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwCmluZGV4IGRhMGQ1NmNkMjcwOTA0NjQ3OGQwMjI0ZTgyMzA0MjBhMzEyNmFkYTAuLjg3
YTFhZTU5MWE1NzAyZDc5MjdjYjhjNjhlNTk1ZjRjYjBmMGNiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDExIERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMTUyLDkgKzE1MywxNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNm
b3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVy
bW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOworCisgICAgLy8gSWdub3JlIDJEIHJvdGF0
aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgbWFzay4KKyAgICBGbG9h
dFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3Jt
LnlTY2FsZSgpKTsKKworICAgIC8vIERldGVybWluZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBjbGlw
cGVyLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHNob3VsZG4ndCBiZSBi
aWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpLCBzY2FsZSk7CisKICAgICBpZiAoIWNsaXBw
ZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgY2xpcHBlZENvbnRl
bnRCb3VuZHMsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5
KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2Nl
bGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBp
bmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zv
cm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBob3N0V2luZG93KCkpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQu
Y3JlYXRlSW1hZ2VCdWZmZXIoY2xpcHBlZENvbnRlbnRCb3VuZHMsIHNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAg
ICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODUs
NyArMTkzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGlmICghY2xpcHBlckRhdGEu
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCBjbGlw
cGVkQ29udGVudEJvdW5kcywgY2xpcHBlckRhdGEuaW1hZ2VCdWZmZXIsIHRydWUpOworICAgIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGNsaXBwZWRDb250
ZW50Qm91bmRzLCBzY2FsZSwgY2xpcHBlckRhdGEuaW1hZ2VCdWZmZXIsIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDc4NjVhNTg1YTQ3ZWZkODI0NjE3
NTFmOWZmYTlhMWQxYjFiMjcxNDkuLmI5NjM2MmM5N2EzYjQwM2Q1ZTQwNGIyY2NmMzg3MDRkOWE5
NjI0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE0NiwyMyArMTQ3LDIxIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBDaGFuZ2UgdGhlIGNv
b3JkaW5hdGUgdHJhbnNmb3JtYXRpb24gYXBwbGllZCB0byB0aGUgZmlsdGVyZWQgZWxlbWVudCB0
byByZWZsZWN0IHRoZSByZXNvbHV0aW9uIG9mIHRoZSBmaWx0ZXIuCi0gICAgYXV0byBlZmZlY3Rp
dmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwgMCwgMCwg
ZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwotCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0xJTkVBUl9TUkdCKQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQigpOwogI2Vsc2UKICAgICBhdXRvIGNvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgotICAgIGF1dG8gc291cmNlR3Jh
cGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEt
PmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0
YS0+ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIHJlbmRlcmVyLmhvc3RXaW5kb3coKSk7CisKKyAg
ICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJE
YXRhLT5kcmF3aW5nUmVnaW9uLCBmaWx0ZXJTY2FsZSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+
ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghc291cmNlR3JhcGhpYykgewogICAg
ICAgICBBU1NFUlQobV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29udGFpbnMoJnJlbmRlcmVyKSk7
CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBhdXRvJiBzb3VyY2VHcmFwaGljQ29udGV4
dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgCisKICAgICBmaWx0ZXJEYXRhLT5zb3Vy
Y2VHcmFwaGljQnVmZmVyID0gV1RGTW92ZShzb3VyY2VHcmFwaGljKTsKICAgICBmaWx0ZXJEYXRh
LT5zYXZlZENvbnRleHQgPSBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA0NDc1
YTY5ZjhmMmM5NjZmNjNjMzE4M2YzMmVmMTU0ODVhODRhYzJiLi40YWU3Y2NlMzNhNzc1MzJhNDdi
ZTBiZjMwNGE4MjRjMTIyMzI3MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTMsNiArMyw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYwLDcgKzYxLDEzIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhp
Y3NDb250ZXh0KiYgY29uCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENv
b3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVj
dCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAg
ICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSwgcmVuZGVyZXIuaG9zdFdpbmRvdygpKTsK
KyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBzaXpl
IG9mIHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2Nh
bGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisgICAgLy8gRGV0ZXJtaW5lIHNj
YWxlIGZhY3RvciBmb3IgdGhlIGNsaXBwZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFn
ZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIElt
YWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXBhaW50UmVjdC5zaXplKCksIHNjYWxlKTsK
KworICAgIGF1dG8gbWFza0ltYWdlID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWlu
dFJlY3QsIHNjYWxlKTsKICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC04MCw4ICs4NywxNCBAQCBzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBjbGlw
VG9UZXh0TWFzayhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxJbQogICAgIEFmZmlu
ZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJs
b2NrKTsKIAogICAgIHRhcmdldFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpOworICAgIAorICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQg
ZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxl
KGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7
CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUgZmFjdG9yIGZvciB0aGUgY2xpcHBlci4gVGhlIHNp
emUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4g
a01heEZpbHRlclNpemUuCisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHRhcmdl
dFJlY3Quc2l6ZSgpLCBzY2FsZSk7CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgdGFyZ2V0UmVjdCwgaW1hZ2VC
dWZmZXIsIGZhbHNlKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZl
cihjb250ZXh0LCB0YXJnZXRSZWN0LCBzY2FsZSwgaW1hZ2VCdWZmZXIsIGZhbHNlKTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAgICAgaWYgKGJvdW5kaW5nQm94TW9kZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcAppbmRleCA3NjRmN2M4ODhmMzJiZjE5NThhZWJlMmI3ZTYxYTUxOTk5YzI5ODUw
Li4zZGIwMTMxMWRmNWI1Yzk0N2UwN2I0NmM1OGFlZGE3NDcyZjJmMjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTY4LDYgKzY5LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgQWZm
aW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2Fs
Y3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIp
OwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCk7CiAKKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNu
J3QgYWZmZWN0IHRoZSBzaXplIG9mIHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNv
bHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisg
ICAgLy8gRGV0ZXJtaW5lIHNjYWxlIGZhY3RvciBmb3IgdGhlIG1hc2suIFRoZSBzaXplIG9mIGlu
dGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0
ZXJTaXplLgorICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXBhaW50UmVjdC5z
aXplKCksIHNjYWxlKTsKKwogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlICYmICFyZXBh
aW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0
eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogCkBAIC04Miw5ICs4OSw4IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbmRlCiAgICAgICAgICAgICBkcmF3Q29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6TGluZWFyU1JHQigpOwogICAgICAgICB9CiAjZW5kaWYKLQogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCi0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgbWFza0NvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IGhvc3RXaW5kb3coKSk7CisgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IGNvbnRleHQt
PmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSwgbWFza0NvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1h
c2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTUsNyArMTAxLDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoKmNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFz
a2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CisgICAgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQsIHJlcGFpbnRSZWN0LCBzY2FsZSwg
bWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRh
M2UxN2E1ZmQxNWMwODZiLi44MDBiNWI1NTU2M2E5ZDg3NzU4OTZmNDVlYzI3Y2EyNDk2YmNhMmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk1LDE5ICs5NiwxNiBAQCBQYXR0ZXJuRGF0YSog
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIE9wdAogICAgIGlmICghYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0ocmVuZGVyZXIsIG1f
YXR0cmlidXRlcywgcGF0dGVybkVsZW1lbnQoKSwgdGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRy
YW5zZm9ybSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQWZmaW5lVHJhbnNmb3Jt
IGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbiA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRl
cmVyKTsKKyAgICBhdXRvIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVy
ZXIpOwogCiAgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0
aGUgc2l6ZSBvZiB0aGUgdGlsZS4KLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90
YXRpb24oYWJzb2x1dGVUcmFuc2Zvcm1JZ25vcmluZ1JvdGF0aW9uKTsKLSAgICBGbG9hdFJlY3Qg
YWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlv
bi5tYXBSZWN0KHRpbGVCb3VuZGFyaWVzKTsKLSAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXM7CisgICAgRmxvYXRTaXplIHRpbGVTY2FsZShhYnNvbHV0ZVRyYW5zZm9y
bS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOwogCiAgICAgLy8gU2NhbGUg
dGhlIHRpbGUgc2l6ZSB0byBtYXRjaCB0aGUgc2NhbGUgbGV2ZWwgb2YgdGhlIHBhdHRlcm5UcmFu
c2Zvcm0uCi0gICAgYWJzb2x1dGVUaWxlQm91bmRhcmllcy5zY2FsZShzdGF0aWNfY2FzdDxmbG9h
dD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0oKS54U2NhbGUoKSksCi0gICAgICAgIHN0
YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgp
KSk7CisgICAgdGlsZVNjYWxlLnNjYWxlKHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMu
cGF0dGVyblRyYW5zZm9ybSgpLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmli
dXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNjYWxlKCkpKTsKIAogICAgIC8vIEJ1aWxkIHRpbGUg
aW1hZ2UuCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRyaWJ1dGVz
LCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNm
b3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29udGV4dC5yZW5kZXJpbmdNb2Rl
KCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdlKGNvbnRleHQsIHRpbGVC
b3VuZGFyaWVzLnNpemUoKSwgdGlsZVNjYWxlLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIG1fYXR0cmli
dXRlcyk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC0yMzQsMjUgKzIzMiwzMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRU
aWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpj
cmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZs
b2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29u
c3QKIHsKLSAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpj
bGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5k
YXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdygpKTsKKyAgICAvLyBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gbWFraW5nIGNyZWF0ZUltYWdlQnVmZmVyKCkgdXNlIHJvdW5kZWRJbnRT
aXplKCkuCisgICAgYXV0byByb3VuZGVkVW5zY2FsZWRJbWFnZUJ1ZmZlclNpemUgPSBbXShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpIC0+IEZsb2F0U2l6ZSB7
CisgICAgICAgIGF1dG8gc2NhbGVkU2l6ZSA9IHNpemUgKiBzY2FsZTsKKyAgICAgICAgcmV0dXJu
IHNpemUgLSAoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpIC0gcm91bmRlZEludFNpemUoc2Nh
bGVkU2l6ZSkpICogKHNjYWxlZFNpemUgLSBmbG9vcmVkSW50U2l6ZShzY2FsZWRTaXplKSkgLyBz
Y2FsZTsKKyAgICB9OworCisgICAgYXV0byB0aWxlU2l6ZSA9IHJvdW5kZWRVbnNjYWxlZEltYWdl
QnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CisKKyAgICAvLyBGSVhNRTogVXNlIGNyZWF0ZUltYWdl
QnVmZmVyKHJlY3QsIHNjYWxlKSwgZGVsZXRlIHRoZSBhYm92ZSBjYWxjdWxhdGlvbnMgYW5kIGZp
eCAndHJhbnNmb3JtJworICAgIGF1dG8gdGlsZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1
ZmZlcih0aWxlU2l6ZSwgc2NhbGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwogCi0gICAgLy8gVGhlIGltYWdlIGJ1ZmZlciByZXByZXNlbnRz
IHRoZSBmaW5hbCByZW5kZXJlZCBzaXplLCBzbyB0aGUgY29udGVudCBoYXMgdG8gYmUgc2NhbGVk
ICh0byBhdm9pZCBwaXhlbGF0aW9uKS4KLSAgICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKGNsYW1w
ZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLnNpemUoKSAvIHRpbGVCb3VuZGFyaWVzLnNpemUoKSk7
Ci0KICAgICAvLyBBcHBseSB0aWxlIGltYWdlIHRyYW5zZm9ybWF0aW9ucy4KLSAgICBpZiAoIXRp
bGVJbWFnZVRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHRpbGVJbWFnZUNvbnRleHQu
Y29uY2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CisgICAgaWYgKCF0cmFuc2Zvcm0uaXNJZGVu
dGl0eSgpKQorICAgICAgICB0aWxlSW1hZ2VDb250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAoYXR0
cmlidXRlcy5wYXR0ZXJuQ29udGVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX09CSkVDVEJPVU5ESU5HQk9YKQotICAgICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSB0
aWxlSW1hZ2VUcmFuc2Zvcm07CisgICAgICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHRyYW5z
Zm9ybTsKIAogICAgIC8vIERyYXcgdGhlIGNvbnRlbnQgaW50byB0aGUgSW1hZ2VCdWZmZXIuCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0VsZW1lbnQ+KCphdHRyaWJ1
dGVzLnBhdHRlcm5Db250ZW50RWxlbWVudCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggNzExN2Yx
MjdkMGRkZDczYmE1ZWJjNTU5OTAxMGMyNGJiNjJmMDhhNi4uOWMzMjAxZWI5YzI0MWFmNWNlYWQx
ZTcwMWY5YWUxNDJhNjJiYTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC0xLDYgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYxLDcgKzYyLDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBG
bG9hdFJlY3QmIHBhdHRlcm5Cb3VuZGFyaWVzLCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRy
YW5zZm9ybSkgY29uc3Q7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVRpbGVJbWFn
ZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJp
ZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlVGlsZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFBh
dHRlcm5BdHRyaWJ1dGVzJikgY29uc3Q7CiAKICAgICBQYXR0ZXJuRGF0YSogYnVpbGRQYXR0ZXJu
KFJlbmRlckVsZW1lbnQmLCBPcHRpb25TZXQ8UmVuZGVyU1ZHUmVzb3VyY2VNb2RlPiwgR3JhcGhp
Y3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGYwOGU4NzJkMjg2NmFlNTM0MjQ4NmUzYzlmOTk4
ZWRjOTQ0OTg0YjkuLjYzODAyNGQ3ZDI3ODEwZmJlMDVmNzk0MmRhYmZjMGEwODE4YWNiOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMjI3LDUyICsyMjcsNiBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdAogICAg
IHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIEludFJlY3QgcGFpbnRS
ZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNm
b3JtKTsKLSAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgotICAgIGlmIChw
YWludFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZsb2F0
U2l6ZSBzY2FsZSgxLCAxKTsKLSAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBwYWludFJlY3Qu
c2l6ZSgpOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoY2xhbXBlZFNp
emUsIHNjYWxlKSkKLSAgICAgICAgY2xhbXBlZFNpemUgPSBjbGFtcGVkU2l6ZSAqIHNjYWxlOwot
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUs
IHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9z
ZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwot
ICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpLnRyYW5z
bGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpLm11bHRpcGx5KGFic29sdXRlVHJhbnNmb3JtKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKLSAgICBpbWFnZUNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9ybSk7Ci0KLSAgICByZXR1
cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKLXsKLSAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUo
Y2xhbXBlZFJlY3Quc2l6ZSgpKTsKLSAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5k
ZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKLQotICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0
eSBJbWFnZUJ1ZmZlcnMuCi0gICAgaWYgKGNsYW1wZWRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5v
LCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JB
OCwgaG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVy
LT5jb250ZXh0KCk7Ci0KLSAgICAvLyBDb21wZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRo
ZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFu
ZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4KLSAgICBpbWFnZUNvbnRleHQuc2Nh
bGUodW5jbGFtcGVkU2l6ZSAvIHRhcmdldFJlY3Quc2l6ZSgpKTsKLQotICAgIHJldHVybiBpbWFn
ZUJ1ZmZlcjsKLX0KLQogdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyRWxlbWVudCYgaXRlbSwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVlQ29udGVudFRyYW5zZm9ybWF0aW9uKQogewogICAg
IC8vIFJlbmRlcmluZyBpbnRvIGEgYnVmZmVyIGltcGxpZXMgd2UncmUgYmVpbmcgdXNlZCBmb3Ig
bWFza2luZywgY2xpcHBpbmcsIHBhdHRlcm5zIG9yIGZpbHRlcnMuIEluIGVhY2ggb2YgdGhlc2UK
QEAgLTI4OSwxMiArMjQzLDE1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3Vi
dHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlCiAgICAgY29udGVu
dFRyYW5zZm9ybWF0aW9uID0gc2F2ZWRDb250ZW50VHJhbnNmb3JtYXRpb247CiB9CiAKLXZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBi
b29sIHNhZmVUb0NsZWFyKQordm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgUmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZm
ZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCiB7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUlt
YWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtOworICAgIGFic29sdXRlVHJhbnNmb3JtLnNjYWxl
KHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKKworICAgIGF1dG8gYWJzb2x1dGVUYXJn
ZXRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJh
bnNmb3JtKTsKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhl
IGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNj
YWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9u
ZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgpAQCAtMzA4LDE0ICsy
NjUsNiBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogICAgICAgICBpbWFnZUJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQotewotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21w
b3NlZFR5cGUgZGVjb21wb3NpdGlvbjsKLSAgICB0cmFuc2Zvcm0uZGVjb21wb3NlKGRlY29tcG9z
aXRpb24pOwotICAgIGRlY29tcG9zaXRpb24uYW5nbGUgPSAwOwotICAgIHRyYW5zZm9ybS5yZWNv
bXBvc2UoZGVjb21wb3NpdGlvbik7Ci19Ci0KIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIHsKICAgICBB
U1NFUlQobV9wYWludEluZm8pOwpAQCAtMzMzLDcgKzI4Miw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZl
cikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5k
IGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3Vu
ZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludElu
Zm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gbV9wYWludEluZm8tPmNvbnRl
eHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5n
Qm94LnNpemUoKSkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMDQ0Nzk5M2I5ODdlMmY1MjQ3MzM0MTA1NDZmMGEw
ZTVmNDM2ZDQyYi4uYmFlMmFjZTUxNmIzNWY2Nzk2MTNjY2I4MWU2MjkwMzQ2ZWM0MTZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTYwLDE1ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4
dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1By
ZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBh
cmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotCiAgICAgc3Rh
dGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJF
bGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcFRv
SW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNv
bHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VC
dWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlLCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVh
cik7CiAKICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFj
dG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY2Fs
Y3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVu
ZGVyT2JqZWN0Jik7Ci0gICAgc3RhdGljIHZvaWQgY2xlYXIyRFJvdGF0aW9uKEFmZmluZVRyYW5z
Zm9ybSYpOwogCiAgICAgc3RhdGljIEludFJlY3QgY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cAppbmRleCA4N2QyZWE2NjhmODA1MDI1NjMyMjllNTBjNGY2MTRkNjczOWMwNGEwLi40YTljM2M0
NWE5MjNlYmQyYWJkZjVhMWZkMmQ3ZmU1MDYwNzk0ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTE3Nyw2ICsxNzcsMzggQEAgdm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SW50UmVjdCBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlKQoreworICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7CisgICAg
c2NhbGVkUmVjdC5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc2Nh
bGVkUmVjdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRmxvYXRTaXplIGNsYW1waW5nU2NhbGVGb3JJ
bWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIEZsb2F0U2l6ZSBj
bGFtcGluZ1NjYWxlKDEsIDEpOworICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhz
aXplLCBjbGFtcGluZ1NjYWxlKTsKKyAgICByZXR1cm4gY2xhbXBpbmdTY2FsZTsKK30KKworc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQor
eworICAgIGF1dG8gc2NhbGVkUmVjdCA9IHNjYWxlZEltYWdlQnVmZmVyUmVjdChyZWN0LCBzY2Fs
ZSk7CisgICAgaWYgKHNjYWxlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZl
clNpemUoc2NhbGVkUmVjdC5zaXplKCkpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmlu
Z1B1cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGNsYW1w
aW5nU2NhbGUpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1zY2FsZWRS
ZWN0LmxvY2F0aW9uKCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGUp
OworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKwogc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VC
dWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVj
dCgpIGNvbnN0CiB7CiAgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVs
ZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgdHJlZVNjb3BlKCkpOwpAQCAtMTk1LDExICsyMjcs
MTIgQEAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1h
Z2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmUKICAgICBpZiAoIWFic29sdXRlVHJhbnNmb3Jt
LmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBzaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybShhYnNvbHV0ZVRyYW5zZm9ybS54
U2NhbGUoKSwgMCwgMCwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCksIDAsIDApOwotCisgICAg
Ly8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgaW1hZ2Ugc2l6
ZS4KKyAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29s
dXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICBhdXRvIGltYWdlUmVjdCA9IHJlbmRlcmVyLT5y
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2hlYXJG
cmVlQWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZW5kZXJlci0+aG9zdFdpbmRvdygpKTsKKyAgICAv
LyBGSVhNRTogUmVwbGFjZSB0aGlzIGNhbGwgd2l0aCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgb25jZSB0aGUgZGVzdGluYXRpb24gR3JhcGhpY3NDb250ZXh0IGlzIHBhc3Nl
ZCB0byB0aGlzIGZ1bmN0aW9uLgorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1
ZmZlcihpbWFnZVJlY3QsIHNjYWxlLCByZW5kZXJlci0+aG9zdFdpbmRvdygpKTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBmNDE0MDEyMzM4OTE5MDM4N2FkMjc2OTZhNTA1NDQ1
NGRmODkwMjhhLi41Zjg0M2NkZjAzYjhmOTYxZDdhM2RhYmVhOGMzZmIzZjcxYmJiYTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE2OCwxNyArMTY4LDcg
QEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIElu
dFNpemUoY3VycmVudFNpemUpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdG
b3JDYW52YXNGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0
aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgcmV0dXJuIGRyYXdGb3JDb250
YWluZXJJbnRlcm5hbChjb250ZXh0LCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0
aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3Bh
Y2UpOwotfQotCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICByZXR1cm4gZHJhd0ZvckNvbnRhaW5lcklu
dGVybmFsKGNvbnRleHQsIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFn
bWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwotfQotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWlu
ZXJJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgaW50ZXJtZWRpYXRlQ29sb3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTIwMiwyMyArMTkyLDE4IEBA
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lckludGVybmFsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uCiAKICAgICBmcmFtZVZpZXcoKS0+c2Nyb2xsVG9GcmFn
bWVudChpbml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9
IGRyYXdJbnRlcm5hbChjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIG9wdGlvbnMsIGludGVy
bWVkaWF0ZUNvbG9yU3BhY2UpOworICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNv
bnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucyk7CiAKICAgICBzZXRJbWFnZU9ic2Vy
dmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBSZWZQdHI8TmF0aXZlSW1h
Z2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZSgpCi17Ci0gICAgcmV0dXJuIG5hdGl2ZUltYWdlKHNp
emUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwotfQotCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZShjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VS
ZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCAgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTIyNiw5ICsyMTEsNiBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZShjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYQogICAgIHNldEltYWdlT2Jz
ZXJ2ZXIobnVsbHB0cik7CiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKCkpOwogCi0gICAgYXV0
byBzY2FsZUZhY3RvciA9IGltYWdlU2l6ZSAvIHNvdXJjZVJlY3Quc2l6ZSgpOwotICAgIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGltYWdlQnVmZmVyLT5j
b250ZXh0KCkudHJhbnNsYXRlKC1zb3VyY2VSZWN0LmxvY2F0aW9uKCkpOwogICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKCp0aGlzLCBGbG9hdFBvaW50KDAsIDApKTsKIAogICAg
IHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwpAQCAtMjUwLDcgKzIzMiw3IEBAIHZvaWQgU1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENv
bnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUu
d2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFn
ZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNv
bnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihleHBh
bmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSkpOwogICAgIGlmICghYnVmZmVyKSAv
LyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47CiAgICAgZHJhd0Zv
ckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9v
bSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJl
Y3QpOwpAQCAtMjcxLDI3ICsyNTMsMTEgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBp
bWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2Fs
ZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdl
RHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNhbnZhcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgcmV0dXJuIGRyYXdJbnRlcm5hbChjb250ZXh0LCBk
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLX0KLQogSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIHJldHVybiBkcmF3SW50ZXJuYWwoY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwotfQotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdJbnRlcm5hbChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVz
dGluYXRpb25Db2xvclNwYWNlIGludGVybWVkaWF0ZUNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAg
ICBpZiAoIWNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgLy8gRGlzcGxh
eSBsaXN0IGRyYXdpbmcgY2FuJ3QgaGFuZGxlIGFyYml0cmFyeSBET00gY29udGVudC4KLSAgICAg
ICAgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzc0
ODogUmVtb3ZlIHRoaXMgd2hlbiBpdCBjYW4uCi0gICAgICAgIHJldHVybiBkcmF3QXNOYXRpdmVJ
bWFnZShjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBpbnRlcm1lZGlhdGVDb2xv
clNwYWNlKTsKLSAgICB9Ci0KICAgICBSZWZQdHIgdmlldyA9IGZyYW1lVmlldygpOwogICAgIEFT
U0VSVCh2aWV3KTsKIApAQCAtMzQyLDUyICszMDgsNiBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1h
Z2U6OmRyYXdJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLQotSW1hZ2VEcmF3
UmVzdWx0IFNWR0ltYWdlOjpkcmF3QXNOYXRpdmVJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgQVNTRVJUKCFjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKLQotICAgIGF1dG8gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKLSAgICBpZiAo
IXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKLQotICAgIC8vIENvbnNpZGVyIHRoZSBzY2FsaW5nIG9mIHRoZSBjb250
ZXh0IG9ubHkuCi0gICAgYXV0byBjb250ZXh0U2NhbGUgPSBGbG9hdFNpemUodHJhbnNmb3JtLnhT
Y2FsZSgpLCB0cmFuc2Zvcm0ueVNjYWxlKCkpOwotICAgIGF1dG8gc2NhbGVkRGVzdGluYXRpb24g
PSBkZXN0aW5hdGlvbjsKLSAgICBzY2FsZWREZXN0aW5hdGlvbi5zY2FsZShjb250ZXh0U2NhbGUp
OwotCi0gICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBjbGFtcCB0aGUgdGVtcG9yYXJ5IEltYWdl
QnVmZmVyLgotICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IEZsb2F0U2l6ZSgxLCAxKTsKLSAgICBJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkRGVzdGluYXRpb24uc2l6ZSgpLCBj
bGFtcGluZ1NjYWxlKTsKLQotICAgIC8vIGNvbnRleHRTY2FsZSAqIGNsYW1waW5nU2NhbGUgaXMg
dGhlIHNjYWxpbmcgZmFjdG9yLgotICAgIGF1dG8gc2NhbGUgPSBjb250ZXh0U2NhbGUgKiBjbGFt
cGluZ1NjYWxlOwotICAgIHNjYWxlZERlc3RpbmF0aW9uLnNjYWxlKGNsYW1waW5nU2NhbGUpOwot
Ci0gICAgYXV0byByZWN0SW5OYXRpdmVJbWFnZSA9IEZsb2F0UmVjdCB7IHsgfSwgZmxvb3JlZElu
dFNpemUoc2NhbGVkRGVzdGluYXRpb24uc2l6ZSgpKSB9OwotCi0gICAgYXV0byBuYXRpdmVJbWFn
ZSA9IHRoaXMtPm5hdGl2ZUltYWdlKHJlY3RJbk5hdGl2ZUltYWdlLnNpemUoKSwgc291cmNlLCBj
b2xvclNwYWNlKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgYXV0byBsb2NhbEltYWdlUGFpbnRpbmdPcHRp
b25zID0gb3B0aW9uczsKLSAgICBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb246OkZyb21JbWFnZSkKLSAgICAgICAgbG9jYWxJbWFn
ZVBhaW50aW5nT3B0aW9ucyA9IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIEltYWdlT3Jp
ZW50YXRpb246Ok9yaWVudGF0aW9uOjpOb25lKTsKLQotICAgIC8vIENoYW5nZSB0aGUgY29vcmRp
bmF0ZSBzeXN0ZW0gdG8gcmVmbGVjdCB0aGUgc2NhbGluZyBmYWN0b3IuCi0gICAgY29udGV4dC5z
Y2FsZShGbG9hdFNpemUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSkpOwot
ICAgIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgcmVjdEluTmF0
aXZlSW1hZ2Uuc2l6ZSgpLCBzY2FsZWREZXN0aW5hdGlvbiwgcmVjdEluTmF0aXZlSW1hZ2UsIGxv
Y2FsSW1hZ2VQYWludGluZ09wdGlvbnMpOwotICAgIAotICAgIGNvbnRleHQuc2NhbGUoc2NhbGUp
OwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KCp0aGlzKTsKLQotICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7Ci19
Ci0KIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB7CiAg
ICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDZjZGJhMWMzMDg4MjBhNTFkNTYxMDFhN2Q1MzRi
NDQzZTFjNzUzZDEuLjkzNzRkNDk0MzhhZmJhNTBiZTQ0NDFkYjU4YjM1ZDE2ODcyZTNmOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC04NywxOCArODcsMTIgQEAg
cHJpdmF0ZToKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgZmluYWw7Ci0gICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpOwogCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNh
bnZhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpIGZpbmFsOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3QXNOYXRpdmVJ
bWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250
YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXJJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7Ci0gICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9y
Q2FudmFzRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKICAg
ICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBp
bml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KTsKIAogICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAKaW5kZXggMjAyMDAzNGMyNjYwZmU0YTNlMTI0YTI4N2M1NGQwOTg0ZDM4MzUyMS4uYWQ5M2Y1
MTQxNTM5YzA5N2I1MDMyMGNhNDg1Y2YyOGVkMGZlZGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00OCwxMSAr
NDgsNiBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgIHJldHVybiBtX2ltYWdlLT5kcmF3
Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBt
X2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd0ZvckNhbnZhcyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgcmV0dXJuIG1faW1hZ2Ut
PmRyYXdGb3JDYW52YXNGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2Nv
bnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zLCBjYW52YXNDb2xvclNwYWNlKTsKLX0KLQogdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAppbmRleCBkMzdlMTc1MmYzOTVkYWQzZWI2YjIzMGZlMmE0YTEwODg0Yjc4ZWVkLi40YTFmNmMz
NWEzZmZiMDdlNjVkNTMxN2VjOTVmYTcxMGY5Yjg0NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTQsNyArNTQsNiBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNh
bnZhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmlu
YWw7CiAKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNGEyOGJk
NDZmYTE3NzA1M2U1N2MzMTI1ZjFlZWFkMTBmY2VkNjVlNy4uNjMzYjM1ZjU3NTdjZjE4MDcxNDFl
ZmIwMjQ1OWIzYzM4YTNmODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Y2xpcFBhdGgo
Y29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7Ci0g
ICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UsIGRyYXdpbmdDb250ZXh0KCkpOworICAg
IG1fbWFza0ltYWdlQnVmZmVyID0gZHJhd2luZ0NvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKIH0KIAogdm9pZCBSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjplbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmNwcAppbmRleCA5ZDM0M2ZhOWFjNDk0YmFjNWVhNGNhZGQwMTE5YjAwY2UyYzg2NzZj
Li44MmUzNDU5OWNkYzMyOWYyMzA5ZmU5M2ZlYjA3Nzk1MjIxZTAxYzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00NjQsNiArNDY0LDE2IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29uCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5PigqdGhpcywgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwog
fQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29u
c3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IDMwMDk4YmVhNjFj
MWI2NDRlNDIwYWNhMzMzOWY5MDQ0OTFlNGI3ZmYuLmI4MTM5MDE5ZTFjNDlhOGE5MDEzNTgzZDAx
NjlmZWJiZTQ0NzcyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuaApAQCAtMTQ0LDYgKzE0NCw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICB1c2luZyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSkg
Y29uc3QgZmluYWw7CisKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
bV9kZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eT4gbV9yZW5kZXJpbmdCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451502</attachid>
            <date>2022-02-10 00:12:48 -0800</date>
            <delta_ts>2022-02-14 00:22:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227748-20220210001247.patch</filename>
            <type>text/plain</type>
            <size>23508</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JhNWM4NWZjZDI4Yzc0
NmEyOTA4YzM1NTJkMTJiZTUxYWM3ZDg0Yy4uMTgyZjJhNGJiMGQ0NTVmYTIwYzU1YWI0MzI3MjBh
NTY3Njk5ZmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdlIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzQ4CisgICAgICAgIHJk
YXI6Ly84MDU4MjY5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgcmV2aXNpb25zIHIyNzk3MjIsIHIyODQ3NDAg
YW5kIHIyODM1MzEuIEl0IHdpbGwKKyAgICAgICAgZW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdl
IGluIEdQVSBQcm9jZXNzIGFsd2F5cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFn
ZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3Rm9yQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJh
d0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OmRyYXdGb3JDYW52YXNGb3JDb250YWluZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXJJbnRlcm5hbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNhbnZhcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3QXNOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3Rm9yQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAyMi0wMi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAK
aW5kZXggMjA1ZWU2MjE5ODJhZTFhOThkYmJhOWM2MGJhNjgwNDU2N2NjZjhlMy4uNmU0Y2RmNTJk
MmYxZDZjYjJmZTM3ZGRhNWE4ZGM3ZDRiMjRkYTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAK
QEAgLTE1NTQsMTcgKzE1NTQsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKIAogICAgIGJv
b2wgcmVwYWludEVudGlyZUNhbnZhcyA9IGZhbHNlOwogICAgIGlmIChyZWN0Q29udGFpbnNDYW52
YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUZvckNhbnZhcygq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucywgY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJl
Y3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmVwYWludEVudGlyZUNh
bnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9w
KSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICByZXBhaW50RW50
aXJlQ2FudmFzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG9wID09IENvbXBvc2l0ZU9wZXJhdG9y
OjpDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUZv
ckNhbnZhcygqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3B0
aW9ucywgY29sb3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmVwYWlu
dEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPmRyYXdJbWFnZUZv
ckNhbnZhcygqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3B0
aW9ucywgY29sb3JTcGFjZSgpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKIAogICAgIGRpZERyYXco
cmVwYWludEVudGlyZUNhbnZhcywgbm9ybWFsaXplZERzdFJlY3QpOwogCkBAIC0xODA4LDEyICsx
ODA4LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y29tcG9zaXRlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEluCiAgICAgYy0+cmVzdG9yZSgpOwogfQog
Ci1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VGb3JDYW52YXMoaW1hZ2UsIGRlc3QsIHNyYywgb3B0
aW9ucywgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNy
Yywgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIGRyYXdJbWFn
ZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgY29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3B0aW9ucyk7CiB9CkBAIC0xODQ0LDcgKzE4
NDQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYQogICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRy
YW5zbGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgYnVmZmVy
LT5jb250ZXh0KCkudHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQpOwogICAgIGJ1ZmZlci0+Y29udGV4
dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4
dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0
ZU9wZXJhdG9yOjpTb3VyY2VPdmVyIH0sIGNvbG9yU3BhY2UoKSk7CisgICAgZHJhd0ltYWdlVG9D
b250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIHsgQ29t
cG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21wb3NpdGVCdWZmZXIoKmJ1
ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCBiZTZjZWM3ODI3Nzc5NGRmNTdkNGY1ZmNmN2Y0ZjdkMmE2ZTAzYWMzLi4xZWZjNmQ0YzNmNTNm
YjM3YTVjNTIwMjQ4NzJiODhmNzhmMjM4NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtMjc2LDEzICsyNzYsNiBAQCBJbWFnZURyYXdSZXN1bHQgQmlmdXJjYXRlZEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VGb3JDYW52YXMoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKQotewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9wcmltYXJ5Q29udGV4dC5kcmF3SW1hZ2VGb3JDYW52YXMoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3BhY2UpOwotICAg
IG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3SW1hZ2VGb3JDYW52YXMoaW1hZ2UsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3BhY2UpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIEltYWdlRHJhd1Jlc3VsdCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3VGls
ZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IG1fcHJpbWFyeUNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQuaAppbmRleCAyZGI4NTAxOTRjZDgxY2M5NDcwNDczMWZhMmQ2NTEyMDQ2
OTk2MThkLi41YTRjMDAzZDk5MWM4ZWVkMjZjYTI3NTFlODY1ZmZjZDVmZDI2OGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xMDAsNyArMTAwLDYgQEAgcHVibGljOgogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZp
bmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSkgZmluYWw7Ci0g
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZUZvckNhbnZhcyhJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKSBm
aW5hbDsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpU
aWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBlYjA2YzcwOTExYWUxOTkzYWU1N2E5MGIyYTNiN2Nj
NWE0MjhjODdmLi5kNzJlNjkxYzg5ODI0ZDIwMzgyZTAyYzdhMzRmOWM3NDAzODdhYWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTY1NSwxMiArNjU1LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBy
ZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9
CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUZvckNhbnZhcyhJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRp
b25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3Rm9yQ2Fu
dmFzKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNl
KTsKLX0KLQogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgSW50
ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Nj
b3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBjOWM1
MmZjMjA4OTEzYTQ1NWNiNjAxZTFhZmFmMDRiYTc5ZmVmNmFiLi5lN2I1ZjBkOTZlZmJjMjY1NTZm
NTA5NTdiY2FhMmUzNTM1ZWExY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDMwLDggKzQzMCw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlRm9yQ2FudmFzKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNhbnZh
c0NvbG9yU3BhY2UpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBlMzJhMzZj
NjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlLi4xMjQ5NDRlYzA3NzAyMjBlMGRjM2Iy
ZWI2NTA2NjU0OWExZTY3NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCkBAIC0xNTMsMTEgKzE1Myw2IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IEltYWdlOjpkcmF3Rm9yQ2FudmFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCi17Ci0gICAg
cmV0dXJuIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KIElt
YWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0
IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IDljNzNjZTJiNmY4MGYxYzFkZjVjNDdmNzI2MTQ0ZDgzYjdiODQxNGYuLjBk
NTQ3YTZlMmE2MmJjODY5YjI0MjdhYjU2YzZmYTU0NWVjNDZlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMjAxLDcgKzIwMSw2IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IpIHsgfQogI2VuZGlmCiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1
bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9
IDA7Ci0gICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNhbnZhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2Fu
dmFzQ29sb3JTcGFjZSk7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggNmJmZjg5NzZjNzhiY2JmMWY0YzMzMDM3YWJmN2JjNTI1YmRmNDRkYi4uOWE0MjVhYTcxNTZl
OWZjOTRmMjNkOGVlM2I5ODc4YjhlYmY3NTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNjgsMTcgKzE2OCw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNv
bnRhaW5lclNpemUoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKGN1cnJlbnRTaXplKTsKIH0K
IAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ2FudmFzRm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xv
clNwYWNlKQotewotICAgIHJldHVybiBkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwoY29udGV4dCwg
Y29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLX0KLQogSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0
IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Ci17Ci0gICAgcmV0dXJuIGRyYXdGb3JDb250YWluZXJJbnRlcm5hbChjb250ZXh0LCBjb250YWlu
ZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLX0KLQotSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNlIGludGVybWVkaWF0ZUNvbG9yU3Bh
Y2UpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CkBAIC0yMDIsMjMgKzE5MiwxOCBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1h
Z2U6OmRyYXdGb3JDb250YWluZXJJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bgogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQoaW5pdGlhbEZyYWdtZW50VVJM
KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3SW50ZXJuYWwoY29udGV4dCwg
ZHN0UmVjdCwgc2NhbGVkU3JjLCBvcHRpb25zLCBpbnRlcm1lZGlhdGVDb2xvclNwYWNlKTsKKyAg
ICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRT
cmMsIG9wdGlvbnMpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1h
Z2UoKQotewotICAgIHJldHVybiBuYXRpdmVJbWFnZShzaXplKCksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIHNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLX0KLQotUmVm
UHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VT
aXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyNiw5ICsyMTEsNiBAQCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYQogICAgIHNldEltYWdlT2JzZXJ2ZXIobnVsbHB0cik7CiAgICAgc2V0
Q29udGFpbmVyU2l6ZShzaXplKCkpOwogCi0gICAgYXV0byBzY2FsZUZhY3RvciA9IGltYWdlU2l6
ZSAvIHNvdXJjZVJlY3Quc2l6ZSgpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUo
c2NhbGVGYWN0b3IpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1zb3Vy
Y2VSZWN0LmxvY2F0aW9uKCkpOwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdl
KCp0aGlzLCBGbG9hdFBvaW50KDAsIDApKTsKIAogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2
ZXIpOwpAQCAtMjcxLDI3ICsyNTMsMTEgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBp
bWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2Fs
ZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdl
RHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNhbnZhcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgcmV0dXJuIGRyYXdJbnRlcm5hbChjb250ZXh0LCBk
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLX0KLQogSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIHJldHVybiBkcmF3SW50ZXJuYWwoY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwotfQotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdJbnRlcm5hbChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVz
dGluYXRpb25Db2xvclNwYWNlIGludGVybWVkaWF0ZUNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAg
ICBpZiAoIWNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgLy8gRGlzcGxh
eSBsaXN0IGRyYXdpbmcgY2FuJ3QgaGFuZGxlIGFyYml0cmFyeSBET00gY29udGVudC4KLSAgICAg
ICAgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzc0
ODogUmVtb3ZlIHRoaXMgd2hlbiBpdCBjYW4uCi0gICAgICAgIHJldHVybiBkcmF3QXNOYXRpdmVJ
bWFnZShjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBpbnRlcm1lZGlhdGVDb2xv
clNwYWNlKTsKLSAgICB9Ci0KICAgICBSZWZQdHIgdmlldyA9IGZyYW1lVmlldygpOwogICAgIEFT
U0VSVCh2aWV3KTsKIApAQCAtMzQyLDUyICszMDgsNiBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1h
Z2U6OmRyYXdJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLQotSW1hZ2VEcmF3
UmVzdWx0IFNWR0ltYWdlOjpkcmF3QXNOYXRpdmVJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgQVNTRVJUKCFjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKLQotICAgIGF1dG8gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKLSAgICBpZiAo
IXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKLQotICAgIC8vIENvbnNpZGVyIHRoZSBzY2FsaW5nIG9mIHRoZSBjb250
ZXh0IG9ubHkuCi0gICAgYXV0byBjb250ZXh0U2NhbGUgPSBGbG9hdFNpemUodHJhbnNmb3JtLnhT
Y2FsZSgpLCB0cmFuc2Zvcm0ueVNjYWxlKCkpOwotICAgIGF1dG8gc2NhbGVkRGVzdGluYXRpb24g
PSBkZXN0aW5hdGlvbjsKLSAgICBzY2FsZWREZXN0aW5hdGlvbi5zY2FsZShjb250ZXh0U2NhbGUp
OwotCi0gICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBjbGFtcCB0aGUgdGVtcG9yYXJ5IEltYWdl
QnVmZmVyLgotICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IEZsb2F0U2l6ZSgxLCAxKTsKLSAgICBJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkRGVzdGluYXRpb24uc2l6ZSgpLCBj
bGFtcGluZ1NjYWxlKTsKLQotICAgIC8vIGNvbnRleHRTY2FsZSAqIGNsYW1waW5nU2NhbGUgaXMg
dGhlIHNjYWxpbmcgZmFjdG9yLgotICAgIGF1dG8gc2NhbGUgPSBjb250ZXh0U2NhbGUgKiBjbGFt
cGluZ1NjYWxlOwotICAgIHNjYWxlZERlc3RpbmF0aW9uLnNjYWxlKGNsYW1waW5nU2NhbGUpOwot
Ci0gICAgYXV0byByZWN0SW5OYXRpdmVJbWFnZSA9IEZsb2F0UmVjdCB7IHsgfSwgZmxvb3JlZElu
dFNpemUoc2NhbGVkRGVzdGluYXRpb24uc2l6ZSgpKSB9OwotCi0gICAgYXV0byBuYXRpdmVJbWFn
ZSA9IHRoaXMtPm5hdGl2ZUltYWdlKHJlY3RJbk5hdGl2ZUltYWdlLnNpemUoKSwgc291cmNlLCBj
b2xvclNwYWNlKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgYXV0byBsb2NhbEltYWdlUGFpbnRpbmdPcHRp
b25zID0gb3B0aW9uczsKLSAgICBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb246OkZyb21JbWFnZSkKLSAgICAgICAgbG9jYWxJbWFn
ZVBhaW50aW5nT3B0aW9ucyA9IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIEltYWdlT3Jp
ZW50YXRpb246Ok9yaWVudGF0aW9uOjpOb25lKTsKLQotICAgIC8vIENoYW5nZSB0aGUgY29vcmRp
bmF0ZSBzeXN0ZW0gdG8gcmVmbGVjdCB0aGUgc2NhbGluZyBmYWN0b3IuCi0gICAgY29udGV4dC5z
Y2FsZShGbG9hdFNpemUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSkpOwot
ICAgIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgcmVjdEluTmF0
aXZlSW1hZ2Uuc2l6ZSgpLCBzY2FsZWREZXN0aW5hdGlvbiwgcmVjdEluTmF0aXZlSW1hZ2UsIGxv
Y2FsSW1hZ2VQYWludGluZ09wdGlvbnMpOwotICAgIAotICAgIGNvbnRleHQuc2NhbGUoc2NhbGUp
OwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KCp0aGlzKTsKLQotICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7Ci19
Ci0KIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB7CiAg
ICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDZjZGJhMWMzMDg4MjBhNTFkNTYxMDFhN2Q1MzRi
NDQzZTFjNzUzZDEuLjBhMDM4NmNiNThjYzM4Mjg5YzQ0YWQyMzFhOGU2ZjBmYWM0Y2M3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC05MywxMiArOTMsNyBAQCBw
cml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1ZHSW1hZ2UoSW1hZ2VPYnNl
cnZlciYpOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3Rm9yQ2FudmFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmluYWw7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdB
c05hdGl2ZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRh
aW5lckludGVybmFsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJT
aXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd0ludGVybmFsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdGb3JDYW52YXNGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRT
aXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlh
bEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UpOwogICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25z
dCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVtZW50KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcAppbmRleCAyMDIwMDM0YzI2NjBmZTRhM2UxMjRhMjg3YzU0ZDA5ODRkMzgzNTIx
Li5hZDkzZjUxNDE1MzljMDk3YjUwMzIwY2E0ODVjZjI4ZWQwZmVkYTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAg
LTQ4LDExICs0OCw2IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAgICAgcmV0dXJuIG1faW1h
Z2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5l
clpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
IH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3Rm9yQ2FudmFz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4g
bV9pbWFnZS0+ZHJhd0ZvckNhbnZhc0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNp
emUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3BhY2UpOwotfQotCiB2b2lkIFNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5oCmluZGV4IGQzN2UxNzUyZjM5NWRhZDNlYjZiMjMwZmUyYTRhMTA4ODRiNzhlZWQu
LjRhMWY2YzM1YTNmZmIwN2U2NWQ1MzE3ZWM5NWZhNzEwZjliODQ2NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01NCw3
ICs1NCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3Rm9yQ2FudmFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNw
YWNlKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451869</attachid>
            <date>2022-02-14 00:22:53 -0800</date>
            <delta_ts>2022-02-16 11:45:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227748-20220214002252.patch</filename>
            <type>text/plain</type>
            <size>23417</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRmMzQ5MmE0N2VmYjY2
NDI1NGFhMWZjMWZhZjVhYWU2NzNkZjQ4OC4uNzkyNzA5MWM2Y2I0NzQxN2U0ZmE5ZjEzZmRiNTll
MzNmYjMzMTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdlIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzQ4CisgICAgICAgIHJk
YXI6Ly84MDU4MjY5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgcmV2aXNpb25zIHIyNzk3MjIsIHIyODQ3NDAg
YW5kIHIyODM1MzEuIEl0IHdpbGwKKyAgICAgICAgZW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdl
IGluIEdQVSBQcm9jZXNzIGFsd2F5cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFn
ZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52YXMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3Rm9yQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJh
d0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OmRyYXdGb3JDYW52YXNGb3JDb250YWluZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXJJbnRlcm5hbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNhbnZhcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3QXNOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3Rm9yQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAyMi0wMi0xMyAgTGF1cm8gTW91cmEgIDxsbW91cmFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXhl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA5ZWJkMGQ4ZGEwMWYwODcwYTE1NjkwNGQ3Njlm
YTJkMDhmNTE0MTAxLi5mNjMxZTRmOWE3YjBlMTcyMTRhYzVhMDJhMzA3NDI4OWZjMDVmNzI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTU1NCwxNyArMTU1NCwxNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBDYQogCiAgICAgYm9vbCByZXBhaW50RW50aXJlQ2FudmFzID0gZmFsc2U7CiAg
ICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAg
Yy0+ZHJhd0ltYWdlRm9yQ2FudmFzKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBvcHRpb25zLCBjb2xvclNwYWNlKCkpOworICAgICAgICBjLT5kcmF3SW1hZ2Uo
KmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wdGlvbnMpOwog
ICAgICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKGlzRnVs
bENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBv
cCk7CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAo
b3AgPT0gQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlRm9yQ2FudmFzKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zLCBjb2xvclNwYWNlKCkpOworICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9w
dGlvbnMpOwogICAgICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1ZTsKICAgICB9IGVsc2UK
LSAgICAgICAgYy0+ZHJhd0ltYWdlRm9yQ2FudmFzKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zLCBjb2xvclNwYWNlKCkpOworICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9w
dGlvbnMpOwogCiAgICAgZGlkRHJhdyhyZXBhaW50RW50aXJlQ2FudmFzLCBub3JtYWxpemVkRHN0
UmVjdCk7CiAKQEAgLTE4MDgsMTIgKzE4MDgsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4K
ICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJ
bWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3RhdGljIHZvaWQgZHJh
d0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdJbWFnZUZvckNhbnZh
cyhpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJh
d0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBvcHRp
b25zKTsKIH0KQEAgLTE4NDQsNyArMTg0NCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAg
ICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5s
b2NhdGlvbigpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNl
dCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7
Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0
ZWREZXN0LCBzcmMsIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfSwgY29sb3JTcGFj
ZSgpKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBh
ZGp1c3RlZERlc3QsIHNyYywgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciB9KTsKIAog
ICAgIGNvbXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGJlNmNlYzc4Mjc3Nzk0ZGY1N2Q0ZjVmY2Y3ZjRmN2Qy
YTZlMDNhYzMuLjFlZmM2ZDRjM2Y1M2ZiMzdhNWM1MjAyNDg3MmI4OGY3OGYyMzg3OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yNzYsMTMgKzI3Niw2IEBAIEltYWdlRHJhd1Jl
c3VsdCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEJp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUZvckNhbnZhcyhJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX3ByaW1hcnlDb250ZXh0
LmRyYXdJbWFnZUZvckNhbnZhcyhpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucywg
Y2FudmFzQ29sb3JTcGFjZSk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LmRyYXdJbWFnZUZvckNh
bnZhcyhpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucywgY2FudmFzQ29sb3JTcGFj
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSW1hZ2VEcmF3UmVzdWx0IEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9wcmltYXJ5Q29udGV4
dC5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDJkYjg1MDE5NGNk
ODFjYzk0NzA0NzMxZmEyZDY1MTIwNDY5OTYxOGQuLjVhNGMwMDNkOTkxYzhlZWQyNmNhMjc1MWU4
NjVmZmNkNWZkMjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEwMCw3ICsxMDAs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246
OkZyb21JbWFnZSB9KSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlRm9yQ2Fu
dmFzKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNhbnZhc0NvbG9yU3BhY2UpIGZpbmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDUxOTNhNjZh
ZTk4YmIzMTRmZGIzZGFiNzIwZjI1YjViNzljNTViNjAuLmE1ZmNiYjI2YTRjODlhZDgyMThhZDFk
NDc1Y2ExOGQxNjdiZGMxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNjU1LDEyICs2NTUsNiBAQCBJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbgogICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlRm9yQ2FudmFzKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsK
LSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAg
cmV0dXJuIGltYWdlLmRyYXdGb3JDYW52YXMoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9w
dGlvbnMsIGNhbnZhc0NvbG9yU3BhY2UpOwotfQotCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJw
b2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1
YWxpdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IGY1YWU2YzY5YjYyN2Q4MzNlYTg3NzQyNzJiODA3ZWM4Yzc0MWM0
MzEuLmU4MmFlOWJhMzJhYzQ4YmE2N2UzNzI0MmM2ZDBiOTA5OWFkNzE4YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00
MzAsOCArNDMwLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9t
SW1hZ2UgfSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2VGb3JDYW52YXMoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSk7Ci0KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IGUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUu
LjEyNDk0NGVjMDc3MDIyMGUwZGMzYjJlYjY1MDY2NTQ5YTFlNjc2MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9p
ZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdAogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRo
aXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdGb3JDYW52YXMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKLX0KLQogSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDdlYTk4OWU5NmMzMDA0YWZjMzg4
Y2FhN2JhZjcwZDdiMmM2YmFkZi4uMWQ4NDQ0NGFmOTYzNTZhMTE1NzI1MTJiMDg4Yzg5MjVhZTk4
ZjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yMDEs
NyArMjAxLDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKLSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBk
cmF3Rm9yQ2FudmFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKTsKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA2YmZmODk3NmM3OGJjYmYxZjRjMzMwMzdhYmY3YmM1
MjViZGY0NGRiLi45YTQyNWFhNzE1NmU5ZmM5NGYyM2Q4ZWUzYjk4NzhiOGViZjc1OWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE2OCwxNyArMTY4LDcg
QEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIElu
dFNpemUoY3VycmVudFNpemUpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdG
b3JDYW52YXNGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0
aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNhbnZhc0NvbG9yU3BhY2UpCi17Ci0gICAgcmV0dXJuIGRyYXdGb3JDb250
YWluZXJJbnRlcm5hbChjb250ZXh0LCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0
aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3Bh
Y2UpOwotfQotCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICByZXR1cm4gZHJhd0ZvckNvbnRhaW5lcklu
dGVybmFsKGNvbnRleHQsIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFn
bWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwotfQotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWlu
ZXJJbnRlcm5hbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgaW50ZXJtZWRpYXRlQ29sb3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTIwMiwyMyArMTkyLDE4IEBA
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lckludGVybmFsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uCiAKICAgICBmcmFtZVZpZXcoKS0+c2Nyb2xsVG9GcmFn
bWVudChpbml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9
IGRyYXdJbnRlcm5hbChjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIG9wdGlvbnMsIGludGVy
bWVkaWF0ZUNvbG9yU3BhY2UpOworICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNv
bnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucyk7CiAKICAgICBzZXRJbWFnZU9ic2Vy
dmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBSZWZQdHI8TmF0aXZlSW1h
Z2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZSgpCi17Ci0gICAgcmV0dXJuIG5hdGl2ZUltYWdlKHNp
emUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwotfQotCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZShjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VS
ZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
MjI2LDkgKzIxMSw2IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
KGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hCiAgICAgc2V0SW1hZ2VPYnNl
cnZlcihudWxscHRyKTsKICAgICBzZXRDb250YWluZXJTaXplKHNpemUoKSk7CiAKLSAgICBhdXRv
IHNjYWxlRmFjdG9yID0gaW1hZ2VTaXplIC8gc291cmNlUmVjdC5zaXplKCk7Ci0gICAgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoLXNvdXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKnRoaXMsIEZsb2F0UG9pbnQoMCwgMCkpOwogCiAgICAg
c2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CkBAIC0yNzEsMjcgKzI1MywxMSBAQCB2b2lkIFNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZQogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0
LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ2FudmFz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4g
ZHJhd0ludGVybmFsKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhbnZhc0Nv
bG9yU3BhY2UpOwotfQotCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
cmV0dXJuIGRyYXdJbnRlcm5hbChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci19Ci0KLUltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZTo6ZHJhd0ludGVybmFsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgaW50ZXJtZWRpYXRlQ29s
b3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmICghY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSkgewotICAgICAgICAvLyBEaXNwbGF5IGxpc3QgZHJhd2luZyBjYW4ndCBoYW5kbGUgYXJiaXRy
YXJ5IERPTSBjb250ZW50LgotICAgICAgICAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzQ4OiBSZW1vdmUgdGhpcyB3aGVuIGl0IGNhbi4KLSAgICAg
ICAgcmV0dXJuIGRyYXdBc05hdGl2ZUltYWdlKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMsIGludGVybWVkaWF0ZUNvbG9yU3BhY2UpOwotICAgIH0KLQogICAgIFJlZlB0ciB2aWV3
ID0gZnJhbWVWaWV3KCk7CiAgICAgQVNTRVJUKHZpZXcpOwogCkBAIC0zNDIsNTIgKzMwOCw2IEBA
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ludGVybmFsKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKIH0KIAotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdBc05hdGl2ZUltYWdl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBBU1NFUlQoIWNv
bnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgYXV0byB0cmFuc2Zvcm0gPSBjb250
ZXh0LmdldENUTSgpOwotICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgLy8gQ29uc2lkZXIg
dGhlIHNjYWxpbmcgb2YgdGhlIGNvbnRleHQgb25seS4KLSAgICBhdXRvIGNvbnRleHRTY2FsZSA9
IEZsb2F0U2l6ZSh0cmFuc2Zvcm0ueFNjYWxlKCksIHRyYW5zZm9ybS55U2NhbGUoKSk7Ci0gICAg
YXV0byBzY2FsZWREZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOwotICAgIHNjYWxlZERlc3RpbmF0
aW9uLnNjYWxlKGNvbnRleHRTY2FsZSk7Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGNs
YW1wIHRoZSB0ZW1wb3JhcnkgSW1hZ2VCdWZmZXIuCi0gICAgYXV0byBjbGFtcGluZ1NjYWxlID0g
RmxvYXRTaXplKDEsIDEpOwotICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2Fs
ZWREZXN0aW5hdGlvbi5zaXplKCksIGNsYW1waW5nU2NhbGUpOwotCi0gICAgLy8gY29udGV4dFNj
YWxlICogY2xhbXBpbmdTY2FsZSBpcyB0aGUgc2NhbGluZyBmYWN0b3IuCi0gICAgYXV0byBzY2Fs
ZSA9IGNvbnRleHRTY2FsZSAqIGNsYW1waW5nU2NhbGU7Ci0gICAgc2NhbGVkRGVzdGluYXRpb24u
c2NhbGUoY2xhbXBpbmdTY2FsZSk7Ci0KLSAgICBhdXRvIHJlY3RJbk5hdGl2ZUltYWdlID0gRmxv
YXRSZWN0IHsgeyB9LCBmbG9vcmVkSW50U2l6ZShzY2FsZWREZXN0aW5hdGlvbi5zaXplKCkpIH07
Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGhpcy0+bmF0aXZlSW1hZ2UocmVjdEluTmF0aXZl
SW1hZ2Uuc2l6ZSgpLCBzb3VyY2UsIGNvbG9yU3BhY2UpOwotICAgIGlmICghbmF0aXZlSW1hZ2Up
Ci0gICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7Ci0KLSAgICBhdXRv
IGxvY2FsSW1hZ2VQYWludGluZ09wdGlvbnMgPSBvcHRpb25zOwotICAgIEltYWdlT3JpZW50YXRp
b246Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigpOwotICAg
IGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKQotICAgICAgICBsb2NhbEltYWdlUGFpbnRpbmdPcHRpb25zID0gSW1hZ2VQYWludGluZ09w
dGlvbnMob3B0aW9ucywgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb246Ok5vbmUpOwotCi0g
ICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHN5c3RlbSB0byByZWZsZWN0IHRoZSBzY2FsaW5n
IGZhY3Rvci4KLSAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGUud2lkdGgoKSwg
MSAvIHNjYWxlLmhlaWdodCgpKSk7Ci0gICAgCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Km5hdGl2ZUltYWdlLCByZWN0SW5OYXRpdmVJbWFnZS5zaXplKCksIHNjYWxlZERlc3RpbmF0aW9u
LCByZWN0SW5OYXRpdmVJbWFnZSwgbG9jYWxJbWFnZVBhaW50aW5nT3B0aW9ucyk7Ci0gICAgCi0g
ICAgY29udGV4dC5zY2FsZShzY2FsZSk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAg
ICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwotCi0gICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkRHJhdzsKLX0KLQogUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QKIHsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVs
ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggNmNkYmEx
YzMwODgyMGE1MWQ1NjEwMWE3ZDUzNGI0NDNlMWM3NTNkMS4uMGEwMzg2Y2I1OGNjMzgyODljNDRh
ZDIzMWE4ZTZmMGZhYzRjYzczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKQEAgLTkzLDEyICs5Myw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5hbDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd0FzTmF0aXZlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKICAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0
aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVS
TCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW50ZXJuYWwoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNl
KTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNhbnZhc0ZvckNvbnRhaW5lcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVy
Wm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CiAgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8U1ZHU1ZHRWxl
bWVudD4gcm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDIwMjAwMzRjMjY2MGZlNGEz
ZTEyNGEyODdjNTRkMDk4NGQzODM1MjEuLmFkOTNmNTE0MTUzOWMwOTdiNTAzMjBjYTQ4NWNmMjhl
ZDBmZWRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IFNW
R0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXQKICAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2Nv
bnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JD
b250YWluZXI6OmRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xv
clNwYWNlKQotewotICAgIHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ2FudmFzRm9yQ29udGFpbmVy
KGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFn
bWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgY2FudmFzQ29sb3JTcGFjZSk7Ci19
Ci0KIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZDM3ZTE3NTJmMzk1ZGFkM2Vi
NmIyMzBmZTJhNGExMDg4NGI3OGVlZC4uNGExZjZjMzVhM2ZmYjA3ZTY1ZDUzMTdlYzk1ZmE3MTBm
OWI4NDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452221</attachid>
            <date>2022-02-16 11:45:09 -0800</date>
            <delta_ts>2022-02-16 16:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227748-20220216114508.patch</filename>
            <type>text/plain</type>
            <size>30656</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY4NWRjNjVlNzljNWVk
NzE1NTljODRkOTZmZWM3Yjk5YWYxODFhZi4uZDViMDExMTY1YmJhNWFiM2Q1ZTM3MGRlM2EwMmM3
NjM2MzdkNGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIGRyYXdpbmcgdGhlIFNWR0ltYWdlIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzQ4CisgICAgICAgIHJk
YXI6Ly84MDU4MjY5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgcmV2aXNpb25zIHIyNzk3MjIsIHIyODQ3NDAg
YW5kIHIyODM1MzEuIFNvIGl0IHdpbGwKKyAgICAgICAgZW5hYmxlIGRyYXdpbmcgdGhlIFNWR0lt
YWdlIGluIEdQVSBQcm9jZXNzIGlmIEdQVSBQcm9jZXNzIGZvciAiY2FudmFzIiBvcgorICAgICAg
ICBmb3IgIkRPTSByZW5kZXJpbmciIGlzIGVuYWJsZWQKKworICAgICAgICBXZSBmaXggdGhlIHNj
cmF0Y2ggSW1hZ2VCdWZmZXIgaW4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKCkgdG8gYmUgYWNjZWxl
cmF0ZWQKKyAgICAgICAgaWYgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpIGlzIHRydWUuIFdl
IGFsc28gY3JlYXRlIGEgcmVtb3RlIG9uZSBpZgorICAgICAgICBHUFVQcm9jZXNzIGZvciBET00g
cmVuZGVyaW5nIGlzIGVuYWJsZWQuCisKKyAgICAgICAgV2UgYWxzbyBhbGxvdyBwYXNzaW5nIGEg
Q29sb3JTcGFjZSB0byBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoKSB0byBjb250cm9sCisgICAgICAg
IHRoZSBjb2xvclNwYWNlIG9mIHRoZSByZXN1bHRlZCBOYXRpdmVJbWFnZS4gQmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIG92ZXJyaWRlcworICAgICAgICB0aGUgYmFzZSBjbGFzcyBtZXRob2QgSW1hZ2U6
Om5hdGl2ZUltYWdlKCkgd2UgaGF2ZSB0byBwYXNzIGEgQ29sb3JTcGFjZSAKKyAgICAgICAgdG8g
Qml0bWFwSW1hZ2UgYWxzby4gQSBGSVhNRSBjb21tZW50IGlzIGFkZGVkIHRvIEJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZSgpCisgICAgICAgIHRvIGhhbmRsZSB0aGlzIGFyZ3VtZW50IGluIGEgZnV0
dXJlIHBhdGNoLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ltYWdlVG9Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52
YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUZvckNhbnZhcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VGb3JDYW52
YXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpkcmF3Rm9yQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250
YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkcmF3Rm9yQ2FudmFzRm9yQ29udGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDYW52YXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6ZHJhd0FzTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d0ZvckNhbnZhcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmg6CisKIDIwMjItMDItMTUgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0
YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHBhcnNpbmcgYW5kIGFuaW1hdGlv
biBzdXBwb3J0IGZvciBvZmZzZXQgc2hvcnRoYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4
IDllYmQwZDhkYTAxZjA4NzBhMTU2OTA0ZDc2OWZhMmQwOGY1MTQxMDEuLmY2MzFlNGY5YTdiMGUx
NzIxNGFjNWEwMmEzMDc0Mjg5ZmMwNWY3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0x
NTU0LDE3ICsxNTU0LDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIENhCiAKICAgICBib29sIHJl
cGFpbnRFbnRpcmVDYW52YXMgPSBmYWxzZTsKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKG5v
cm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VGb3JDYW52YXMoKmltYWdl
LCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wdGlvbnMsIGNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMg
PSB0cnVlOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsK
ICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVk
RHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKICAgICAgICAgcmVwYWludEVudGlyZUNh
bnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VGb3JDYW52
YXMoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wdGlvbnMs
IGNvbG9yU3BhY2UoKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJlcGFpbnRFbnRp
cmVDYW52YXMgPSB0cnVlOwogICAgIH0gZWxzZQotICAgICAgICBjLT5kcmF3SW1hZ2VGb3JDYW52
YXMoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wdGlvbnMs
IGNvbG9yU3BhY2UoKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3B0aW9ucyk7CiAKICAgICBkaWREcmF3KHJlcGFp
bnRFbnRpcmVDYW52YXMsIG5vcm1hbGl6ZWREc3RSZWN0KTsKIApAQCAtMTgwOCwxMiArMTgwOCwx
MiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBvc2l0ZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbgogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAotc3Rh
dGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UpCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGNvbnRleHQuZHJhd0ltYWdlRm9yQ2FudmFzKGltYWdlLCBkZXN0LCBzcmMsIG9wdGlvbnMs
IGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
dGlvbnMpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXIm
IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0Nv
bnRleHQoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQpAQCAtMTg0NCw3ICsxODQ0LDcg
QEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpm
dWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWEKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0KTsKICAgICBidWZmZXItPmNvbnRleHQoKS5j
b25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKLSAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1h
Z2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgeyBDb21wb3NpdGVPcGVy
YXRvcjo6U291cmNlT3ZlciB9LCBjb2xvclNwYWNlKCkpOworICAgIGRyYXdJbWFnZVRvQ29udGV4
dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0
ZU9wZXJhdG9yOjpTb3VyY2VPdmVyIH0pOwogCiAgICAgY29tcG9zaXRlQnVmZmVyKCpidWZmZXIs
IGJ1ZmZlclJlY3QsIG9wKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYmU2
Y2VjNzgyNzc3OTRkZjU3ZDRmNWZjZjdmNGY3ZDJhNmUwM2FjMy4uMWVmYzZkNGMzZjUzZmIzN2E1
YzUyMDI0ODcyYjg4Zjc4ZjIzODc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKQEAg
LTI3NiwxMyArMjc2LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmUKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1JbWFnZURyYXdSZXN1bHQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlRm9yQ2FudmFzKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fcHJpbWFyeUNvbnRleHQuZHJhd0ltYWdlRm9yQ2FudmFzKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLSAgICBtX3Nl
Y29uZGFyeUNvbnRleHQuZHJhd0ltYWdlRm9yQ2FudmFzKGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCBvcHRpb25zLCBjYW52YXNDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
CiBJbWFnZURyYXdSZXN1bHQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
YXV0byByZXN1bHQgPSBtX3ByaW1hcnlDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMmRiODUwMTk0Y2Q4MWNjOTQ3MDQ3MzFmYTJkNjUxMjA0Njk5NjE4
ZC4uNWE0YzAwM2Q5OTFjOGVlZDI2Y2EyNzUxZTg2NWZmY2Q1ZmQyNjhjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaApAQCAtMTAwLDcgKzEwMCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pIGZpbmFsOwotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2VGb3JDYW52YXMoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkgZmluYWw7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1
bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCmluZGV4IDU3NDU0NDdjOGM1NGZmODhhOTM2NmY1MGZlYjM2NGQ3NzgwY2IwOGQuLmY2
ZmI4ZjkzYzg0ZjczYjZmZDJiZDk5ZTYzOGUyMzA2YjJmMzJkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTEzNyw4ICsxMzcs
OSBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJ
bWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAot
UmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJikKIHsKKyAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIHJlcXVl
c3RlZCBjb2xvclNwYWNlIGlzIG5vdCBlcXVhbCB0byBCaXRtYXBJbWFnZTo6Y29sb3JTcGFjZSgp
LgogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGViZjczZjBkYzVmMDExYWFjOGE0NzE3NTMxZDdkYjNi
ZTE5NDEyNzAuLmYyMzIxYzg1ZjE0N2MxYTNkNWQzM2QxN2Q1MzgzYmM1Y2IxYjYwYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTQy
LDcgKzE0Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIG92ZXJyaWRlOwog
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVy
cmlkZTsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24pIG92ZXJyaWRlOwogI2lmIFVT
RShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDUxOTNhNjZhZTk4YmIzMTRmZGIzZGFiNzIwZjI1YjViNzljNTVi
NjAuLmE1ZmNiYjI2YTRjODlhZDgyMThhZDFkNDc1Y2ExOGQxNjdiZGMxZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNjU1LDEyICs2NTUsNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIHJldHVybiBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlRm9yQ2FudmFzKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdGb3JDYW52YXMoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMsIGNhbnZhc0NvbG9yU3BhY2UpOwotfQot
CiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDgzY2U0ZDJkZmVj
MWRkNGEyMTZkYmYwOWQwNDE1OTI0Y2Q1MzYzM2IuLjlmNmNiZGJkMzExYTZhYzEyZDdhOWE4NTkz
MmE2NTFlOWQ2OWQxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MzAsOCArNDMwLDYgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2VGb3JDYW52YXMoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JT
cGFjZSk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3
VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdl
OjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGUzMmEzNmM2MDc2MTky
MTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUuLjEyNDk0NGVjMDc3MDIyMGUwZGMzYjJlYjY1MDY2
NTQ5YTFlNjc2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgSW1h
Z2U6OmRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4g
ZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0KLQogSW1hZ2VEcmF3
UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRT
aXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBp
eGVsU29saWRDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
aW5kZXggNDdlYTk4OWU5NmMzMDA0YWZjMzg4Y2FhN2JhZjcwZDdiMmM2YmFkZi4uODM4MjM3MmQ1
MmFiYjI4YzE3OGY3NDE3MWY5ZjAyZWI1YmUxZGQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAgICAgZW51
bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGls
ZSB9OwogCi0gICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBuYXRpdmVJbWFnZSgp
OyB9CiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUpIHsgcmV0dXJuIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTIwMSw3
ICsyMDEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5n
U291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgogICAg
IHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwotICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNhbnZhc0NvbG9yU3BhY2UpOwogICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDZiZmY4OTc2Yzc4YmNiZjFmNGMzMzAzN2FiZjdiYzUy
NWJkZjQ0ZGIuLjRkZDdmODBlMzc3Nzk4N2RjYjcwYzFhM2M4YTg3Y2Q4YTRmZDZmYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTY4LDE3ICsxNjgsNyBA
QCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50
U2l6ZShjdXJyZW50U2l6ZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0Zv
ckNhbnZhc0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRp
YWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1cm4gZHJhd0ZvckNvbnRh
aW5lckludGVybmFsKGNvbnRleHQsIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRp
YWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgY2FudmFzQ29sb3JTcGFj
ZSk7Ci19Ci0KIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIHJldHVybiBkcmF3Rm9yQ29udGFpbmVySW50
ZXJuYWwoY29udGV4dCwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdt
ZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7Ci19Ci0KLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5l
ckludGVybmFsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRh
aW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50
VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBpbnRlcm1lZGlhdGVDb2xvclNwYWNlKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjAyLDIzICsxOTIsMjUgQEAg
SW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb24KIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdt
ZW50KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0g
ZHJhd0ludGVybmFsKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucywgaW50ZXJt
ZWRpYXRlQ29sb3JTcGFjZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29u
dGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBvcHRpb25zKTsKIAogICAgIHNldEltYWdlT2JzZXJ2
ZXIob2JzZXJ2ZXIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFn
ZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKCkKLXsKLSAgICByZXR1cm4gbmF0aXZlSW1hZ2Uoc2l6
ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7Ci19Ci0KLVJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlKGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJl
Y3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBtX3BhZ2UtPnNldHRp
bmdzKCkuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpOworICAgIGF1dG8gcmVuZGVyaW5nTW9k
ZSA9IGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRl
ZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisKKyAgICBIb3N0V2luZG93KiBob3N0
V2luZG93ID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRl
ZENvbnRlbnRCb3goKSkKKyAgICAgICAgaG9zdFdpbmRvdyA9IGNvbnRlbnRSZW5kZXJlci0+aG9z
dFdpbmRvdygpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmlu
Z1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2lu
ZG93KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjI2LDkgKzIxOCw2IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlKGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hCiAgICAgc2V0SW1hZ2VP
YnNlcnZlcihudWxscHRyKTsKICAgICBzZXRDb250YWluZXJTaXplKHNpemUoKSk7CiAKLSAgICBh
dXRvIHNjYWxlRmFjdG9yID0gaW1hZ2VTaXplIC8gc291cmNlUmVjdC5zaXplKCk7Ci0gICAgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKS50cmFuc2xhdGUoLXNvdXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKnRoaXMsIEZsb2F0UG9pbnQoMCwgMCkpOwogCiAg
ICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CkBAIC0yNzEsMjcgKzI2MCwxMSBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RS
ZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ2Fu
dmFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2FudmFzQ29sb3JTcGFjZSkKLXsKLSAgICByZXR1
cm4gZHJhd0ludGVybmFsKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhbnZh
c0NvbG9yU3BhY2UpOwotfQotCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0g
ICAgcmV0dXJuIGRyYXdJbnRlcm5hbChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci19Ci0KLUltYWdlRHJhd1Jlc3VsdCBT
VkdJbWFnZTo6ZHJhd0ludGVybmFsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgaW50ZXJtZWRpYXRl
Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJh
d1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmICghY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRl
eHQoKSkgewotICAgICAgICAvLyBEaXNwbGF5IGxpc3QgZHJhd2luZyBjYW4ndCBoYW5kbGUgYXJi
aXRyYXJ5IERPTSBjb250ZW50LgotICAgICAgICAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzQ4OiBSZW1vdmUgdGhpcyB3aGVuIGl0IGNhbi4KLSAg
ICAgICAgcmV0dXJuIGRyYXdBc05hdGl2ZUltYWdlKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMsIGludGVybWVkaWF0ZUNvbG9yU3BhY2UpOwotICAgIH0KLQogICAgIFJlZlB0ciB2
aWV3ID0gZnJhbWVWaWV3KCk7CiAgICAgQVNTRVJUKHZpZXcpOwogCkBAIC0zNDIsNTIgKzMxNSw2
IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ludGVybmFsKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkRHJhdzsKIH0KIAotCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdBc05hdGl2ZUlt
YWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBBU1NFUlQo
IWNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgYXV0byB0cmFuc2Zvcm0gPSBj
b250ZXh0LmdldENUTSgpOwotICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAg
ICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgLy8gQ29uc2lk
ZXIgdGhlIHNjYWxpbmcgb2YgdGhlIGNvbnRleHQgb25seS4KLSAgICBhdXRvIGNvbnRleHRTY2Fs
ZSA9IEZsb2F0U2l6ZSh0cmFuc2Zvcm0ueFNjYWxlKCksIHRyYW5zZm9ybS55U2NhbGUoKSk7Ci0g
ICAgYXV0byBzY2FsZWREZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOwotICAgIHNjYWxlZERlc3Rp
bmF0aW9uLnNjYWxlKGNvbnRleHRTY2FsZSk7Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRv
IGNsYW1wIHRoZSB0ZW1wb3JhcnkgSW1hZ2VCdWZmZXIuCi0gICAgYXV0byBjbGFtcGluZ1NjYWxl
ID0gRmxvYXRTaXplKDEsIDEpOwotICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhz
Y2FsZWREZXN0aW5hdGlvbi5zaXplKCksIGNsYW1waW5nU2NhbGUpOwotCi0gICAgLy8gY29udGV4
dFNjYWxlICogY2xhbXBpbmdTY2FsZSBpcyB0aGUgc2NhbGluZyBmYWN0b3IuCi0gICAgYXV0byBz
Y2FsZSA9IGNvbnRleHRTY2FsZSAqIGNsYW1waW5nU2NhbGU7Ci0gICAgc2NhbGVkRGVzdGluYXRp
b24uc2NhbGUoY2xhbXBpbmdTY2FsZSk7Ci0KLSAgICBhdXRvIHJlY3RJbk5hdGl2ZUltYWdlID0g
RmxvYXRSZWN0IHsgeyB9LCBmbG9vcmVkSW50U2l6ZShzY2FsZWREZXN0aW5hdGlvbi5zaXplKCkp
IH07Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGhpcy0+bmF0aXZlSW1hZ2UocmVjdEluTmF0
aXZlSW1hZ2Uuc2l6ZSgpLCBzb3VyY2UsIGNvbG9yU3BhY2UpOwotICAgIGlmICghbmF0aXZlSW1h
Z2UpCi0gICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7Ci0KLSAgICBh
dXRvIGxvY2FsSW1hZ2VQYWludGluZ09wdGlvbnMgPSBvcHRpb25zOwotICAgIEltYWdlT3JpZW50
YXRpb246Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigpOwot
ICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbjo6RnJv
bUltYWdlKQotICAgICAgICBsb2NhbEltYWdlUGFpbnRpbmdPcHRpb25zID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMob3B0aW9ucywgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb246Ok5vbmUpOwot
Ci0gICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHN5c3RlbSB0byByZWZsZWN0IHRoZSBzY2Fs
aW5nIGZhY3Rvci4KLSAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGUud2lkdGgo
KSwgMSAvIHNjYWxlLmhlaWdodCgpKSk7Ci0gICAgCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm5hdGl2ZUltYWdlLCByZWN0SW5OYXRpdmVJbWFnZS5zaXplKCksIHNjYWxlZERlc3RpbmF0
aW9uLCByZWN0SW5OYXRpdmVJbWFnZSwgbG9jYWxJbWFnZVBhaW50aW5nT3B0aW9ucyk7Ci0gICAg
Ci0gICAgY29udGV4dC5zY2FsZShzY2FsZSk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQot
ICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwotCi0gICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKLX0KLQogUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRk
ZWRDb250ZW50Qm94KCkgY29uc3QKIHsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9v
dEVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggNmNk
YmExYzMwODgyMGE1MWQ1NjEwMWE3ZDUzNGI0NDNlMWM3NTNkMS4uZjgwMzFlMGIwY2I4MzZlMTU0
Y2U4NzFkOTE4NDRmMjA3ZThkYjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgKQEAgLTg2LDE5ICs4NiwxMyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgZmluYWw7Ci0gICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZShjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnRBbmltYXRp
b25UaW1lckZpcmVkKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTVkdJbWFnZShJ
bWFnZU9ic2VydmVyJik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7Ci0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd0FzTmF0aXZlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVy
U2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkws
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
Rm9yQ29udGFpbmVySW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNv
bnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdt
ZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwot
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ZvckNhbnZhc0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJM
JiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSk7CiAgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpv
b20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1l
bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuY3BwCmluZGV4IDIwMjAwMzRjMjY2MGZlNGEzZTEyNGEyODdjNTRkMDk4
NGQzODM1MjEuLmFkOTNmNTE0MTUzOWMwOTdiNTAzMjBjYTQ4NWNmMjhlZDBmZWRhMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICByZXR1
cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1f
Y29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdG
b3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjYW52YXNDb2xvclNwYWNlKQotewotICAg
IHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ2FudmFzRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29u
dGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucywgY2FudmFzQ29sb3JTcGFjZSk7Ci19Ci0KIHZvaWQgU1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZDM3ZTE3NTJmMzk1ZGFkM2ViNmIyMzBmZTJhNGExMDg4
NGI3OGVlZC4uNGExZjZjMzVhM2ZmYjA3ZTY1ZDUzMTdlYzk1ZmE3MTBmOWI4NDY3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgK
QEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7Ci0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdGb3JDYW52YXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UpIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggYWM2Y2Q2ZTE2ZWViY2FlZmYxMzhkZjA1M2MzODAxODMxZTEyNWUxNi4uOWY4ZDRk
ODBhNTA1ZDcxYmI2NzMyZTAwZWRmMmVmMTdmMzhjNGI0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMTYgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBFbmFibGUgZHJhd2lu
ZyB0aGUgU1ZHSW1hZ2UgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NDgKKyAgICAgICAgcmRhcjovLzgwNTgyNjk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBz
dWItdGVzdCB3YXMgb3JpZ2luYWxseSBmYWlsaW5nIGFuZCB0aGlzIGlzIHdoeSB0aGUgYnVnCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDEgd2Fz
IGZpbGVkLgorCisgICAgICAgIEFmdGVyIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNzk3MjIvd2Via2l0LCBpdCBnb3QgZml4ZWQgYmVjYXVzZQorICAgICAgICBTVkdJbWFnZSB3
YXMgcmVuZGVyZWQgdG8gYSBOYXRpdmVJbWFnZSBhbmQgdGhlIE5hdGl2ZUltYWdlIGlzIHJlbmRl
cmVkCisgICAgICAgIHRvIHRoZSBkZXN0aW5hdGlvbiBHcmFwaGljc0NvbnRleHQuIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKCkKKyAgICAgICAgaGFuZGxlcyB0aGUgaW1hZ2Ugb3Jp
ZW50YXRpb24gcHJvcGVybHkuCisKKyAgICAgICAgQmVjYXVzZSB0aGlzIGNoYW5nZSB3aWxsIGJl
IHJldmVydGVkLCB0aGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBoYXMgdG8gYmUKKyAgICAgICAgcmVi
YXNlbGluZWQgd2l0aCB0aGUgZmFpbHVyZSBtZXNzYWdlLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL2NyZWF0ZUlt
YWdlQml0bWFwLWZsaXBZLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMi0xNSAgTmlrb2xhb3MgTW91
Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgcGFy
c2luZyBhbmQgYW5pbWF0aW9uIHN1cHBvcnQgZm9yIG9mZnNldCBzaG9ydGhhbmQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZmxpcFktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1m
bGlwWS1leHBlY3RlZC50eHQKaW5kZXggODBmMDc5Y2JiNzkwNGIwZmZmZWYyMmY3YzgyNThlYWNi
NTRmNTE2My4uZmVjMjMxMDA2NjgzMzQxMTc3ODM0ZGY2N2VhM2E3NTMxZjQ0ZmIxNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1mbGlwWS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJp
dG1hcC1mbGlwWS1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1MgY3JlYXRlSW1hZ2VC
aXRtYXAgZnJvbSBhbiBIVE1MVmlkZW9FbGVtZW50IGZyb20gYSBkYXRhIFVSTCBpbWFnZU9yaWVu
dGF0aW9uCiBQQVNTIGNyZWF0ZUltYWdlQml0bWFwIGZyb20gYSBiaXRtYXAgSFRNTEltYWdlRWxl
bWVudCBpbWFnZU9yaWVudGF0aW9uOiAibm9uZSIsIGFuZCBkcmF3SW1hZ2Ugb24gdGhlIGNyZWF0
ZWQgSW1hZ2VCaXRtYXAKIFBBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgZnJvbSBhIGJpdG1hcCBIVE1M
SW1hZ2VFbGVtZW50IGltYWdlT3JpZW50YXRpb246ICJmbGlwWSIsIGFuZCBkcmF3SW1hZ2Ugb24g
dGhlIGNyZWF0ZWQgSW1hZ2VCaXRtYXAKIFBBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgZnJvbSBhIHZl
Y3RvciBIVE1MSW1hZ2VFbGVtZW50IGltYWdlT3JpZW50YXRpb246ICJub25lIiwgYW5kIGRyYXdJ
bWFnZSBvbiB0aGUgY3JlYXRlZCBJbWFnZUJpdG1hcAotUEFTUyBjcmVhdGVJbWFnZUJpdG1hcCBm
cm9tIGEgdmVjdG9yIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2VPcmllbnRhdGlvbjogImZsaXBZIiwg
YW5kIGRyYXdJbWFnZSBvbiB0aGUgY3JlYXRlZCBJbWFnZUJpdG1hcAorRkFJTCBjcmVhdGVJbWFn
ZUJpdG1hcCBmcm9tIGEgdmVjdG9yIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2VPcmllbnRhdGlvbjog
ImZsaXBZIiwgYW5kIGRyYXdJbWFnZSBvbiB0aGUgY3JlYXRlZCBJbWFnZUJpdG1hcCBhc3NlcnRf
YXBwcm94X2VxdWFsczogUmVkIGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICg1LCA1KSBleHBlY3Rl
ZCAwICsvLSAzIGJ1dCBnb3QgMjU1CiBGQUlMIGNyZWF0ZUltYWdlQml0bWFwIGZyb20gYSBiaXRt
YXAgU1ZHSW1hZ2VFbGVtZW50IGltYWdlT3JpZW50YXRpb246ICJub25lIiwgYW5kIGRyYXdJbWFn
ZSBvbiB0aGUgY3JlYXRlZCBJbWFnZUJpdG1hcCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIGNy
ZWF0ZUltYWdlQml0bWFwIGZyb20gYSBiaXRtYXAgU1ZHSW1hZ2VFbGVtZW50IGltYWdlT3JpZW50
YXRpb246ICJmbGlwWSIsIGFuZCBkcmF3SW1hZ2Ugb24gdGhlIGNyZWF0ZWQgSW1hZ2VCaXRtYXAg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBjcmVhdGVJbWFnZUJpdG1hcCBmcm9tIGEgdmVjdG9y
IFNWR0ltYWdlRWxlbWVudCBpbWFnZU9yaWVudGF0aW9uOiAibm9uZSIsIGFuZCBkcmF3SW1hZ2Ug
b24gdGhlIGNyZWF0ZWQgSW1hZ2VCaXRtYXAgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>