<?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>183892</bug_id>
          
          <creation_ts>2018-03-22 02:08:12 -0700</creation_ts>
          <short_desc>[GTK][WPE] Avoid software color conversion inside BitmapTextureGL</short_desc>
          <delta_ts>2018-03-26 06:03:02 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>noam</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1408315</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-22 02:08:12 -0700</bug_when>
    <thetext>Currently, when used to upload cairo contents to a texture, BitmapTextureGL can use 2 formats: BGRA and RGBA. Ideally we should use BGRA because that&apos;s the internal format cairo uses and we don&apos;t need to perform any conversion to upload the data. But in order to use BGRA, we need to be using OpenGL or GLES2 with the extension GL_EXT_texture_format_BGRA8888. If none of that happens (like several embedded devices), we fallback to RGBA, where we need to swap the R and B components before uploading the data.

To avoid this conversion what we can do is to stop using BGRA and always use RGBA, and tell the shader to perform a color conversion when drawing the texture (now that the shader has the capability to do that). This also simplifies the code as we don&apos;t need to handle the BGRA case, don&apos;t need to check for the GL_EXT_texture_format_BGRA8888 extension, and we don&apos;t need to keep separate pools for RGBA and BGRA textures in BitmapTexturePool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408320</commentid>
    <comment_count>1</comment_count>
      <attachid>336269</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-22 02:28:57 -0700</bug_when>
    <thetext>Created attachment 336269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408338</commentid>
    <comment_count>2</comment_count>
      <attachid>336269</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-22 05:59:42 -0700</bug_when>
    <thetext>Comment on attachment 336269
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:90
&gt; +void BitmapTextureGL::updateContents(const void* srcData, const IntRect&amp; targetRect, const IntPoint&amp; sourceOffset, int bytesPerLine, UpdateContentsFlag)

Anything preventing UpdateContentsFlag removal? Or will you remove it in a following patch, adjusting all the call sites?

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:95
&gt; +    m_textureMapperColorConvertFlags = TextureMapperGL::ShouldConvertTextureBGRAToRGBA;

The flag value should be ORed into the variable.

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h:95
&gt; +    TextureMapperGL::Flags m_textureMapperColorConvertFlags { TextureMapperGL::NoFlag };

m_colorConvertFlags is verbose enough IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408343</commentid>
    <comment_count>3</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-22 07:13:35 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #2)
&gt; Comment on attachment 336269 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336269&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:90
&gt; &gt; +void BitmapTextureGL::updateContents(const void* srcData, const IntRect&amp; targetRect, const IntPoint&amp; sourceOffset, int bytesPerLine, UpdateContentsFlag)
&gt; 
&gt; Anything preventing UpdateContentsFlag removal? Or will you remove it in a
&gt; following patch, adjusting all the call sites?

I can remove it, yes :)

&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:95
&gt; &gt; +    m_textureMapperColorConvertFlags = TextureMapperGL::ShouldConvertTextureBGRAToRGBA;
&gt; 
&gt; The flag value should be ORed into the variable.

Not really necessary. This variable will only be ShouldConvertTextureBGRAToRGBA or NoFlag, there aren&apos;t other values involved, so the OR would produce the same result.

&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h:95
&gt; &gt; +    TextureMapperGL::Flags m_textureMapperColorConvertFlags { TextureMapperGL::NoFlag };
&gt; 
&gt; m_colorConvertFlags is verbose enough IMO.

Sure, I&apos;ll change it.


I&apos;ll give it a while before uploading the new patch as the wincairo bot is failing to apply the patches, and that&apos;s precisely the one I can break with this change, so I wanna be sure that it works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408640</commentid>
    <comment_count>4</comment_count>
      <attachid>336361</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-23 02:44:37 -0700</bug_when>
    <thetext>Created attachment 336361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408661</commentid>
    <comment_count>5</comment_count>
      <attachid>336364</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-23 04:51:53 -0700</bug_when>
    <thetext>Created attachment 336364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408681</commentid>
    <comment_count>6</comment_count>
      <attachid>336368</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-23 06:32:25 -0700</bug_when>
    <thetext>Created attachment 336368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408682</commentid>
    <comment_count>7</comment_count>
      <attachid>336369</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-23 06:47:38 -0700</bug_when>
    <thetext>Created attachment 336369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408704</commentid>
    <comment_count>8</comment_count>
      <attachid>336369</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 08:29:35 -0700</bug_when>
    <thetext>Comment on attachment 336369
Patch

Clearing flags on attachment: 336369

Committed r229895: &lt;https://trac.webkit.org/changeset/229895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408705</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 08:29:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408731</commentid>
    <comment_count>10</comment_count>
      <attachid>336369</attachid>
    <who name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</who>
    <bug_when>2018-03-23 09:50:55 -0700</bug_when>
    <thetext>Comment on attachment 336369
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:135
&gt; +    glTexSubImage2D(GL_TEXTURE_2D, 0, targetRect.x(), targetRect.y(), targetRect.width(), targetRect.height(), m_format, m_type, srcData);

Should this `srcData` be `data` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409271</commentid>
    <comment_count>11</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-26 06:03:02 -0700</bug_when>
    <thetext>(In reply to Ms2ger from comment #10)
&gt; Comment on attachment 336369 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336369&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:135
&gt; &gt; +    glTexSubImage2D(GL_TEXTURE_2D, 0, targetRect.x(), targetRect.y(), targetRect.width(), targetRect.height(), m_format, m_type, srcData);
&gt; 
&gt; Should this `srcData` be `data` instead?

Indeed!!! Good catch!!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336269</attachid>
            <date>2018-03-22 02:28:57 -0700</date>
            <delta_ts>2018-03-23 02:44:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183892-20180322102856.patch</filename>
            <type>text/plain</type>
            <size>20739</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY0ZmZlNDk5YTgwMzY0
N2VjMmQxNGNkOGVlNjg4YTU1NGNhMmNkZi4uNGQ0OWQwOGE0YjM0N2Q0MTI4ZjkxZTUxMDVlMGYx
YjY5YmQ0MjRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTAzLTIyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9p
ZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsd2F5cyB1c2UgUkdC
QSBmb3JtYXQgb24gQml0bWFwVGV4dHVyZUdMICh3aGVuIG5vIG90aGVyIGZvcm1hdCBpcyBzcGVj
aWZpY2FsbHkgcmVxdWVzdGVkKS4gV2hlbgorICAgICAgICB0aGUgdGV4dHVyZSBpcyB1cGRhdGVk
IGZyb20gQkdSQSBjb250ZW50LCB1c2UgYSBmbGFnIHRvIGluZGljYXRlIHRoZSBzaGFkZXIgdG8g
cGVyZm9ybSBhIGNvbG9yCisgICAgICAgIGNvbnZlcnNpb24gZHVyaW5nIHRoZSBwYWludGluZy4g
VGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBzd2FwIHRoZSBSIGFuZCBCIGNvbXBvbmVudHMgb24g
dGhlIENQVS4KKyAgICAgICAgQWxzbywgcmVtb3ZlIG9uZSBvZiB0aGUgbGlzdHMgaW4gQml0bWFw
VGV4dHVyZVBvb2wgYXMgbm93IGFsbCBvZiB0aGVtIGhhdmUgdGhlIHNhbWUgZm9ybWF0LgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZUdMOjpkaWRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN3aXp6bGVCR1JBVG9SR0JBKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6
bGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dGV4dHVyZU1h
cHBlckNvbG9yQ29udmVydEZsYWdzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZVBvb2w6OmFjcXVpcmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRl
eHR1cmVQb29sOjpyZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lckZpcmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuaDoKKyAgICAgICAgV2Ug
a2VwdCBhIGxpc3Qgb2YgdXNlZCB0ZXh0dXJlcyB3aXRoIFJHQkEgZm9ybWF0IHRvIHVzZSBhcyBG
Qk8gYXR0YWNobWVudC4gQXMgYWxsIHRoZQorICAgICAgICB0ZXh0dXJlcyB3aWxsIG5vdyBiciBS
R0JBLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgbGlzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlcy5oOgorICAgICAgICBSZW1vdmVkIHRoZSBjb2RlIHRvIGNoZWNrIGZvciB0aGUgR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGV4dGVuc2lvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50SW50b1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorCiAyMDE4LTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVncmVzc2lvbihyMjI5ODI4KTogV2ViS2l0Lk5vSGlzdG9yeUl0ZW1TY3JvbGxUb0ZyYWdt
ZW50IEFQSSB0ZXN0IGlzIGZhaWxpbmcgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAppbmRleCA2NmM4ODgy
NWI1YjU0MmQwMDJhODE4ZTUzMWMxZTVhZjE1OTkxMjVmLi4wNGVjODM3NzhhZDhkNzg1ZmYyOTYy
ZjY5NzIwZTQ4MzZkOGZkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVi
bGljOgogICAgIGVudW0gRmxhZyB7CiAgICAgICAgIE5vRmxhZyA9IDAsCiAgICAgICAgIFN1cHBv
cnRzQWxwaGEgPSAweDAxLAotICAgICAgICBGQk9BdHRhY2htZW50ID0gMHgwMgogICAgIH07CiAK
ICAgICBlbnVtIFVwZGF0ZUNvbnRlbnRzRmxhZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4
IGE0MjA5YmMwODkyNDc0OTE0MmU1MTg2Zjg2YThkNzlhOWI5Y2JhM2YuLjQ4NGMyMzUzOWJhNzNj
MzNlNWEwOWYxODA0Njk4MDg0YzRkMTUxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIEJpdG1hcFRleHR1cmVHTCogdG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4
dHVyZSogdGV4dHVyZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4o
dGV4dHVyZSk7CiB9CiAKLUJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZs
YWdzIGZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKK0JpdG1hcFRleHR1cmVHTDo6Qml0bWFw
VGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0
dHJpYnV0ZXMsIGNvbnN0IEZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fY29u
dGV4dEF0dHJpYnV0ZXMoY29udGV4dEF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGludGVybmFsRm9y
bWF0ICE9IEdMX0RPTlRfQ0FSRSkgewpAQCAtNjQsMzAgKzY0LDcgQEAgQml0bWFwVGV4dHVyZUdM
OjpCaXRtYXBUZXh0dXJlR0woY29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzJiBj
b250ZXh0QXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEZCT0F0
dGFjaG1lbnQpCi0gICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4
OCBpcyBzdXBwb3J0ZWQgaW4gdGhlIE9wZW5HTEVTCi0gICAgICAgIC8vIGludGVybmFsIGFuZCBl
eHRlcm5hbCBmb3JtYXRzIG5lZWQgdG8gYmUgQkdSQQotICAgICAgICBtX2ludGVybmFsRm9ybWF0
ID0gR0xfUkdCQTsKLSAgICAgICAgbV9mb3JtYXQgPSBHTF9CR1JBOwotICAgICAgICBpZiAobV9j
b250ZXh0QXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgICAgICBpZiAobV9j
b250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c0JHUkE4ODg4KQotICAgICAgICAgICAgICAgIG1faW50
ZXJuYWxGb3JtYXQgPSBHTF9CR1JBOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1fZm9ybWF0ID0gR0xfUkdCQTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQg
c3dpenpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGlu
dCBzdHJpZGUgPSAwKQotewotICAgIHN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IHJlY3Qud2lk
dGgoKTsKLSAgICBmb3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5KSB7
Ci0gICAgICAgIHVpbnQzMl90KiBwID0gZGF0YSArIHkgKiBzdHJpZGU7Ci0gICAgICAgIGZvciAo
aW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyArK3gpCi0gICAgICAgICAgICBwW3hd
ID0gKChwW3hdIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocFt4XSA+PiAxNikgJiAweGZmKSB8IChw
W3hdICYgMHhmZjAwZmYwMCk7Ci0gICAgfQorICAgIG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1h
dCA9IEdMX1JHQkE7CiB9CiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCkBAIC05
Niw2ICs3Myw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1faWQpOwogCiAgICAgbV9zaG91bGRDbGVhciA9IHRydWU7CisgICAg
bV90ZXh0dXJlTWFwcGVyQ29sb3JDb252ZXJ0RmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6Ok5vRmxh
ZzsKICAgICBpZiAobV90ZXh0dXJlU2l6ZSA9PSBjb250ZW50U2l6ZSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTEwOSwzMSArODcsMTMgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmRpZFJlc2V0
KCkKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbEZvcm1hdCwg
bV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBtX2Zvcm1h
dCwgbV90eXBlLCAwKTsKIH0KIAotdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
Tm9Td2l6emxlKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIHVuc2lnbmVk
IGJ5dGVzUGVyUGl4ZWwsIEdMdWludCBnbEZvcm1hdCkKK3ZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRh
dGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgLy8gRm9yIEVTIGRyaXZlcnMgdGhhdCBkb24ndCBzdXBw
b3J0IHN1Yi1pbWFnZXMuCi0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNVbnBhY2tTdWJpbWFnZSA9
IG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZTsKLQotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7Ci0KLSAgICBpZiAoY29udGV4dFN1cHBvcnRz
VW5wYWNrU3ViaW1hZ2UpIHsKLSAgICAgICAgLy8gVXNlIHRoZSBPcGVuR0wgc3ViLWltYWdlIGV4
dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2YWlsYWJsZS4KLSAgICAgICAgZ2xQaXhl
bFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhl
bCk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291cmNlT2Zm
c2V0LnkoKSk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBz
b3VyY2VPZmZzZXQueCgpKTsKLSAgICB9Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRo
KCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBtX3R5cGUsIHNyY0RhdGEpOwotCi0g
ICAgaWYgKGNvbnRleHRTdXBwb3J0c1VucGFja1N1YmltYWdlKSB7Ci0gICAgICAgIGdsUGl4ZWxT
dG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOwotICAgICAgICBnbFBpeGVsU3RvcmVpKEdM
X1VOUEFDS19TS0lQX1JPV1MsIDApOwotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19T
S0lQX1BJWEVMUywgMCk7Ci0gICAgfQotfQorICAgIC8vIFdlIGFyZSB1cGRhdGluZyBhIHRleHR1
cmUgd2l0aCBmb3JtYXQgUkdCQSB3aXRoIGNvbnRlbnQgZnJvbSBhIGJ1ZmZlciB0aGF0IGhhcyBC
R1JBIGZvcm1hdC4gSW5zdGVhZCBvZiB0dXJuaW5nIEJHUkEKKyAgICAvLyBpbnRvIFJHQkEgYW5k
IHRoZW4gdXBsb2FkaW5nIGl0LCB3ZSB1cGxvYWQgaXQgYXMgaXMuIFRoaXMgY2F1c2VzIHRoZSB0
ZXh0dXJlIGZvcm1hdCB0byBiZSBSR0JBIGJ1dCB0aGUgY29udGVudCB0byBiZSBCR1JBLAorICAg
IC8vIHNvIHdlIG1hcmsgdGhlIHRleHR1cmUgdG8gY29udmVydCB0aGUgY29sb3JzIHdoZW4gcGFp
bnRpbmcgdGhlIHRleHR1cmUuCisgICAgbV90ZXh0dXJlTWFwcGVyQ29sb3JDb252ZXJ0RmxhZ3Mg
PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZENvbnZlcnRUZXh0dXJlQkdSQVRvUkdCQTsKIAotdm9p
ZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNv
bnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGlu
dCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCi17
CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0OwpAQCAtMTQ2LDcgKzEwNiw3IEBAIHZvaWQgQml0bWFw
VGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSCiAgICAgICAgICYmICEoYnl0ZXNQZXJMaW5lID09IHN0YXRpY19jYXN0PGlu
dD4odGFyZ2V0UmVjdC53aWR0aCgpICogYnl0ZXNQZXJQaXhlbCkgJiYgYWRqdXN0ZWRTb3VyY2VP
ZmZzZXQgPT0gSW50UG9pbnQ6Onplcm8oKSk7CiAKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURh
dGEgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgKChtX2Zvcm1hdCA9PSBHTF9SR0JBICYmIHVwZGF0ZUNv
bnRlbnRzRmxhZyA9PSBVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSkgfHwgcmVx
dWlyZVN1YkltYWdlQnVmZmVyKSB7CisgICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewog
ICAgICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRS
ZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7CiAgICAgICAgIGRhdGEgPSB0ZW1wb3JhcnlE
YXRhLmRhdGEoKTsKICAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihzcmNEYXRhKTsKQEAgLTE2MywxMCArMTIzLDIyIEBAIHZvaWQgQml0bWFwVGV4dHVy
ZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSCiAgICAgICAgIGFkanVzdGVkU291cmNlT2Zmc2V0ID0gSW50UG9pbnQoMCwgMCk7CiAg
ICAgfQogCi0gICAgaWYgKG1fZm9ybWF0ID09IEdMX1JHQkEpCi0gICAgICAgIHN3aXp6bGVCR1JB
VG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4oZGF0YSksIEludFJlY3QoYWRq
dXN0ZWRTb3VyY2VPZmZzZXQsIHRhcmdldFJlY3Quc2l6ZSgpKSwgYnl0ZXNQZXJMaW5lIC8gYnl0
ZXNQZXJQaXhlbCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKTsKIAot
ICAgIHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGRhdGEsIHRhcmdldFJlY3QsIGFkanVzdGVkU291
cmNlT2Zmc2V0LCBieXRlc1BlckxpbmUsIGJ5dGVzUGVyUGl4ZWwsIG1fZm9ybWF0KTsKKyAgICBp
ZiAobV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c1VucGFja1N1YmltYWdlKSB7CisgICAgICAg
IC8vIFVzZSB0aGUgT3BlbkdMIHN1Yi1pbWFnZSBleHRlbnNpb24sIG5vdyB0aGF0IHdlIGtub3cg
aXQncyBhdmFpbGFibGUuCisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5H
VEgsIGJ5dGVzUGVyTGluZSAvIGJ5dGVzUGVyUGl4ZWwpOworICAgICAgICBnbFBpeGVsU3RvcmVp
KEdMX1VOUEFDS19TS0lQX1JPV1MsIGFkanVzdGVkU291cmNlT2Zmc2V0LnkoKSk7CisgICAgICAg
IGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBhZGp1c3RlZFNvdXJjZU9mZnNl
dC54KCkpOworICAgIH0KKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0
YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0
UmVjdC5oZWlnaHQoKSwgbV9mb3JtYXQsIG1fdHlwZSwgc3JjRGF0YSk7CisKKyAgICBpZiAobV9j
b250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c1VucGFja1N1YmltYWdlKSB7CisgICAgICAgIGdsUGl4
ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOworICAgICAgICBnbFBpeGVsU3RvcmVp
KEdMX1VOUEFDS19TS0lQX1JPV1MsIDApOworICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFD
S19TS0lQX1BJWEVMUywgMCk7CisgICAgfQogfQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBk
YXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQpAQCAtMjMyLDcgKzIwNCw3IEBAIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJl
R0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgICAg
ICBib29sIGxhc3QgPSAoaSA9PSBmaWx0ZXJzLnNpemUoKSAtIDEpICYmIChqID09IG51bVBhc3Nl
cyAtIDEpOwogICAgICAgICAgICAgaWYgKCFsYXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFp
bnRlcm1lZGlhdGVTdXJmYWNlKQotICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJm
YWNlID0gdGV4bWFwR0wuYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpLCBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwgQml0bWFwVGV4dHVyZTo6RkJPQXR0YWNobWVudCk7
CisgICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZVN1cmZhY2UgPSB0ZXhtYXBHTC5hY3F1
aXJlVGV4dHVyZUZyb21Qb29sKGNvbnRlbnRTaXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEpOwogICAgICAgICAgICAgICAgIHRleG1hcEdMLmJpbmRTdXJmYWNlKGludGVybWVkaWF0
ZVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXgg
NzQwOTBhNGRkMmJjMjRlYzg5ODVmMGRhYjBkODllNmFmZmJkZWZiYy4uOTA5Y2ViYTNiZWI2NjY3
OTdlYTRjNTc5NWVhNTZkZjViOTVkZGViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTcsNyAr
NTcsNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZVNpemU7IH0KICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFBvaW50JiwgVXBkYXRlQ29udGVudHNGbGFnKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0
ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenps
ZShjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291
cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwg
R0x1aW50IGdsRm9ybWF0ID0gR0xfUkdCQSk7CiAgICAgYm9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1
cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYp
IG92ZXJyaWRlOwpAQCAtNzksNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvcHlGcm9t
RXh0ZXJuYWxUZXh0dXJlKEdMdWludCB0ZXh0dXJlSUQpOwogCisgICAgVGV4dHVyZU1hcHBlckdM
OjpGbGFncyB0ZXh0dXJlTWFwcGVyQ29sb3JDb252ZXJ0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVNYXBwZXJDb2xvckNvbnZlcnRGbGFnczsgfQorCiBwcml2YXRlOgogICAgIEJpdG1h
cFRleHR1cmVHTChjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmLCBjb25zdCBG
bGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogCkBAIC05MSw2ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyIHsgdHJ1ZSB9OwogICAgIENsaXBTdGFjayBtX2NsaXBT
dGFjazsKICAgICBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMgbV9jb250ZXh0QXR0cmli
dXRlczsKKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fdGV4dHVyZU1hcHBlckNvbG9yQ29u
dmVydEZsYWdzIHsgVGV4dHVyZU1hcHBlckdMOjpOb0ZsYWcgfTsKIAogICAgIHZvaWQgY2xlYXJJ
Zk5lZWRlZCgpOwogICAgIHZvaWQgY3JlYXRlRmJvSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZVBvb2wuY3BwCmluZGV4IDc1ZDRhZTY5NzQ4ZjJlM2I0MzRkMTU1NmQ2NDY4ZTg1M2ExZjVmMDgu
LjgxMjIwNDg1MzZkM2FhNDg3NTUzOTQwNmRhNzQ1OWM3ZTAxNzg1ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVQb29sLmNwcApAQCAtNDYsMTQgKzQ2LDEyIEBAIEJpdG1hcFRleHR1cmVQb29sOjpCaXRt
YXBUZXh0dXJlUG9vbChjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmIGNvbnRl
CiAKIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlUG9vbDo6YWNxdWlyZVRleHR1
cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3Mp
CiB7Ci0gICAgVmVjdG9yPEVudHJ5PiYgbGlzdCA9IGZsYWdzICYgQml0bWFwVGV4dHVyZTo6RkJP
QXR0YWNobWVudCA/IG1fYXR0YWNobWVudFRleHR1cmVzIDogbV90ZXh0dXJlczsKLQotICAgIEVu
dHJ5KiBzZWxlY3RlZEVudHJ5ID0gc3RkOjpmaW5kX2lmKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQo
KSwKKyAgICBFbnRyeSogc2VsZWN0ZWRFbnRyeSA9IHN0ZDo6ZmluZF9pZihtX3RleHR1cmVzLmJl
Z2luKCksIG1fdGV4dHVyZXMuZW5kKCksCiAgICAgICAgIFsmc2l6ZV0oRW50cnkmIGVudHJ5KSB7
IHJldHVybiBlbnRyeS5tX3RleHR1cmUtPnJlZkNvdW50KCkgPT0gMSAmJiBlbnRyeS5tX3RleHR1
cmUtPnNpemUoKSA9PSBzaXplOyB9KTsKIAotICAgIGlmIChzZWxlY3RlZEVudHJ5ID09IGxpc3Qu
ZW5kKCkpIHsKLSAgICAgICAgbGlzdC5hcHBlbmQoRW50cnkoY3JlYXRlVGV4dHVyZShmbGFncykp
KTsKLSAgICAgICAgc2VsZWN0ZWRFbnRyeSA9ICZsaXN0Lmxhc3QoKTsKKyAgICBpZiAoc2VsZWN0
ZWRFbnRyeSA9PSBtX3RleHR1cmVzLmVuZCgpKSB7CisgICAgICAgIG1fdGV4dHVyZXMuYXBwZW5k
KEVudHJ5KGNyZWF0ZVRleHR1cmUoZmxhZ3MpKSk7CisgICAgICAgIHNlbGVjdGVkRW50cnkgPSAm
bV90ZXh0dXJlcy5sYXN0KCk7CiAgICAgfQogCiAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkVGV4
dHVyZXMoKTsKQEAgLTcxLDIyICs2OSwxNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVQb29sOjpzY2hl
ZHVsZVJlbGVhc2VVbnVzZWRUZXh0dXJlcygpCiAKIHZvaWQgQml0bWFwVGV4dHVyZVBvb2w6OnJl
bGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQoKQogeworICAgIGlmIChtX3RleHR1cmVzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRGVsZXRlIGVudHJpZXMsIHdoaWNo
IGhhdmUgYmVlbiB1bnVzZWQgaW4gcmVsZWFzZVVudXNlZFNlY29uZHNUb2xlcmFuY2UuCiAgICAg
TW9ub3RvbmljVGltZSBtaW5Vc2VkVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gcmVsZWFz
ZVVudXNlZFNlY29uZHNUb2xlcmFuY2U7CiAKLSAgICBpZiAoIW1fdGV4dHVyZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fdGV4dHVyZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZtaW5Vc2VkVGltZV0o
Y29uc3QgRW50cnkmIGVudHJ5KSB7Ci0gICAgICAgICAgICByZXR1cm4gZW50cnkuY2FuQmVSZWxl
YXNlZChtaW5Vc2VkVGltZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGlmICghbV9hdHRh
Y2htZW50VGV4dHVyZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fYXR0YWNobWVudFRleHR1cmVz
LnJlbW92ZUFsbE1hdGNoaW5nKFsmbWluVXNlZFRpbWVdKGNvbnN0IEVudHJ5JiBlbnRyeSkgewot
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmNhbkJlUmVsZWFzZWQobWluVXNlZFRpbWUpOwotICAg
ICAgICB9KTsKLSAgICB9CisgICAgbV90ZXh0dXJlcy5yZW1vdmVBbGxNYXRjaGluZyhbJm1pblVz
ZWRUaW1lXShjb25zdCBFbnRyeSYgZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmNhbkJl
UmVsZWFzZWQobWluVXNlZFRpbWUpOworICAgIH0pOwogCi0gICAgaWYgKCFtX3RleHR1cmVzLmlz
RW1wdHkoKSB8fCAhbV9hdHRhY2htZW50VGV4dHVyZXMuaXNFbXB0eSgpKQorICAgIGlmICghbV90
ZXh0dXJlcy5pc0VtcHR5KCkpCiAgICAgICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZFRleHR1cmVz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmgKaW5kZXggMzk2YmNlMWZmZTc4ZjQ1ZDI4ZTEy
ZDYxNjRmZWIwMzRiMTllMDlhOS4uYzQyOWIzMmUwZjU3YjlhZWQ0YzYzYzg4Yjk0YzUyODQ1MzY1
Nzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgVmVjdG9yPEVudHJ5PiBtX3RleHR1cmVzOwotICAgIFZlY3RvcjxFbnRy
eT4gbV9hdHRhY2htZW50VGV4dHVyZXM7CiAgICAgUnVuTG9vcDo6VGltZXI8Qml0bWFwVGV4dHVy
ZVBvb2w+IG1fcmVsZWFzZVVudXNlZFRleHR1cmVzVGltZXI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRl
eHRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCmluZGV4IDRjM2JjNDk3NDhjOTk4
MGY0MGNkYmZkNjhiMjEzNTVmZGU5YjBiMDMuLjJjZmIxNDMyMWFkZWM2Yzc2NjQ5MWM2MTM5NTE2
NjY1MzMyODc4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXMuY3BwCkBAIC00MCwxMiArNDAsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmluaXRpYWxpemUoKQogCiAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsK
ICAgICBzdXBwb3J0c05QT1RUZXh0dXJlcyA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVND
SUlMaXRlcmFsKCJHTF9PRVNfdGV4dHVyZV9ucG90IikpOwotICAgIHN1cHBvcnRzQkdSQTg4ODgg
PSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4IikpOwogICAgIHN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBleHRlbnNp
b25zU3RyaW5nLmNvbnRhaW5zKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3VucGFja19zdWJpbWFnZSIp
KTsKICNlbHNlCiAgICAgaXNHTEVTMkNvbXBsaWFudCA9IGZhbHNlOwogICAgIHN1cHBvcnRzTlBP
VFRleHR1cmVzID0gdHJ1ZTsKLSAgICBzdXBwb3J0c0JHUkE4ODg4ID0gdHJ1ZTsKICAgICBzdXBw
b3J0c1VucGFja1N1YmltYWdlID0gdHJ1ZTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0
cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oCmluZGV4IDJiNjY4ZTlkYjdlNmI4YjM3NmEyYjA5
ZWIzYTY4NzJjYjA0OWU0ZmMuLjM2NzBmMDA2OGM3N2FiYTUyZjRhMGVmNmQ5NThkZWUyOWY2MTNm
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgKQEAg
LTM0LDcgKzM0LDYgQEAgc3RydWN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyB7CiAK
ICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgc3VwcG9ydHNO
UE9UVGV4dHVyZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNCR1JBODg4OCB7IGZhbHNl
IH07CiAgICAgYm9vbCBzdXBwb3J0c1VucGFja1N1YmltYWdlIHsgZmFsc2UgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggYmZkMmNlOGQxMTNlNDRlYjA0M2EyYTZjMGE5ZWM0MjFk
MjU0NDIyMC4uYzk4MDI4MzI1N2NmNzUyYWRkY2E3NDhmMmI0NmZkYTZmYjNjMzIwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UG9pbgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gYWNxdWlyZVRleHR1cmVG
cm9tUG9vbChzaXplKTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiaXRzID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwotICAgIHN0YXRpY19jYXN0PEJpdG1hcFRl
eHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250ZW50c05vU3dpenpsZShiaXRzLCBz
b3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBzdHJpZGUpOworICAgIHN0YXRpY19jYXN0PEJp
dG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250ZW50cyhiaXRzLCBzb3Vy
Y2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBzdHJpZGUsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNh
bk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKICAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFy
Z2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBmLCBBbGxFZGdlcyk7CiAKICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0
IEZsb2F0UmVjdCYKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUpOwogICAgIFNldEZvclNjb3Bl
PGNvbnN0IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyo+IGZpbHRlckluZm8oZGF0YSgpLmZp
bHRlckluZm8sIHRleHR1cmVHTC5maWx0ZXJJbmZvKCkpOwogCi0gICAgZHJhd1RleHR1cmUodGV4
dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0
dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7
CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC50ZXh0dXJlTWFwcGVy
Q29sb3JDb252ZXJ0RmxhZ3MoKSB8ICh0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRC
bGVuZCksIHRleHR1cmVHTC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgZXhw
b3NlZEVkZ2VzKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdMdWlu
dCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5oCmluZGV4IDM2OTFhYWE5ZTBmNmMwMWVjMWU4MDY5MzFjMWQxYjkyMWIwNGI3MDEu
LmUxZTM5MDVkMzNlNzI3MzFlMTkzZDI2ZWZjM2IxYmNjZGVlOTczNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBw
ZXJHTCgpOwogCiAgICAgZW51bSBGbGFnIHsKKyAgICAgICAgTm9GbGFnID0gMHgwMCwKICAgICAg
ICAgU2hvdWxkQmxlbmQgPSAweDAxLAogICAgICAgICBTaG91bGRGbGlwVGV4dHVyZSA9IDB4MDIs
CiAgICAgICAgIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0ID0gMHgwNCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKaW5kZXggMzgxZTMxOGEyNGNiNzgwOTBhN2M5MzA0NWI5NTQ4OWI2M2FiMWQx
NC4uODU0ODk3MTVmYWZkMWJmM2U5YTZhMDE0ZWUzNGI2ZjU0MDZmZDVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMp
CiAKIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlv
bnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2htZW50KTsKKyAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1
aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwog
ICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOwogICAg
IHBhaW50T3B0aW9ucy5zdXJmYWNlID0gc3VyZmFjZTsKICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXIuYmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCBhNWEwOGU4NjM0MTViZTkwZGY2Yjdm
ZjU4YTNjZmE2Y2JiNTM0YTlmLi5mM2JlZDA2MmVhNzkwNTZkZDg0MGNjYmYzMjE1MWZiMzQ1YzNi
OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHUKICAgICBpZiAo
bV9oYXNNYW5hZ2VkVGV4dHVyZSkgewogICAgICAgICBBU1NFUlQobV90ZXh0dXJlKTsKICAgICAg
ICAgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJl
R0wqPihtX3RleHR1cmUuZ2V0KCkpOwotICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZSh0ZXh0
dXJlR0wtPmlkKCksIG1fZXh0cmFGbGFncywgdGV4dHVyZUdMLT5zaXplKCksIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJl
KHRleHR1cmVHTC0+aWQoKSwgbV9leHRyYUZsYWdzIHwgdGV4dHVyZUdMLT50ZXh0dXJlTWFwcGVy
Q29sb3JDb252ZXJ0RmxhZ3MoKSwgdGV4dHVyZUdMLT5zaXplKCksIHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgb3BhY2l0eSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336361</attachid>
            <date>2018-03-23 02:44:37 -0700</date>
            <delta_ts>2018-03-23 04:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183892-20180323104435.patch</filename>
            <type>text/plain</type>
            <size>30191</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2ZmExMjExZWYzODMy
MmEwMTFlMzgzMTIzZDRlNGFkZWJhZjQwMC4uZWM2NzM2ODU3MGJjODRmZGUyYzM3N2QxOTVlY2Zh
NDkyOTViODVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE4LTAzLTIzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9p
ZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsd2F5cyB1c2UgUkdC
QSBmb3JtYXQgb24gQml0bWFwVGV4dHVyZUdMICh3aGVuIG5vIG90aGVyIGZvcm1hdCBpcyBzcGVj
aWZpY2FsbHkgcmVxdWVzdGVkKS4gV2hlbgorICAgICAgICB0aGUgdGV4dHVyZSBpcyB1cGRhdGVk
IGZyb20gQkdSQSBjb250ZW50LCB1c2UgYSBmbGFnIHRvIGluZGljYXRlIHRoZSBzaGFkZXIgdG8g
cGVyZm9ybSBhIGNvbG9yCisgICAgICAgIGNvbnZlcnNpb24gZHVyaW5nIHRoZSBwYWludGluZy4g
VGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBzd2FwIHRoZSBSIGFuZCBCIGNvbXBvbmVudHMgb24g
dGhlIENQVS4KKyAgICAgICAgQWxzbywgcmVtb3ZlIG9uZSBvZiB0aGUgbGlzdHMgaW4gQml0bWFw
VGV4dHVyZVBvb2wgYXMgbm93IGFsbCBvZiB0aGVtIGhhdmUgdGhlIHNhbWUgZm9ybWF0LCBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBVcGRhdGVDb250ZW50c0ZsYWcgYXMgd2UgbmV2ZXIgbmVlZCB0
byBtb2RpZnkgdGhlIG9yaWdpbmFsIGltYWdlIGRhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN3aXp6bGVCR1JBVG9SR0JBKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3
aXp6bGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6Y29sb3JD
b252ZXJ0RmxhZ3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUG9v
bDo6YWNxdWlyZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVBvb2w6
OnJlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorCiAyMDE4LTAzLTIyICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX0FMVEVSTkFURV9G
UkFNRVdPUktTX0RJUiBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwYWIwYmU4NTk0MGFiZTljZTg5
Njg3ZGUxOTU2Y2Q3OWM0NmQzMzcuLmMxYzI2NmUyM2FlODFkYjRjZmQ2ZWQwMmNmNWZmNjNjY2Qy
YTk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDMtMjMgIE1pZ3VlbCBHb21l
eiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEF2b2lkIHNvZnR3
YXJlIGNvbG9yIGNvbnZlcnNpb24gaW5zaWRlIEJpdG1hcFRleHR1cmVHTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODkyCisKKyAgICAgICAgUmVt
b3ZlIHRoZSBVcGRhdGVDb250ZW50c0ZsYWcgcGFyYW1ldGVyIHdoZW4gY2FsbGluZyBCaXRtYXBU
ZXh0dXJlOjp1cGRhdGVDb250ZW50cygpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OnN3YXBCdWZmZXJzKToKKwogMjAxOC0wMy0yMyAgTWljaGFlbCBDYXRhbnphcm8g
IDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBGaXggLVdzd2l0
Y2ggd2FybmluZ3MgYWZ0ZXIgcjIyOTc3OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGI3NDFlMDAwOTYyNzhiM2EyYTc2ZDUw
OGYzY2FmNTEyMGM2YzZkM2UuLjk5M2NkOWUzNTA0N2ViZWM0YTJmODYzMGE5ZTJlMTMzODFiMTg4
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKQEAgLTcwNiw3ICs3MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHcwogCiAg
ICAgaW50IHN0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUoJnZpZGVvRnJhbWUs
IDApOwogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFU
QSgmdmlkZW9GcmFtZSwgMCk7Ci0gICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBH
U1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAw
KSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRS
ZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5G
T19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsK
ICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5jcHAKaW5kZXggNDg3MDc3YmU5MzExN2I3NTNmMzdhZjM3YWZiZDE3YTBlYTM1YjZhMC4uZjkz
YzIzYzQxZjRlZTBkMmU4MTQwOTRmYjdjYzNmMDQzOWI5ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQml0bWFw
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNv
dXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zm
c2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkK
K3ZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBo
aWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNv
ZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBh
Y2NlbGVyYXRlZCBiaXQuCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBj
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlQ29udGVudHMo
aW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCksIHVwZGF0ZUNvbnRlbnRzRmxhZyk7
CisgICAgdXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjZjODg4MjViNWI1NDJk
MDAyYTgxOGU1MzFjMWU1YWYxNTk5MTI1Zi4uNmUzYjhmYmQwYWJkZjNlOTY5NzJlYTRkZTI5MTUy
NGYyZDVkMjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAg
ICAgZW51bSBGbGFnIHsKICAgICAgICAgTm9GbGFnID0gMCwKICAgICAgICAgU3VwcG9ydHNBbHBo
YSA9IDB4MDEsCi0gICAgICAgIEZCT0F0dGFjaG1lbnQgPSAweDAyCi0gICAgfTsKLQotICAgIGVu
dW0gVXBkYXRlQ29udGVudHNGbGFnIHsKLSAgICAgICAgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEsCi0gICAgICAgIFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhCiAg
ICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CkBAIC02NSw5ICs1OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0Zs
YWcsIGZsb2F0IHNjYWxlID0gMSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQs
IGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCA9IDA7CiAgICAgaW5saW5lIEZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFnczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IGE0MjA5YmMwODkyNDc0OTE0
MmU1MTg2Zjg2YThkNzlhOWI5Y2JhM2YuLjE1MDUwY2YwZDBmNmI5YjUxMDE4NDBhODYyMTdhZTA1
ZmQxZGFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEJpdG1h
cFRleHR1cmVHTCogdG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4dHVyZSogdGV4dHVyZSkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZSk7CiB9CiAKLUJp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZsYWdzIGZsYWdzLCBHTGludCBp
bnRlcm5hbEZvcm1hdCkKK0JpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZs
YWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fY29udGV4dEF0dHJpYnV0ZXMoY29u
dGV4dEF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGludGVybmFsRm9ybWF0ICE9IEdMX0RPTlRfQ0FS
RSkgewpAQCAtNjQsMzAgKzY0LDcgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wo
Y29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzJiBjb250ZXh0QXQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEZCT0F0dGFjaG1lbnQpCi0gICAgICAg
IG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIC8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBwb3J0ZWQgaW4g
dGhlIE9wZW5HTEVTCi0gICAgICAgIC8vIGludGVybmFsIGFuZCBleHRlcm5hbCBmb3JtYXRzIG5l
ZWQgdG8gYmUgQkdSQQotICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR0xfUkdCQTsKLSAgICAg
ICAgbV9mb3JtYXQgPSBHTF9CR1JBOwotICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5p
c0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5z
dXBwb3J0c0JHUkE4ODg4KQotICAgICAgICAgICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBHTF9C
R1JBOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZm9ybWF0ID0gR0xfUkdC
QTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JHQkEo
dWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdHJpZGUgPSAwKQotewot
ICAgIHN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IHJlY3Qud2lkdGgoKTsKLSAgICBmb3IgKGlu
dCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5KSB7Ci0gICAgICAgIHVpbnQzMl90
KiBwID0gZGF0YSArIHkgKiBzdHJpZGU7Ci0gICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsg
eCA8IHJlY3QubWF4WCgpOyArK3gpCi0gICAgICAgICAgICBwW3hdID0gKChwW3hdIDw8IDE2KSAm
IDB4ZmYwMDAwKSB8ICgocFt4XSA+PiAxNikgJiAweGZmKSB8IChwW3hdICYgMHhmZjAwZmYwMCk7
Ci0gICAgfQorICAgIG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7CiB9CiAK
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCkBAIC05Niw2ICs3Myw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
aWQpOwogCiAgICAgbV9zaG91bGRDbGVhciA9IHRydWU7CisgICAgbV9jb2xvckNvbnZlcnRGbGFn
cyA9IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnOwogICAgIGlmIChtX3RleHR1cmVTaXplID09IGNv
bnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA5LDMxICs4NywxMyBAQCB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBtX2ludGVybmFsRm9ybWF0LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVy
ZVNpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBtX3R5cGUsIDApOwogfQogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCogc3JjRGF0YSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwg
aW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCwgR0x1aW50IGdsRm9ybWF0
KQordm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQsIGludCBieXRlc1BlckxpbmUpCiB7Ci0gICAgLy8gRm9yIEVTIGRyaXZlcnMgdGhhdCBkb24n
dCBzdXBwb3J0IHN1Yi1pbWFnZXMuCi0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNVbnBhY2tTdWJp
bWFnZSA9IG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZTsKLQotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7Ci0KLSAgICBpZiAoY29udGV4dFN1
cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKLSAgICAgICAgLy8gVXNlIHRoZSBPcGVuR0wgc3ViLWlt
YWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2YWlsYWJsZS4KLSAgICAgICAg
Z2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQ
ZXJQaXhlbCk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291
cmNlT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElY
RUxTLCBzb3VyY2VPZmZzZXQueCgpKTsKLSAgICB9Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBtX3R5cGUsIHNyY0RhdGEp
OwotCi0gICAgaWYgKGNvbnRleHRTdXBwb3J0c1VucGFja1N1YmltYWdlKSB7Ci0gICAgICAgIGds
UGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOwotICAgICAgICBnbFBpeGVsU3Rv
cmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApOwotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VO
UEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAgfQotfQorICAgIC8vIFdlIGFyZSB1cGRhdGluZyBh
IHRleHR1cmUgd2l0aCBmb3JtYXQgUkdCQSB3aXRoIGNvbnRlbnQgZnJvbSBhIGJ1ZmZlciB0aGF0
IGhhcyBCR1JBIGZvcm1hdC4gSW5zdGVhZCBvZiB0dXJuaW5nIEJHUkEKKyAgICAvLyBpbnRvIFJH
QkEgYW5kIHRoZW4gdXBsb2FkaW5nIGl0LCB3ZSB1cGxvYWQgaXQgYXMgaXMuIFRoaXMgY2F1c2Vz
IHRoZSB0ZXh0dXJlIGZvcm1hdCB0byBiZSBSR0JBIGJ1dCB0aGUgY29udGVudCB0byBiZSBCR1JB
LAorICAgIC8vIHNvIHdlIG1hcmsgdGhlIHRleHR1cmUgdG8gY29udmVydCB0aGUgY29sb3JzIHdo
ZW4gcGFpbnRpbmcgdGhlIHRleHR1cmUuCisgICAgbV9jb2xvckNvbnZlcnRGbGFncyA9IFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQ29udmVydFRleHR1cmVCR1JBVG9SR0JBOwogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVz
UGVyTGluZSwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKLXsKICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQg
Ynl0ZXNQZXJQaXhlbCA9IDQ7CkBAIC0xNDYsNyArMTA2LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJl
R0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRh
cmdldFIKICAgICAgICAgJiYgIShieXRlc1BlckxpbmUgPT0gc3RhdGljX2Nhc3Q8aW50Pih0YXJn
ZXRSZWN0LndpZHRoKCkgKiBieXRlc1BlclBpeGVsKSAmJiBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
PSBJbnRQb2ludDo6emVybygpKTsKIAogICAgIC8vIHByZXBhcmUgdGVtcG9yYXJ5RGF0YSBpZiBu
ZWNlc3NhcnkKLSAgICBpZiAoKG1fZm9ybWF0ID09IEdMX1JHQkEgJiYgdXBkYXRlQ29udGVudHNG
bGFnID09IFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKSB8fCByZXF1aXJlU3Vi
SW1hZ2VCdWZmZXIpIHsKKyAgICBpZiAocmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CiAgICAgICAg
IHRlbXBvcmFyeURhdGEucmVzaXplKHRhcmdldFJlY3Qud2lkdGgoKSAqIHRhcmdldFJlY3QuaGVp
Z2h0KCkgKiBieXRlc1BlclBpeGVsKTsKICAgICAgICAgZGF0YSA9IHRlbXBvcmFyeURhdGEuZGF0
YSgpOwogICAgICAgICBjb25zdCBjaGFyKiBiaXRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KHNyY0RhdGEpOwpAQCAtMTYzLDEzICsxMjMsMjUgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIK
ICAgICAgICAgYWRqdXN0ZWRTb3VyY2VPZmZzZXQgPSBJbnRQb2ludCgwLCAwKTsKICAgICB9CiAK
LSAgICBpZiAobV9mb3JtYXQgPT0gR0xfUkdCQSkKLSAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEo
cmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3QqPihkYXRhKSwgSW50UmVjdChhZGp1c3RlZFNv
dXJjZU9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkpLCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBp
eGVsKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCi0gICAgdXBk
YXRlQ29udGVudHNOb1N3aXp6bGUoZGF0YSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRTb3VyY2VPZmZz
ZXQsIGJ5dGVzUGVyTGluZSwgYnl0ZXNQZXJQaXhlbCwgbV9mb3JtYXQpOworICAgIGlmIChtX2Nv
bnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgLy8gVXNl
IHRoZSBPcGVuR0wgc3ViLWltYWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2
YWlsYWJsZS4KKyAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0
ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgYWRqdXN0ZWRTb3VyY2VPZmZzZXQueSgpKTsKKyAgICAgICAgZ2xQaXhl
bFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIGFkanVzdGVkU291cmNlT2Zmc2V0LngoKSk7
CisgICAgfQorCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0Lmhl
aWdodCgpLCBtX2Zvcm1hdCwgbV90eXBlLCBzcmNEYXRhKTsKKworICAgIGlmIChtX2NvbnRleHRB
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgZ2xQaXhlbFN0b3Jl
aShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBf
UElYRUxTLCAwKTsKKyAgICB9CiB9CiAKLXZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250
ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit2b2lk
IEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Niw3ICsxNTgsNyBAQCB2b2lkIEJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjbwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlk
ZShzdXJmYWNlKTsKICNlbmRpZgogCi0gICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCB0YXJn
ZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB1
cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIHRhcmdldFJlY3QsIG9mZnNldCwgYnl0ZXNQZXJMaW5l
KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGdldFBhc3Nlc1JlcXVpcmVkRm9yRmlsdGVyKEZpbHRl
ck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtMjMyLDcgKzIwNCw3IEBAIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFw
cGVyJiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgICAgICBib29sIGxhc3QgPSAoaSA9PSBmaWx0ZXJz
LnNpemUoKSAtIDEpICYmIChqID09IG51bVBhc3NlcyAtIDEpOwogICAgICAgICAgICAgaWYgKCFs
YXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnRlcm1lZGlhdGVTdXJmYWNlKQotICAgICAg
ICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNlID0gdGV4bWFwR0wuYWNxdWlyZVRleHR1
cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwg
Qml0bWFwVGV4dHVyZTo6RkJPQXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZVN1cmZhY2UgPSB0ZXhtYXBHTC5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnRlbnRT
aXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICAgICAgICAgIHRl
eG1hcEdMLmJpbmRTdXJmYWNlKGludGVybWVkaWF0ZVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggNzQwOTBhNGRkMmJjMjRlYzg5ODVmMGRhYjBk
ODllNmFmZmJkZWZiYy4uODcwOWE4MjU2MGM2NDk4ODc0ODkzOGI4Yjg2ZTEzYmY1M2EwYmVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTUsOSArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB1aW50MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB1aW50MzJfdCB0ZXh0
dXJlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gR0xfVEVYVFVSRV8yRDsgfQogICAgIEludFNpemUg
dGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAgdm9pZCB1
cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25z
dCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zm
c2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcpIG92ZXJyaWRlOwotICAg
IHZvaWQgdXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwg
dW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQsIEdMdWludCBnbEZvcm1hdCA9IEdMX1JHQkEpOwor
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBi
eXRlc1BlckxpbmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
cHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVy
cmlkZTsKQEAgLTc5LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3B5RnJvbUV4dGVy
bmFsVGV4dHVyZShHTHVpbnQgdGV4dHVyZUlEKTsKIAorICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgY29sb3JDb252ZXJ0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yQ29udmVydEZsYWdz
OyB9CisKIHByaXZhdGU6CiAgICAgQml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcyYsIGNvbnN0IEZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAK
QEAgLTkxLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkQ2xlYXIgeyB0cnVl
IH07CiAgICAgQ2xpcFN0YWNrIG1fY2xpcFN0YWNrOwogICAgIFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyBtX2NvbnRleHRBdHRyaWJ1dGVzOworICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgbV9jb2xvckNvbnZlcnRGbGFncyB7IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnIH07CiAKICAg
ICB2b2lkIGNsZWFySWZOZWVkZWQoKTsKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVQb29sLmNwcAppbmRleCA3NWQ0YWU2OTc0OGYyZTNiNDM0ZDE1NTZkNjQ2
OGU4NTNhMWY1ZjA4Li44MTIyMDQ4NTM2ZDNhYTQ4NzU1Mzk0MDZkYTc0NTljN2UwMTc4NWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAKQEAgLTQ2LDE0ICs0NiwxMiBAQCBCaXRtYXBUZXh0
dXJlUG9vbDo6Qml0bWFwVGV4dHVyZVBvb2woY29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzJiBjb250ZQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZVBvb2w6
OmFjcXVpcmVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzIGZsYWdzKQogewotICAgIFZlY3RvcjxFbnRyeT4mIGxpc3QgPSBmbGFncyAmIEJpdG1h
cFRleHR1cmU6OkZCT0F0dGFjaG1lbnQgPyBtX2F0dGFjaG1lbnRUZXh0dXJlcyA6IG1fdGV4dHVy
ZXM7Ci0KLSAgICBFbnRyeSogc2VsZWN0ZWRFbnRyeSA9IHN0ZDo6ZmluZF9pZihsaXN0LmJlZ2lu
KCksIGxpc3QuZW5kKCksCisgICAgRW50cnkqIHNlbGVjdGVkRW50cnkgPSBzdGQ6OmZpbmRfaWYo
bV90ZXh0dXJlcy5iZWdpbigpLCBtX3RleHR1cmVzLmVuZCgpLAogICAgICAgICBbJnNpemVdKEVu
dHJ5JiBlbnRyeSkgeyByZXR1cm4gZW50cnkubV90ZXh0dXJlLT5yZWZDb3VudCgpID09IDEgJiYg
ZW50cnkubV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZTsgfSk7CiAKLSAgICBpZiAoc2VsZWN0ZWRF
bnRyeSA9PSBsaXN0LmVuZCgpKSB7Ci0gICAgICAgIGxpc3QuYXBwZW5kKEVudHJ5KGNyZWF0ZVRl
eHR1cmUoZmxhZ3MpKSk7Ci0gICAgICAgIHNlbGVjdGVkRW50cnkgPSAmbGlzdC5sYXN0KCk7Cisg
ICAgaWYgKHNlbGVjdGVkRW50cnkgPT0gbV90ZXh0dXJlcy5lbmQoKSkgeworICAgICAgICBtX3Rl
eHR1cmVzLmFwcGVuZChFbnRyeShjcmVhdGVUZXh0dXJlKGZsYWdzKSkpOworICAgICAgICBzZWxl
Y3RlZEVudHJ5ID0gJm1fdGV4dHVyZXMubGFzdCgpOwogICAgIH0KIAogICAgIHNjaGVkdWxlUmVs
ZWFzZVVudXNlZFRleHR1cmVzKCk7CkBAIC03MSwyMiArNjksMTcgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlUG9vbDo6c2NoZWR1bGVSZWxlYXNlVW51c2VkVGV4dHVyZXMoKQogCiB2b2lkIEJpdG1hcFRl
eHR1cmVQb29sOjpyZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lckZpcmVkKCkKIHsKKyAgICBpZiAo
bV90ZXh0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERlbGV0ZSBl
bnRyaWVzLCB3aGljaCBoYXZlIGJlZW4gdW51c2VkIGluIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9s
ZXJhbmNlLgogICAgIE1vbm90b25pY1RpbWUgbWluVXNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSAtIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlOwogCi0gICAgaWYgKCFtX3RleHR1
cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX3RleHR1cmVzLnJlbW92ZUFsbE1hdGNoaW5nKFsm
bWluVXNlZFRpbWVdKGNvbnN0IEVudHJ5JiBlbnRyeSkgewotICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LmNhbkJlUmVsZWFzZWQobWluVXNlZFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX2F0dGFj
aG1lbnRUZXh0dXJlcy5yZW1vdmVBbGxNYXRjaGluZyhbJm1pblVzZWRUaW1lXShjb25zdCBFbnRy
eSYgZW50cnkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVz
ZWRUaW1lKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIG1fdGV4dHVyZXMucmVtb3ZlQWxsTWF0
Y2hpbmcoWyZtaW5Vc2VkVGltZV0oY29uc3QgRW50cnkmIGVudHJ5KSB7CisgICAgICAgIHJldHVy
biBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVzZWRUaW1lKTsKKyAgICB9KTsKIAotICAgIGlmICgh
bV90ZXh0dXJlcy5pc0VtcHR5KCkgfHwgIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkK
KyAgICBpZiAoIW1fdGV4dHVyZXMuaXNFbXB0eSgpKQogICAgICAgICBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRUZXh0dXJlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCmluZGV4IDM5NmJjZTFm
ZmU3OGY0NWQyOGUxMmQ2MTY0ZmViMDM0YjE5ZTA5YTkuLmM0MjliMzJlMGY1N2I5YWVkNGM2M2M4
OGI5NGM1Mjg0NTM2NTc3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCkBAIC02Nyw3ICs2Nyw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFZlY3RvcjxFbnRyeT4gbV90ZXh0dXJlczsKLSAg
ICBWZWN0b3I8RW50cnk+IG1fYXR0YWNobWVudFRleHR1cmVzOwogICAgIFJ1bkxvb3A6OlRpbWVy
PEJpdG1hcFRleHR1cmVQb29sPiBtX3JlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcAppbmRleCA4
OGM2ODliYWIxYzhhZDVjOGE3Nzc5ZTg4N2I1N2Q5MzViM2FiMjU2Li41YjE3ZGY5YmE4NDg3MDkw
NjFkYmEyOGMxNDU1ZjlkOTE5ZWI1YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckNvbnRleHRBdHRyaWJ1dGVzLmNwcApAQCAtNTYsMTIgKzU2LDEwIEBAIGNvbnN0IFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlcyYgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpn
ZXQoKQogCiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7CiAgICAgICAgIGF0dHJp
YnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSBleHRlbnNpb25zU3RyaW5nLmNvbnRhaW5zKEFT
Q0lJTGl0ZXJhbCgiR0xfT0VTX3RleHR1cmVfbnBvdCIpKTsKLSAgICAgICAgYXR0cmlidXRlcy5z
dXBwb3J0c0JHUkE4ODg4ID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucyhBU0NJSUxpdGVyYWwo
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKTsKICAgICAgICAgYXR0cmlidXRlcy5z
dXBwb3J0c1VucGFja1N1YmltYWdlID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucyhBU0NJSUxp
dGVyYWwoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKSk7CiAjZWxzZQogICAgICAgICBhdHRyaWJ1
dGVzLmlzR0xFUzJDb21wbGlhbnQgPSBmYWxzZTsKICAgICAgICAgYXR0cmlidXRlcy5zdXBwb3J0
c05QT1RUZXh0dXJlcyA9IHRydWU7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNCR1JBODg4
OCA9IHRydWU7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSA9IHRy
dWU7CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzLmgKaW5kZXggMjBkN2RlNjA4MGJlZDEzYjJhMjUwZmI2MDI2MGU0ZTMzOWFhMmM0My4u
ODc1MzhmZTdkMzdjNDliMGJiOWMyODdkNTg3N2IyNmViNDRiODVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaApAQCAtMzUsNyArMzUsNiBAQCBzdHJ1
Y3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzIHsKICAgICBib29sIGluaXRpYWxpemVk
IHsgZmFsc2UgfTsKICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgc3VwcG9ydHNOUE9UVGV4dHVyZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNCR1JB
ODg4OCB7IGZhbHNlIH07CiAgICAgYm9vbCBzdXBwb3J0c1VucGFja1N1YmltYWdlIHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggN2JhMmU3ZjY3MDBjY2I2NjY2MWRm
YTBjYTY4ZWYxNzc3ZjY5Mjg3Zi4uYWQ2OGYyYmQ2MGY1YzFkNDNlNzE0YWUyYzc3Y2RmNjEzZjlh
YzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3Is
IGNvbnN0IEZsb2F0UG9pbgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gYWNx
dWlyZVRleHR1cmVGcm9tUG9vbChzaXplKTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiaXRz
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICBpbnQgc3RyaWRl
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwotICAgIHN0YXRpY19j
YXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250ZW50c05vU3dp
enpsZShiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBzdHJpZGUpOworICAgIHN0
YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250ZW50
cyhiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBzdHJpZGUpOwogICAgIGRyYXdU
ZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVk
Z2VzKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKQEAgLTQ2MCw3ICs0
NjAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JgogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVH
TCYgdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVy
ZSk7CiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgQml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZvKj4g
ZmlsdGVySW5mbyhkYXRhKCkuZmlsdGVySW5mbywgdGV4dHVyZUdMLmZpbHRlckluZm8oKSk7CiAK
LSAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAw
IDogU2hvdWxkQmxlbmQsIHRleHR1cmVHTC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3Bh
Y2l0eSwgZXhwb3NlZEVkZ2VzKTsKKyAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4
dHVyZUdMLmNvbG9yQ29udmVydEZsYWdzKCkgfCAodGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDog
U2hvdWxkQmxlbmQpLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNp
dHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZShHTHVpbnQgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuaAppbmRleCAzNjkxYWFhOWUwZjZjMDFlYzFlODA2OTMxYzFkMWI5MjFi
MDRiNzAxLi5lMWUzOTA1ZDMzZTcyNzMxZTE5M2QyNmVmYzNiMWJjY2RlZTk3MzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFwcGVyR0woKTsKIAogICAgIGVudW0gRmxhZyB7CisgICAgICAgIE5vRmxhZyA9IDB4MDAs
CiAgICAgICAgIFNob3VsZEJsZW5kID0gMHgwMSwKICAgICAgICAgU2hvdWxkRmxpcFRleHR1cmUg
PSAweDAyLAogICAgICAgICBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA9IDB4MDQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDM4MWUzMThhMjRjYjc4MDkwYTdjOTMwNDViOTU0ODli
NjNhYjFkMTQuLjg1NDg5NzE1ZmFmZDFiZjNlOWE2YTAxNGVlMzRiNmY1NDA2ZmQ1ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2Ug
PSBvcHRpb25zLnRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwgQml0bWFwVGV4dHVyZTo6RkJPQXR0YWNobWVudCk7
CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBw
ZXIuYWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhKTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25z
KTsKICAgICBwYWludE9wdGlvbnMuc3VyZmFjZSA9IHN1cmZhY2U7CiAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggOGJiMWU4NWE0NzFmNjk3
OTdkYTUxNDYyYTUzMzJjOGFkMmMwZGI3Ni4uMDgzNDk4OGI3NGYyNmU3OTcxYjdjYzk1N2Q5ODlk
MThlZmJkNjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1CiAg
ICAgaWYgKG1faGFzTWFuYWdlZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZSk7
CiAgICAgICAgIEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Qml0bWFw
VGV4dHVyZUdMKj4obV90ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1
cmUodGV4dHVyZUdMLT5pZCgpLCBtX2V4dHJhRmxhZ3MsIHRleHR1cmVHTC0+c2l6ZSgpLCB0YXJn
ZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICB0ZXhtYXBHTC5kcmF3
VGV4dHVyZSh0ZXh0dXJlR0wtPmlkKCksIG1fZXh0cmFGbGFncyB8IHRleHR1cmVHTC0+Y29sb3JD
b252ZXJ0RmxhZ3MoKSwgdGV4dHVyZUdMLT5zaXplKCksIHRhcmdldFJlY3QsIG1vZGVsVmlld01h
dHJpeCwgb3BhY2l0eSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuY3BwCmluZGV4IDM5MzY1NjczZTU2MDdjMjgwMjdiNDYyY2MyMWMyNWI4ZTBkNjJjZDku
LjlmNGFjYzQwNTA2ZGVjN2ZhNTI2ZTlhMDhmNzFkYjk2MDM3YTJjMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmNwcApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdyYXBoaWNzTGF5ZXI7CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRl
Q29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCht
X3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CkBAIC00NSwxMCAr
NDUsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWcKICAgICAgICAgbV90ZXh0dXJlLT5yZXNl
dCh0YXJnZXRSZWN0LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
ID8gMCA6IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAotICAgIG1fdGV4
dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBk
YXRlQ29udGVudHNGbGFnKTsKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0
YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVy
KiBzb3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKK3ZvaWQg
VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVN
YXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIGZsb2F0IHNjYWxlKQogewogICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3QobV9yZWN0KTsKICAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheQogICAgICAgICBtX3RleHR1cmUt
PnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsK
ICAgICB9CiAKLSAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNv
dXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZywg
c2NhbGUpOworICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291
cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgc2NhbGUpOwogfQogCiB2b2lkIFRl
eHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDQ4ZWRkMmFl
MGJjNmI4ZjIyNjM5ZjA3N2NlNjQ2M2Y3NDNkNDZiYTUuLjJmNGQ4OWZiYjVlZTQ3YmUwOGRjOTZi
MjRhNmU2YTQ0NWYzMDlmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC0zNiw4ICszNiw4
IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdm9pZCBzZXRUZXh0dXJlKEJpdG1hcFRleHR1cmUqIHRl
eHR1cmUpIHsgbV90ZXh0dXJlID0gdGV4dHVyZTsgfQogICAgIGlubGluZSB2b2lkIHNldFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KIAotICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEltYWdlKiwgY29uc3QgSW50UmVjdCYsIEJpdG1h
cFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NM
YXllciosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcg
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEsIGZsb2F0IHNjYWxlID0gMSk7CisgICAg
dm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NMYXll
ciosIGNvbnN0IEludFJlY3QmLCBmbG9hdCBzY2FsZSA9IDEpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyJiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFs
IH5UZXh0dXJlTWFwcGVyVGlsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmNwcAppbmRleCA1YjRhODhjM2E1MGNlYmM1Y2NjM2FlN2UxNmU4NjE2NmI4
YmIxYTUxLi40MmZjMmU0YWNkY2I1YmYxMDAzNDlkMzAxMWUwZDlmNjhhZjZjMDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lk
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlcikKICAgICB9IGVsc2UgaWYgKG1fYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkg
PT0gbV90ZXh0dXJlLT5pc09wYXF1ZSgpKQogICAgICAgICBtX3RleHR1cmUtPnJlc2V0KG1fdGls
ZVJlY3Quc2l6ZSgpLCBtX2J1ZmZlci0+c3VwcG9ydHNBbHBoYSgpKTsKIAotICAgIG1fdGV4dHVy
ZS0+dXBkYXRlQ29udGVudHMobV9idWZmZXItPmRhdGEoKSwgbV9zb3VyY2VSZWN0LCBtX2J1ZmZl
ck9mZnNldCwgbV9idWZmZXItPnN0cmlkZSgpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2Rp
ZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyhtX2J1
ZmZlci0+ZGF0YSgpLCBtX3NvdXJjZVJlY3QsIG1fYnVmZmVyT2Zmc2V0LCBtX2J1ZmZlci0+c3Ry
aWRlKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336364</attachid>
            <date>2018-03-23 04:51:53 -0700</date>
            <delta_ts>2018-03-23 06:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183892-20180323125151.patch</filename>
            <type>text/plain</type>
            <size>35200</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2ZmExMjExZWYzODMy
MmEwMTFlMzgzMTIzZDRlNGFkZWJhZjQwMC4uOTFiODY2NWY2ZDcxNTAxZmRhNTMxNTc4Y2ZjNzg3
MTcwMTgzMzkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTAzLTIzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9p
ZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IMW9YW4gRG9iZXLFoWVrLgorCisgICAgICAgIEFsd2F5cyB1c2UgUkdC
QSBmb3JtYXQgb24gQml0bWFwVGV4dHVyZUdMICh3aGVuIG5vIG90aGVyIGZvcm1hdCBpcyBzcGVj
aWZpY2FsbHkgcmVxdWVzdGVkKS4gV2hlbgorICAgICAgICB0aGUgdGV4dHVyZSBpcyB1cGRhdGVk
IGZyb20gQkdSQSBjb250ZW50LCB1c2UgYSBmbGFnIHRvIGluZGljYXRlIHRoZSBzaGFkZXIgdG8g
cGVyZm9ybSBhIGNvbG9yCisgICAgICAgIGNvbnZlcnNpb24gZHVyaW5nIHRoZSBwYWludGluZy4g
VGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBzd2FwIHRoZSBSIGFuZCBCIGNvbXBvbmVudHMgb24g
dGhlIENQVS4KKyAgICAgICAgQWxzbywgcmVtb3ZlIG9uZSBvZiB0aGUgbGlzdHMgaW4gQml0bWFw
VGV4dHVyZVBvb2wgYXMgbm93IGFsbCBvZiB0aGVtIGhhdmUgdGhlIHNhbWUgZm9ybWF0LCBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBVcGRhdGVDb250ZW50c0ZsYWcgYXMgd2UgbmV2ZXIgbmVlZCB0
byBtb2RpZnkgdGhlIG9yaWdpbmFsIGltYWdlIGRhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN3aXp6bGVCR1JBVG9SR0JBKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3
aXp6bGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6Y29sb3JD
b252ZXJ0RmxhZ3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUG9v
bDo6YWNxdWlyZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVBvb2w6
OnJlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oOgorCiAyMDE4LTAzLTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX0FMVEVSTkFURV9GUkFNRVdPUktTX0RJUiBpbiBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDMwYWIwYmU4NTk0MGFiZTljZTg5Njg3ZGUxOTU2Y2Q3OWM0NmQz
MzcuLjVkMzJlNDJkZTczNWM5ZmE5OWVhMTgzZDE2MTUwOTQ0MDc4YzE2OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTgtMDMtMjMgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEF2b2lkIHNvZnR3YXJlIGNvbG9yIGNvbnZlcnNp
b24gaW5zaWRlIEJpdG1hcFRleHR1cmVHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBVcGRhdGVDb250
ZW50c0ZsYWcgcGFyYW1ldGVyIHdoZW4gY2FsbGluZyBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250
ZW50cygpLgorCisgICAgICAgIFJldmlld2VkIGJ5IMW9YW4gRG9iZXLFoWVrLgorCisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZm
ZXJzKToKKwogMjAxOC0wMy0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBGaXggLVdzd2l0Y2ggd2FybmluZ3MgYWZ0ZXIg
cjIyOTc3OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGNmZmE3ZjIxODQyMjJlNmVi
YTg5NDA4MTU1YmEzMWE1NmEzZDJkMTcuLjc5NWJmNzIyMmVhNTYwMzUzNDcwNGY0NjA1NGFjNTUy
ZjA1ZGZkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxOC0wMy0yMyAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdW1dQRV0gQXZvaWQgc29mdHdhcmUgY29sb3IgY29udmVyc2lvbiBpbnNpZGUgQml0bWFw
VGV4dHVyZUdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM4OTIKKworICAgICAgICBSZW1vdmUgdGhlIFVwZGF0ZUNvbnRlbnRzRmxhZyBwYXJhbWV0
ZXIgYXMgaXQncyBub3QgdXNlZCBhbnltb3JlLgorCisgICAgICAgIFJldmlld2VkIGJ5IMW9YW4g
RG9iZXLFoWVrLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUpOgorCiAyMDE4LTAzLTE1ICBZb3VzdWtl
IEtpbW90byAgPHlvdXN1a2Uua2ltb3RvQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10g
Rml4IGJ1aWxkIGVycm9ycyB3aGVuIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIGlzIHR1cm5l
ZCBvZmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcAppbmRleCBiNzQxZTAwMDk2Mjc4YjNhMmE3NmQ1MDhmM2NhZjUxMjBjNmM2ZDNlLi45
OTNjZDllMzUwNDdlYmVjNGEyZjg2MzBhOWUyZTEzMzgxYjE4ODAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MDYsNyAr
NzA2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0
dXJlKEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZSwgR3MKIAogICAgIGludCBzdHJpZGUgPSBHU1Rf
VklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZ2aWRlb0ZyYW1lLCAwKTsKICAgICBjb25zdCB2b2lk
KiBzcmNEYXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJnZpZGVvRnJhbWUsIDApOwot
ICAgIHRleHR1cmUudXBkYXRlQ29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdCgwLCAw
LCBHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hU
KCZ2aWRlb0luZm8pKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlkZSwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHRleHR1cmUu
dXBkYXRlQ29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdCgwLCAwLCBHU1RfVklERU9f
SU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8p
KSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlkZSk7CiAgICAgZ3N0X3ZpZGVvX2ZyYW1l
X3VubWFwKCZ2aWRlb0ZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDQ4NzA3N2Jl
OTMxMTdiNzUzZjM3YWYzN2FmYmQxN2EwZWEzNWI2YTAuLmY5M2MyM2M0MWY0ZWUwZDJlODE0MDk0
ZmI3Y2MzZjA0MzliOWY0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNG
bGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCit2b2lkIEJpdG1hcFRleHR1cmU6
OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXll
ciwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgZmxv
YXQgc2NhbGUpCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNl
ZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgpAQCAt
NTgsNyArNTgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXImLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgYwogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXRS
ZWN0LCBJbnRQb2ludCgpLCB1cGRhdGVDb250ZW50c0ZsYWcpOworICAgIHVwZGF0ZUNvbnRlbnRz
KGltYWdlLmdldCgpLCB0YXJnZXRSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5oCmluZGV4IDY2Yzg4ODI1YjViNTQyZDAwMmE4MThlNTMxYzFlNWFmMTU5
OTEyNWYuLjZlM2I4ZmJkMGFiZGYzZTk2OTcyZWE0ZGUyOTE1MjRmMmQ1ZDI4NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmUuaApAQCAtNDYsMTIgKzQ2LDYgQEAgcHVibGljOgogICAgIGVudW0gRmxhZyB7CiAgICAg
ICAgIE5vRmxhZyA9IDAsCiAgICAgICAgIFN1cHBvcnRzQWxwaGEgPSAweDAxLAotICAgICAgICBG
Qk9BdHRhY2htZW50ID0gMHgwMgotICAgIH07Ci0KLSAgICBlbnVtIFVwZGF0ZUNvbnRlbnRzRmxh
ZyB7Ci0gICAgICAgIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLAotICAgICAgICBV
cGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YQogICAgIH07CiAKICAgICB0eXBlZGVm
IHVuc2lnbmVkIEZsYWdzOwpAQCAtNjUsOSArNTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29u
c3QgSW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSA9IDEp
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBV
cGRhdGVDb250ZW50c0ZsYWcpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMo
SW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NMYXll
ciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgZmxvYXQg
c2NhbGUgPSAxKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCos
IGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgaW50IGJ5dGVz
UGVyTGluZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAg
IGlubGluZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCBhNDIwOWJjMDg5MjQ3NDkxNDJlNTE4NmY4NmE4ZDc5YTliOWNi
YTNmLi4xNTA1MGNmMGQwZjZiOWI1MTAxODQwYTg2MjE3YWUwNWZkMWRhYzRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtNTYsNyArNTYsNyBAQCBCaXRtYXBUZXh0dXJlR0wqIHRvQml0bWFw
VGV4dHVyZUdMKEJpdG1hcFRleHR1cmUqIHRleHR1cmUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUpOwogfQogCi1CaXRtYXBUZXh0dXJlR0w6OkJpdG1h
cFRleHR1cmVHTChjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmIGNvbnRleHRB
dHRyaWJ1dGVzLCBjb25zdCBGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCitCaXRt
YXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXMmIGNvbnRleHRBdHRyaWJ1dGVzLCBjb25zdCBGbGFncywgR0xpbnQgaW50ZXJuYWxG
b3JtYXQpCiAgICAgOiBtX2NvbnRleHRBdHRyaWJ1dGVzKGNvbnRleHRBdHRyaWJ1dGVzKQogewog
ICAgIGlmIChpbnRlcm5hbEZvcm1hdCAhPSBHTF9ET05UX0NBUkUpIHsKQEAgLTY0LDMwICs2NCw3
IEBAIEJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoZmxhZ3MgJiBGQk9BdHRhY2htZW50KQotICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0g
bV9mb3JtYXQgPSBHTF9SR0JBOwotICAgIGVsc2UgewotICAgICAgICAvLyBJZiBHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODggaXMgc3VwcG9ydGVkIGluIHRoZSBPcGVuR0xFUwotICAgICAg
ICAvLyBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgZm9ybWF0cyBuZWVkIHRvIGJlIEJHUkEKLSAgICAg
ICAgbV9pbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgICAgIG1fZm9ybWF0ID0gR0xfQkdS
QTsKLSAgICAgICAgaWYgKG1fY29udGV4dEF0dHJpYnV0ZXMuaXNHTEVTMkNvbXBsaWFudCkgewot
ICAgICAgICAgICAgaWYgKG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNCR1JBODg4OCkKLSAg
ICAgICAgICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR0xfQkdSQTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBtX2Zvcm1hdCA9IEdMX1JHQkE7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBpbnQgc3RyaWRlID0gMCkKLXsKLSAgICBzdHJpZGUgPSBzdHJpZGUg
PyBzdHJpZGUgOiByZWN0LndpZHRoKCk7Ci0gICAgZm9yIChpbnQgeSA9IHJlY3QueSgpOyB5IDwg
cmVjdC5tYXhZKCk7ICsreSkgewotICAgICAgICB1aW50MzJfdCogcCA9IGRhdGEgKyB5ICogc3Ry
aWRlOwotICAgICAgICBmb3IgKGludCB4ID0gcmVjdC54KCk7IHggPCByZWN0Lm1heFgoKTsgKyt4
KQotICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBbeF0g
Pj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYwMGZmMDApOwotICAgIH0KKyAgICBtX2ludGVy
bmFsRm9ybWF0ID0gbV9mb3JtYXQgPSBHTF9SR0JBOwogfQogCiB2b2lkIEJpdG1hcFRleHR1cmVH
TDo6ZGlkUmVzZXQoKQpAQCAtOTYsNiArNzMsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGlk
UmVzZXQoKQogICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX2lkKTsKIAogICAgIG1fc2hvdWxk
Q2xlYXIgPSB0cnVlOworICAgIG1fY29sb3JDb252ZXJ0RmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6
Ok5vRmxhZzsKICAgICBpZiAobV90ZXh0dXJlU2l6ZSA9PSBjb250ZW50U2l6ZSgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTEwOSwzMSArODcsMTMgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmRp
ZFJlc2V0KCkKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbEZv
cm1hdCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBt
X2Zvcm1hdCwgbV90eXBlLCAwKTsKIH0KIAotdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNv
bnRlbnRzTm9Td2l6emxlKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwsIEdMdWludCBnbEZvcm1hdCkKK3ZvaWQgQml0bWFwVGV4dHVy
ZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5l
KQogewotICAgIC8vIEZvciBFUyBkcml2ZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzdWItaW1hZ2Vz
LgotICAgIGJvb2wgY29udGV4dFN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSBtX2NvbnRleHRBdHRy
aWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2U7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1faWQpOwotCi0gICAgaWYgKGNvbnRleHRTdXBwb3J0c1VucGFja1N1YmltYWdl
KSB7Ci0gICAgICAgIC8vIFVzZSB0aGUgT3BlbkdMIHN1Yi1pbWFnZSBleHRlbnNpb24sIG5vdyB0
aGF0IHdlIGtub3cgaXQncyBhdmFpbGFibGUuCi0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1JPV19MRU5HVEgsIGJ5dGVzUGVyTGluZSAvIGJ5dGVzUGVyUGl4ZWwpOwotICAgICAgICBn
bFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIHNvdXJjZU9mZnNldC55KCkpOwotICAg
ICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgc291cmNlT2Zmc2V0Lngo
KSk7Ci0gICAgfQotCi0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdl
dFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0
LmhlaWdodCgpLCBnbEZvcm1hdCwgbV90eXBlLCBzcmNEYXRhKTsKLQotICAgIGlmIChjb250ZXh0
U3VwcG9ydHNVbnBhY2tTdWJpbWFnZSkgewotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFD
S19ST1dfTEVOR1RILCAwKTsKLSAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9S
T1dTLCAwKTsKLSAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIDAp
OwotICAgIH0KLX0KKyAgICAvLyBXZSBhcmUgdXBkYXRpbmcgYSB0ZXh0dXJlIHdpdGggZm9ybWF0
IFJHQkEgd2l0aCBjb250ZW50IGZyb20gYSBidWZmZXIgdGhhdCBoYXMgQkdSQSBmb3JtYXQuIElu
c3RlYWQgb2YgdHVybmluZyBCR1JBCisgICAgLy8gaW50byBSR0JBIGFuZCB0aGVuIHVwbG9hZGlu
ZyBpdCwgd2UgdXBsb2FkIGl0IGFzIGlzLiBUaGlzIGNhdXNlcyB0aGUgdGV4dHVyZSBmb3JtYXQg
dG8gYmUgUkdCQSBidXQgdGhlIGNvbnRlbnQgdG8gYmUgQkdSQSwKKyAgICAvLyBzbyB3ZSBtYXJr
IHRoZSB0ZXh0dXJlIHRvIGNvbnZlcnQgdGhlIGNvbG9ycyB3aGVuIHBhaW50aW5nIHRoZSB0ZXh0
dXJlLgorICAgIG1fY29sb3JDb252ZXJ0RmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZENv
bnZlcnRUZXh0dXJlQkdSQVRvUkdCQTsKIAotdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNv
bnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRl
bnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCi17CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0OwpA
QCAtMTQ2LDcgKzEwNiw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhj
b25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgICAgICYmICEo
Ynl0ZXNQZXJMaW5lID09IHN0YXRpY19jYXN0PGludD4odGFyZ2V0UmVjdC53aWR0aCgpICogYnl0
ZXNQZXJQaXhlbCkgJiYgYWRqdXN0ZWRTb3VyY2VPZmZzZXQgPT0gSW50UG9pbnQ6Onplcm8oKSk7
CiAKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgKCht
X2Zvcm1hdCA9PSBHTF9SR0JBICYmIHVwZGF0ZUNvbnRlbnRzRmxhZyA9PSBVcGRhdGVDYW5ub3RN
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSkgfHwgcmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CisgICAg
aWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6
ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhl
bCk7CiAgICAgICAgIGRhdGEgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgY29uc3Qg
Y2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzcmNEYXRhKTsKQEAgLTE2Mywx
MyArMTIzLDI1IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2
b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgICAgIGFkanVzdGVkU291
cmNlT2Zmc2V0ID0gSW50UG9pbnQoMCwgMCk7CiAgICAgfQogCi0gICAgaWYgKG1fZm9ybWF0ID09
IEdMX1JHQkEpCi0gICAgICAgIHN3aXp6bGVCR1JBVG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVpbnQzMl90Kj4oZGF0YSksIEludFJlY3QoYWRqdXN0ZWRTb3VyY2VPZmZzZXQsIHRhcmdldFJl
Y3Quc2l6ZSgpKSwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKTsKIAotICAgIHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxl
KGRhdGEsIHRhcmdldFJlY3QsIGFkanVzdGVkU291cmNlT2Zmc2V0LCBieXRlc1BlckxpbmUsIGJ5
dGVzUGVyUGl4ZWwsIG1fZm9ybWF0KTsKKyAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5zdXBw
b3J0c1VucGFja1N1YmltYWdlKSB7CisgICAgICAgIC8vIFVzZSB0aGUgT3BlbkdMIHN1Yi1pbWFn
ZSBleHRlbnNpb24sIG5vdyB0aGF0IHdlIGtub3cgaXQncyBhdmFpbGFibGUuCisgICAgICAgIGds
UGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGJ5dGVzUGVyTGluZSAvIGJ5dGVzUGVy
UGl4ZWwpOworICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIGFkanVz
dGVkU291cmNlT2Zmc2V0LnkoKSk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NL
SVBfUElYRUxTLCBhZGp1c3RlZFNvdXJjZU9mZnNldC54KCkpOworICAgIH0KKworICAgIGdsVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55
KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgbV9mb3JtYXQsIG1f
dHlwZSwgc3JjRGF0YSk7CisKKyAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c1Vu
cGFja1N1YmltYWdlKSB7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5H
VEgsIDApOworICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApOwor
ICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgfQog
fQogCi12b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVD
b250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47
CkBAIC0xODYsNyArMTU4LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBieXRlc1Bl
ckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAjZW5kaWYK
IAotICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRl
c1BlckxpbmUsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdXBkYXRlQ29udGVudHMoaW1hZ2VE
YXRhLCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSk7CiB9CiAKIHN0YXRpYyB1bnNp
Z25lZCBnZXRQYXNzZXNSZXF1aXJlZEZvckZpbHRlcihGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlv
blR5cGUgdHlwZSkKQEAgLTIzMiw3ICsyMDQsNyBAQCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0
bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcgog
ICAgICAgICAgICAgYm9vbCBsYXN0ID0gKGkgPT0gZmlsdGVycy5zaXplKCkgLSAxKSAmJiAoaiA9
PSBudW1QYXNzZXMgLSAxKTsKICAgICAgICAgICAgIGlmICghbGFzdCkgewogICAgICAgICAgICAg
ICAgIGlmICghaW50ZXJtZWRpYXRlU3VyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJt
ZWRpYXRlU3VyZmFjZSA9IHRleG1hcEdMLmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29udGVudFNp
emUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSB8IEJpdG1hcFRleHR1cmU6OkZCT0F0
dGFjaG1lbnQpOworICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNlID0gdGV4
bWFwR0wuYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpLCBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhKTsKICAgICAgICAgICAgICAgICB0ZXhtYXBHTC5iaW5kU3VyZmFjZShp
bnRlcm1lZGlhdGVTdXJmYWNlLmdldCgpKTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5oCmluZGV4IDc0MDkwYTRkZDJiYzI0ZWM4OTg1ZjBkYWIwZDg5ZTZhZmZiZGVmYmMuLjg3MDlh
ODI1NjBjNjQ5ODg3NDg5MzhiOGI4NmUxM2JmNTNhMGJlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgK
QEAgLTU1LDkgKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdWludDMyX3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAgICAgdWludDMyX3QgdGV4dHVyZVRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIEdMX1RFWFRVUkVfMkQ7IH0KICAgICBJbnRTaXplIHRleHR1cmVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2Uq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmLCBVcGRhdGVDb250ZW50c0ZsYWcpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJl
Y3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGlu
ZSwgVXBkYXRlQ29udGVudHNGbGFnKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
Tm9Td2l6emxlKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBv
aW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4
ZWwgPSA0LCBHTHVpbnQgZ2xGb3JtYXQgPSBHTF9SR0JBKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKSBvdmVycmlk
ZTsKICAgICBib29sIGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVN
YXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CkBAIC03OSw2ICs3OCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29weUZyb21FeHRlcm5hbFRleHR1cmUoR0x1aW50IHRl
eHR1cmVJRCk7CiAKKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGNvbG9yQ29udmVydEZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvckNvbnZlcnRGbGFnczsgfQorCiBwcml2YXRlOgogICAg
IEJpdG1hcFRleHR1cmVHTChjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMmLCBj
b25zdCBGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogCkBAIC05MSw2ICs5Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyIHsgdHJ1ZSB9OwogICAgIENsaXBTdGFjayBt
X2NsaXBTdGFjazsKICAgICBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMgbV9jb250ZXh0
QXR0cmlidXRlczsKKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fY29sb3JDb252ZXJ0Rmxh
Z3MgeyBUZXh0dXJlTWFwcGVyR0w6Ok5vRmxhZyB9OwogCiAgICAgdm9pZCBjbGVhcklmTmVlZGVk
KCk7CiAgICAgdm9pZCBjcmVhdGVGYm9JZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5j
cHAKaW5kZXggNzVkNGFlNjk3NDhmMmUzYjQzNGQxNTU2ZDY0NjhlODUzYTFmNWYwOC4uODEyMjA0
ODUzNmQzYWE0ODc1NTM5NDA2ZGE3NDU5YzdlMDE3ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBv
b2wuY3BwCkBAIC00NiwxNCArNDYsMTIgQEAgQml0bWFwVGV4dHVyZVBvb2w6OkJpdG1hcFRleHR1
cmVQb29sKGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGUKIAogUmVm
UHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVQb29sOjphY3F1aXJlVGV4dHVyZShjb25z
dCBJbnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncykKIHsKLSAg
ICBWZWN0b3I8RW50cnk+JiBsaXN0ID0gZmxhZ3MgJiBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2ht
ZW50ID8gbV9hdHRhY2htZW50VGV4dHVyZXMgOiBtX3RleHR1cmVzOwotCi0gICAgRW50cnkqIHNl
bGVjdGVkRW50cnkgPSBzdGQ6OmZpbmRfaWYobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpLAorICAg
IEVudHJ5KiBzZWxlY3RlZEVudHJ5ID0gc3RkOjpmaW5kX2lmKG1fdGV4dHVyZXMuYmVnaW4oKSwg
bV90ZXh0dXJlcy5lbmQoKSwKICAgICAgICAgWyZzaXplXShFbnRyeSYgZW50cnkpIHsgcmV0dXJu
IGVudHJ5Lm1fdGV4dHVyZS0+cmVmQ291bnQoKSA9PSAxICYmIGVudHJ5Lm1fdGV4dHVyZS0+c2l6
ZSgpID09IHNpemU7IH0pOwogCi0gICAgaWYgKHNlbGVjdGVkRW50cnkgPT0gbGlzdC5lbmQoKSkg
ewotICAgICAgICBsaXN0LmFwcGVuZChFbnRyeShjcmVhdGVUZXh0dXJlKGZsYWdzKSkpOwotICAg
ICAgICBzZWxlY3RlZEVudHJ5ID0gJmxpc3QubGFzdCgpOworICAgIGlmIChzZWxlY3RlZEVudHJ5
ID09IG1fdGV4dHVyZXMuZW5kKCkpIHsKKyAgICAgICAgbV90ZXh0dXJlcy5hcHBlbmQoRW50cnko
Y3JlYXRlVGV4dHVyZShmbGFncykpKTsKKyAgICAgICAgc2VsZWN0ZWRFbnRyeSA9ICZtX3RleHR1
cmVzLmxhc3QoKTsKICAgICB9CiAKICAgICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRUZXh0dXJlcygp
OwpAQCAtNzEsMjIgKzY5LDE3IEBAIHZvaWQgQml0bWFwVGV4dHVyZVBvb2w6OnNjaGVkdWxlUmVs
ZWFzZVVudXNlZFRleHR1cmVzKCkKIAogdm9pZCBCaXRtYXBUZXh0dXJlUG9vbDo6cmVsZWFzZVVu
dXNlZFRleHR1cmVzVGltZXJGaXJlZCgpCiB7CisgICAgaWYgKG1fdGV4dHVyZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKICAgICAvLyBEZWxldGUgZW50cmllcywgd2hpY2ggaGF2ZSBi
ZWVuIHVudXNlZCBpbiByZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZS4KICAgICBNb25vdG9u
aWNUaW1lIG1pblVzZWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSByZWxlYXNlVW51c2Vk
U2Vjb25kc1RvbGVyYW5jZTsKIAotICAgIGlmICghbV90ZXh0dXJlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV90ZXh0dXJlcy5yZW1vdmVBbGxNYXRjaGluZyhbJm1pblVzZWRUaW1lXShjb25zdCBF
bnRyeSYgZW50cnkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5jYW5CZVJlbGVhc2VkKG1p
blVzZWRUaW1lKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2F0dGFjaG1lbnRU
ZXh0dXJlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9hdHRhY2htZW50VGV4dHVyZXMucmVtb3Zl
QWxsTWF0Y2hpbmcoWyZtaW5Vc2VkVGltZV0oY29uc3QgRW50cnkmIGVudHJ5KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gZW50cnkuY2FuQmVSZWxlYXNlZChtaW5Vc2VkVGltZSk7Ci0gICAgICAgIH0p
OwotICAgIH0KKyAgICBtX3RleHR1cmVzLnJlbW92ZUFsbE1hdGNoaW5nKFsmbWluVXNlZFRpbWVd
KGNvbnN0IEVudHJ5JiBlbnRyeSkgeworICAgICAgICByZXR1cm4gZW50cnkuY2FuQmVSZWxlYXNl
ZChtaW5Vc2VkVGltZSk7CisgICAgfSk7CiAKLSAgICBpZiAoIW1fdGV4dHVyZXMuaXNFbXB0eSgp
IHx8ICFtX2F0dGFjaG1lbnRUZXh0dXJlcy5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3RleHR1cmVz
LmlzRW1wdHkoKSkKICAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkVGV4dHVyZXMoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZVBvb2wuaAppbmRleCAzOTZiY2UxZmZlNzhmNDVkMjhlMTJkNjE2NGZl
YjAzNGIxOWUwOWE5Li5jNDI5YjMyZTBmNTdiOWFlZDRjNjNjODhiOTRjNTI4NDUzNjU3NzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZVBvb2wuaApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBWZWN0b3I8RW50cnk+IG1fdGV4dHVyZXM7Ci0gICAgVmVjdG9yPEVudHJ5PiBtX2F0
dGFjaG1lbnRUZXh0dXJlczsKICAgICBSdW5Mb29wOjpUaW1lcjxCaXRtYXBUZXh0dXJlUG9vbD4g
bV9yZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKaW5kZXggODhjNjg5YmFiMWM4YWQ1YzhhNzc3
OWU4ODdiNTdkOTM1YjNhYjI1Ni4uNWIxN2RmOWJhODQ4NzA5MDYxZGJhMjhjMTQ1NWY5ZDkxOWVi
NWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5j
cHAKQEAgLTU2LDEyICs1NiwxMCBAQCBjb25zdCBUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkKIAogICAgICAgICBTdHJp
bmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0
cmluZyhHTF9FWFRFTlNJT05TKSkpOwogICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRl
eHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucyhBU0NJSUxpdGVyYWwoIkdMX09FU190
ZXh0dXJlX25wb3QiKSk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNCR1JBODg4OCA9IGV4
dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFn
ZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRfdW5wYWNr
X3N1YmltYWdlIikpOwogI2Vsc2UKICAgICAgICAgYXR0cmlidXRlcy5pc0dMRVMyQ29tcGxpYW50
ID0gZmFsc2U7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMgPSB0cnVl
OwotICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzQkdSQTg4ODggPSB0cnVlOwogICAgICAgICBh
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oCmluZGV4IDIwZDdk
ZTYwODBiZWQxM2IyYTI1MGZiNjAyNjBlNGUzMzlhYTJjNDMuLjg3NTM4ZmU3ZDM3YzQ5YjBiYjlj
Mjg3ZDU4NzdiMjZlYjQ0Yjg1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRl
eHRBdHRyaWJ1dGVzLmgKQEAgLTM1LDcgKzM1LDYgQEAgc3RydWN0IFRleHR1cmVNYXBwZXJDb250
ZXh0QXR0cmlidXRlcyB7CiAgICAgYm9vbCBpbml0aWFsaXplZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBpc0dMRVMyQ29tcGxpYW50IHsgZmFsc2UgfTsKICAgICBib29sIHN1cHBvcnRzTlBPVFRleHR1
cmVzIHsgZmFsc2UgfTsKLSAgICBib29sIHN1cHBvcnRzQkdSQTg4ODggeyBmYWxzZSB9OwogICAg
IGJvb2wgc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IDdiYTJlN2Y2NzAwY2NiNjY2NjFkZmEwY2E2OGVmMTc3N2Y2OTI4N2Yu
LmFkNjhmMmJkNjBmNWMxZDQzZTcxNGFlMmM3N2NkZjYxM2Y5YWM0MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdO
dW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2wo
c2l6ZSk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKLSAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wq
Pih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVj
dCwgSW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0
dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHMoYml0cywgc291cmNlUmVjdCwg
SW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKICAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFy
Z2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBmLCBBbGxFZGdlcyk7CiAKICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0
IEZsb2F0UmVjdCYKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUpOwogICAgIFNldEZvclNjb3Bl
PGNvbnN0IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyo+IGZpbHRlckluZm8oZGF0YSgpLmZp
bHRlckluZm8sIHRleHR1cmVHTC5maWx0ZXJJbmZvKCkpOwogCi0gICAgZHJhd1RleHR1cmUodGV4
dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0
dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7
CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5jb2xvckNvbnZlcnRG
bGFncygpIHwgKHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kKSwgdGV4dHVy
ZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOwog
fQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZs
YWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBm
bG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5k
ZXggMzY5MWFhYTllMGY2YzAxZWMxZTgwNjkzMWMxZDFiOTIxYjA0YjcwMS4uZTFlMzkwNWQzM2U3
MjczMWUxOTNkMjZlZmMzYjFiY2NkZWU5NzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNDQs
NiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdMKCk7CiAKICAg
ICBlbnVtIEZsYWcgeworICAgICAgICBOb0ZsYWcgPSAweDAwLAogICAgICAgICBTaG91bGRCbGVu
ZCA9IDB4MDEsCiAgICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwKICAgICAgICAgU2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QgPSAweDA0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApp
bmRleCAzODFlMzE4YTI0Y2I3ODA5MGE3YzkzMDQ1Yjk1NDg5YjYzYWIxZDE0Li44NTQ4OTcxNWZh
ZmQxYmYzZTlhNmEwMTRlZTM0YjZmNTQwNmZkNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1h
c2soY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKIAogUmVmUHRyPEJp
dG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQog
ewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNB
bHBoYSB8IEJpdG1hcFRleHR1cmU6OkZCT0F0dGFjaG1lbnQpOworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmFjcXVpcmVUZXh0dXJlRnJv
bVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CiAgICAgcGFpbnRPcHRpb25z
LnN1cmZhY2UgPSBzdXJmYWNlOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFj
ZShzdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuY3BwCmluZGV4IDhiYjFlODVhNDcxZjY5Nzk3ZGE1MTQ2MmE1MzMyYzhhZDJj
MGRiNzYuLjA4MzQ5ODhiNzRmMjZlNzk3MWI3Y2M5NTdkOTg5ZDE4ZWZiZDYwM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNzEs
NyArNzEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dQogICAgIGlmIChtX2hhc01hbmFnZWRU
ZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChtX3RleHR1cmUpOwogICAgICAgICBCaXRtYXBUZXh0
dXJlR0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KG1fdGV4dHVy
ZS5nZXQoKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKHRleHR1cmVHTC0+aWQoKSwg
bV9leHRyYUZsYWdzLCB0ZXh0dXJlR0wtPnNpemUoKSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0
cml4LCBvcGFjaXR5KTsKKyAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUodGV4dHVyZUdMLT5p
ZCgpLCBtX2V4dHJhRmxhZ3MgfCB0ZXh0dXJlR0wtPmNvbG9yQ29udmVydEZsYWdzKCksIHRleHR1
cmVHTC0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAppbmRleCAzOTM2
NTY3M2U1NjA3YzI4MDI3YjQ2MmNjMjFjMjViOGUwZDYyY2Q5Li45ZjRhY2M0MDUwNmRlYzdmYTUy
NmU5YTA4ZjcxZGI5NjAzN2EyYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKQEAgLTI3
LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwog
Ci12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0
ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKK3ZvaWQg
VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVN
YXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIElu
dFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsKICAgICB0YXJnZXRS
ZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwpAQCAtNDUsMTAgKzQ1LDEwIEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIs
IEltYWdlKiBpbWFnCiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCks
IGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhKTsKICAgICB9CiAKLSAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRz
KGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7Cisg
ICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zm
c2V0KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVy
ZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVw
ZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVy
KiBzb3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBmbG9hdCBzY2FsZSkKIHsK
ICAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1fcmVjdCk7CiAgICAg
dGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1h
cHBlciwgR3JhcGhpY3NMYXkKICAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNp
emUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAgfQogCi0gICAgbV90ZXh0
dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgdGFyZ2V0UmVj
dCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50c0ZsYWcsIHNjYWxlKTsKKyAgICBtX3RleHR1
cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0
LCBzb3VyY2VPZmZzZXQsIHNjYWxlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA0OGVkZDJhZTBiYzZiOGYyMjYzOWYwNzdjZTY0
NjNmNzQzZDQ2YmE1Li4yZjRkODlmYmI1ZWU0N2JlMDhkYzk2YjI0YTZlNmE0NDVmMzA5ZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgaW5s
aW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVyZSA9
IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgeyBtX3JlY3QgPSByZWN0OyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXImLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0
JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdp
bmFsSW1hZ2VEYXRhLCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciYsIEltYWdlKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgdXBkYXRl
Q29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0Jiwg
ZmxvYXQgc2NhbGUgPSAxKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQo
VGV4dHVyZU1hcHBlciYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGUo
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggM2ExYWFjMjg5OGM4ZDczYzFjMzJlODdkNjRmNTZlZTUwZTVmY2MzOC4u
Zjg0NTUxZTljNzQ1OWNiOTc3OTQzMmJmYTNhMmEyMzM0ZDdlMTA5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTE0OSwxOCArMTQ5LDE4
IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lU
aWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6CiAgICAgfQogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVy
ZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBk
YXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBl
ci5tYXhUZXh0dXJlU2l6ZSgpLCAhaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
KTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzKQotICAgICAgICB0aWxlLnVwZGF0ZUNv
bnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CisgICAgICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRp
cnR5UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBz
b3VyY2VMYXllciwgY29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRz
RmxhZykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50
cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXll
ciwgY29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkK
IHsKICAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1h
cHBlci5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3Rp
bGVzKQotICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxh
eWVyLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZywgbV9jb250ZW50c1NjYWxlKTsKKyAg
ICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGly
dHlSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggM2FhZGJh
Y2I0OWZmYzQ3MmJmYzExODZlNGMxYzM3NDU1NGQ0NjA0OC4uMjQwZTkyNGZjYzU0OGI0YjJmMzI2
MTAyZTc2OTc2ODI2YmI2ZTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3UmVw
YWludENvdW50ZXIoVGV4dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgdXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCk7Ci0gICAgdm9pZCB1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKLSAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IElu
dFJlY3QmKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBt
X2ltYWdlID0gaW1hZ2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAppbmRleCA1YjRhODhjM2E1MGNlYmM1Y2NjM2FlN2UxNmU4NjE2NmI4YmIxYTUxLi40MmZjMmU0
YWNkY2I1YmYxMDAzNDlkMzAxMWUwZDlmNjhhZjZjMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcikK
ICAgICB9IGVsc2UgaWYgKG1fYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkgPT0gbV90ZXh0dXJlLT5p
c09wYXF1ZSgpKQogICAgICAgICBtX3RleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBt
X2J1ZmZlci0+c3VwcG9ydHNBbHBoYSgpKTsKIAotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVu
dHMobV9idWZmZXItPmRhdGEoKSwgbV9zb3VyY2VSZWN0LCBtX2J1ZmZlck9mZnNldCwgbV9idWZm
ZXItPnN0cmlkZSgpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7CisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyhtX2J1ZmZlci0+ZGF0YSgpLCBt
X3NvdXJjZVJlY3QsIG1fYnVmZmVyT2Zmc2V0LCBtX2J1ZmZlci0+c3RyaWRlKCkpOwogICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwCmluZGV4IDIzOTEzMzVlNDIzNDkxYWE3N2U0NTEwMzVmZWNmOWVhZmMwMTE0
MDguLjQ5OWIxNzllY2M2NzQyMDIyMmMxNTFkMmUyYTQ5MmJmMmIyMmZhNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTMxOSw4ICszMTksNyBA
QCBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKCkKICAgICBJbnRSZWN0IHRhcmdldFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgSW50UG9pbnQgb2Zmc2V0KDAsIDApOwogICAgIGludCBieXRlc1BlckxpbmUgPSB3
aWR0aCAqIDQ7Ci0gICAgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIGZsYWdzID0g
Qml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGE7Ci0gICAgdGV4
dHVyZS0+dXBkYXRlQ29udGVudHMoZGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRlc1Blckxp
bmUsIGZsYWdzKTsKKyAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhkYXRhLCB0YXJnZXRSZWN0
LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSk7CiAKICAgICAvLyBSZW5kZXIgdGV4dHVyZS4KICAgICB0
ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336368</attachid>
            <date>2018-03-23 06:32:25 -0700</date>
            <delta_ts>2018-03-23 06:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183892-20180323143223.patch</filename>
            <type>text/plain</type>
            <size>36838</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdlOTI2YmIzNThiMzQy
YWI0MWUyZDA1NDNlODZlYWE5MTA5YTI3MS4uMTczNDg3YWU5MzM3OTYzNWU1ZGIzNzhlMTZhOTlm
NDBjMTgyZTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTAzLTIzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9p
ZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IMW9YW4gRG9iZXLFoWVrLgorCisgICAgICAgIEFsd2F5cyB1c2UgUkdC
QSBmb3JtYXQgb24gQml0bWFwVGV4dHVyZUdMICh3aGVuIG5vIG90aGVyIGZvcm1hdCBpcyBzcGVj
aWZpY2FsbHkgcmVxdWVzdGVkKS4gV2hlbgorICAgICAgICB0aGUgdGV4dHVyZSBpcyB1cGRhdGVk
IGZyb20gQkdSQSBjb250ZW50LCB1c2UgYSBmbGFnIHRvIGluZGljYXRlIHRoZSBzaGFkZXIgdG8g
cGVyZm9ybSBhIGNvbG9yCisgICAgICAgIGNvbnZlcnNpb24gZHVyaW5nIHRoZSBwYWludGluZy4g
VGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBzd2FwIHRoZSBSIGFuZCBCIGNvbXBvbmVudHMgb24g
dGhlIENQVS4KKyAgICAgICAgQWxzbywgcmVtb3ZlIG9uZSBvZiB0aGUgbGlzdHMgaW4gQml0bWFw
VGV4dHVyZVBvb2wgYXMgbm93IGFsbCBvZiB0aGVtIGhhdmUgdGhlIHNhbWUgZm9ybWF0LCBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBVcGRhdGVDb250ZW50c0ZsYWcgYXMgd2UgbmV2ZXIgbmVlZCB0
byBtb2RpZnkgdGhlIG9yaWdpbmFsIGltYWdlIGRhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN3aXp6bGVCR1JBVG9SR0JBKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3
aXp6bGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6Y29sb3JD
b252ZXJ0RmxhZ3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUG9v
bDo6YWNxdWlyZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVBvb2w6
OnJlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Q29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOjpnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50SW50b1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuaDoKKwogMjAxOC0wMy0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgc3RhbmRhcmQgY29udGFpbmVycyB3aXRoIEZh
c3RBbGxvY2F0b3Igc3BlY2lhbGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzBhYjBiZTg1OTQwYWJlOWNl
ODk2ODdkZTE5NTZjZDc5YzQ2ZDMzNy4uNWQzMmU0MmRlNzM1YzlmYTk5ZWExODNkMTYxNTA5NDQw
NzhjMTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgTWlndWVsIEdv
bWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQXZvaWQgc29m
dHdhcmUgY29sb3IgY29udmVyc2lvbiBpbnNpZGUgQml0bWFwVGV4dHVyZUdMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM4OTIKKworICAgICAgICBS
ZW1vdmUgdGhlIFVwZGF0ZUNvbnRlbnRzRmxhZyBwYXJhbWV0ZXIgd2hlbiBjYWxsaW5nIEJpdG1h
cFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBE
b2JlcsWhZWsuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgorCiAyMDE4LTAzLTIzICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIEZpeCAtV3N3
aXRjaCB3YXJuaW5ncyBhZnRlciByMjI5Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggY2ZmYTdmMjE4NDIyMmU2ZWJhODk0MDgxNTViYTMxYTU2YTNkMmQxNy4uNzk1YmY3MjIyZWE1
NjAzNTM0NzA0ZjQ2MDU0YWM1NTJmMDVkZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTIzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9pZCBzb2Z0d2FyZSBjb2xvciBjb252
ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAgICAgIFJlbW92ZSB0aGUgVXBkYXRl
Q29udGVudHNGbGFnIHBhcmFtZXRlciBhcyBpdCdzIG5vdCB1c2VkIGFueW1vcmUuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSk6CisK
IDIwMTgtMDMtMTUgIFlvdXN1a2UgS2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBGaXggYnVpbGQgZXJyb3JzIHdoZW4gRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEkgaXMgdHVybmVkIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGI3NDFlMDAwOTYyNzhiM2EyYTc2ZDUw
OGYzY2FmNTEyMGM2YzZkM2UuLjk5M2NkOWUzNTA0N2ViZWM0YTJmODYzMGE5ZTJlMTMzODFiMTg4
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKQEAgLTcwNiw3ICs3MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHcwogCiAg
ICAgaW50IHN0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUoJnZpZGVvRnJhbWUs
IDApOwogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFU
QSgmdmlkZW9GcmFtZSwgMCk7Ci0gICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBH
U1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAw
KSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRS
ZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5G
T19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsK
ICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5jcHAKaW5kZXggNDg3MDc3YmU5MzExN2I3NTNmMzdhZjM3YWZiZDE3YTBlYTM1YjZhMC4uZjkz
YzIzYzQxZjRlZTBkMmU4MTQwOTRmYjdjYzNmMDQzOWI5ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQml0bWFw
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNv
dXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zm
c2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkK
K3ZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBo
aWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNv
ZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBh
Y2NlbGVyYXRlZCBiaXQuCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBj
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlQ29udGVudHMo
aW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCksIHVwZGF0ZUNvbnRlbnRzRmxhZyk7
CisgICAgdXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjZjODg4MjViNWI1NDJk
MDAyYTgxOGU1MzFjMWU1YWYxNTk5MTI1Zi4uNmUzYjhmYmQwYWJkZjNlOTY5NzJlYTRkZTI5MTUy
NGYyZDVkMjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAg
ICAgZW51bSBGbGFnIHsKICAgICAgICAgTm9GbGFnID0gMCwKICAgICAgICAgU3VwcG9ydHNBbHBo
YSA9IDB4MDEsCi0gICAgICAgIEZCT0F0dGFjaG1lbnQgPSAweDAyCi0gICAgfTsKLQotICAgIGVu
dW0gVXBkYXRlQ29udGVudHNGbGFnIHsKLSAgICAgICAgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEsCi0gICAgICAgIFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhCiAg
ICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CkBAIC02NSw5ICs1OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0Zs
YWcsIGZsb2F0IHNjYWxlID0gMSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQs
IGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCA9IDA7CiAgICAgaW5saW5lIEZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFnczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IGE0MjA5YmMwODkyNDc0OTE0
MmU1MTg2Zjg2YThkNzlhOWI5Y2JhM2YuLjE1MDUwY2YwZDBmNmI5YjUxMDE4NDBhODYyMTdhZTA1
ZmQxZGFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEJpdG1h
cFRleHR1cmVHTCogdG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4dHVyZSogdGV4dHVyZSkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZSk7CiB9CiAKLUJp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZsYWdzIGZsYWdzLCBHTGludCBp
bnRlcm5hbEZvcm1hdCkKK0JpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZs
YWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fY29udGV4dEF0dHJpYnV0ZXMoY29u
dGV4dEF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGludGVybmFsRm9ybWF0ICE9IEdMX0RPTlRfQ0FS
RSkgewpAQCAtNjQsMzAgKzY0LDcgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wo
Y29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzJiBjb250ZXh0QXQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEZCT0F0dGFjaG1lbnQpCi0gICAgICAg
IG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIC8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBwb3J0ZWQgaW4g
dGhlIE9wZW5HTEVTCi0gICAgICAgIC8vIGludGVybmFsIGFuZCBleHRlcm5hbCBmb3JtYXRzIG5l
ZWQgdG8gYmUgQkdSQQotICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR0xfUkdCQTsKLSAgICAg
ICAgbV9mb3JtYXQgPSBHTF9CR1JBOwotICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5p
c0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5z
dXBwb3J0c0JHUkE4ODg4KQotICAgICAgICAgICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBHTF9C
R1JBOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZm9ybWF0ID0gR0xfUkdC
QTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JHQkEo
dWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdHJpZGUgPSAwKQotewot
ICAgIHN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IHJlY3Qud2lkdGgoKTsKLSAgICBmb3IgKGlu
dCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5KSB7Ci0gICAgICAgIHVpbnQzMl90
KiBwID0gZGF0YSArIHkgKiBzdHJpZGU7Ci0gICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsg
eCA8IHJlY3QubWF4WCgpOyArK3gpCi0gICAgICAgICAgICBwW3hdID0gKChwW3hdIDw8IDE2KSAm
IDB4ZmYwMDAwKSB8ICgocFt4XSA+PiAxNikgJiAweGZmKSB8IChwW3hdICYgMHhmZjAwZmYwMCk7
Ci0gICAgfQorICAgIG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7CiB9CiAK
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCkBAIC05Niw2ICs3Myw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
aWQpOwogCiAgICAgbV9zaG91bGRDbGVhciA9IHRydWU7CisgICAgbV9jb2xvckNvbnZlcnRGbGFn
cyA9IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnOwogICAgIGlmIChtX3RleHR1cmVTaXplID09IGNv
bnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA5LDMxICs4NywxMyBAQCB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBtX2ludGVybmFsRm9ybWF0LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVy
ZVNpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBtX3R5cGUsIDApOwogfQogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCogc3JjRGF0YSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwg
aW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCwgR0x1aW50IGdsRm9ybWF0
KQordm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQsIGludCBieXRlc1BlckxpbmUpCiB7Ci0gICAgLy8gRm9yIEVTIGRyaXZlcnMgdGhhdCBkb24n
dCBzdXBwb3J0IHN1Yi1pbWFnZXMuCi0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNVbnBhY2tTdWJp
bWFnZSA9IG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZTsKLQotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7Ci0KLSAgICBpZiAoY29udGV4dFN1
cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKLSAgICAgICAgLy8gVXNlIHRoZSBPcGVuR0wgc3ViLWlt
YWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2YWlsYWJsZS4KLSAgICAgICAg
Z2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQ
ZXJQaXhlbCk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291
cmNlT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElY
RUxTLCBzb3VyY2VPZmZzZXQueCgpKTsKLSAgICB9Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBtX3R5cGUsIHNyY0RhdGEp
OwotCi0gICAgaWYgKGNvbnRleHRTdXBwb3J0c1VucGFja1N1YmltYWdlKSB7Ci0gICAgICAgIGds
UGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOwotICAgICAgICBnbFBpeGVsU3Rv
cmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApOwotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VO
UEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAgfQotfQorICAgIC8vIFdlIGFyZSB1cGRhdGluZyBh
IHRleHR1cmUgd2l0aCBmb3JtYXQgUkdCQSB3aXRoIGNvbnRlbnQgZnJvbSBhIGJ1ZmZlciB0aGF0
IGhhcyBCR1JBIGZvcm1hdC4gSW5zdGVhZCBvZiB0dXJuaW5nIEJHUkEKKyAgICAvLyBpbnRvIFJH
QkEgYW5kIHRoZW4gdXBsb2FkaW5nIGl0LCB3ZSB1cGxvYWQgaXQgYXMgaXMuIFRoaXMgY2F1c2Vz
IHRoZSB0ZXh0dXJlIGZvcm1hdCB0byBiZSBSR0JBIGJ1dCB0aGUgY29udGVudCB0byBiZSBCR1JB
LAorICAgIC8vIHNvIHdlIG1hcmsgdGhlIHRleHR1cmUgdG8gY29udmVydCB0aGUgY29sb3JzIHdo
ZW4gcGFpbnRpbmcgdGhlIHRleHR1cmUuCisgICAgbV9jb2xvckNvbnZlcnRGbGFncyA9IFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQ29udmVydFRleHR1cmVCR1JBVG9SR0JBOwogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVz
UGVyTGluZSwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKLXsKICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQg
Ynl0ZXNQZXJQaXhlbCA9IDQ7CkBAIC0xNDYsNyArMTA2LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJl
R0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRh
cmdldFIKICAgICAgICAgJiYgIShieXRlc1BlckxpbmUgPT0gc3RhdGljX2Nhc3Q8aW50Pih0YXJn
ZXRSZWN0LndpZHRoKCkgKiBieXRlc1BlclBpeGVsKSAmJiBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
PSBJbnRQb2ludDo6emVybygpKTsKIAogICAgIC8vIHByZXBhcmUgdGVtcG9yYXJ5RGF0YSBpZiBu
ZWNlc3NhcnkKLSAgICBpZiAoKG1fZm9ybWF0ID09IEdMX1JHQkEgJiYgdXBkYXRlQ29udGVudHNG
bGFnID09IFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKSB8fCByZXF1aXJlU3Vi
SW1hZ2VCdWZmZXIpIHsKKyAgICBpZiAocmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CiAgICAgICAg
IHRlbXBvcmFyeURhdGEucmVzaXplKHRhcmdldFJlY3Qud2lkdGgoKSAqIHRhcmdldFJlY3QuaGVp
Z2h0KCkgKiBieXRlc1BlclBpeGVsKTsKICAgICAgICAgZGF0YSA9IHRlbXBvcmFyeURhdGEuZGF0
YSgpOwogICAgICAgICBjb25zdCBjaGFyKiBiaXRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KHNyY0RhdGEpOwpAQCAtMTYzLDEzICsxMjMsMjUgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIK
ICAgICAgICAgYWRqdXN0ZWRTb3VyY2VPZmZzZXQgPSBJbnRQb2ludCgwLCAwKTsKICAgICB9CiAK
LSAgICBpZiAobV9mb3JtYXQgPT0gR0xfUkdCQSkKLSAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEo
cmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3QqPihkYXRhKSwgSW50UmVjdChhZGp1c3RlZFNv
dXJjZU9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkpLCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBp
eGVsKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCi0gICAgdXBk
YXRlQ29udGVudHNOb1N3aXp6bGUoZGF0YSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRTb3VyY2VPZmZz
ZXQsIGJ5dGVzUGVyTGluZSwgYnl0ZXNQZXJQaXhlbCwgbV9mb3JtYXQpOworICAgIGlmIChtX2Nv
bnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgLy8gVXNl
IHRoZSBPcGVuR0wgc3ViLWltYWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2
YWlsYWJsZS4KKyAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0
ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgYWRqdXN0ZWRTb3VyY2VPZmZzZXQueSgpKTsKKyAgICAgICAgZ2xQaXhl
bFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIGFkanVzdGVkU291cmNlT2Zmc2V0LngoKSk7
CisgICAgfQorCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0Lmhl
aWdodCgpLCBtX2Zvcm1hdCwgbV90eXBlLCBzcmNEYXRhKTsKKworICAgIGlmIChtX2NvbnRleHRB
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgZ2xQaXhlbFN0b3Jl
aShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBf
UElYRUxTLCAwKTsKKyAgICB9CiB9CiAKLXZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250
ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit2b2lk
IEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Niw3ICsxNTgsNyBAQCB2b2lkIEJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjbwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlk
ZShzdXJmYWNlKTsKICNlbmRpZgogCi0gICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCB0YXJn
ZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB1
cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIHRhcmdldFJlY3QsIG9mZnNldCwgYnl0ZXNQZXJMaW5l
KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGdldFBhc3Nlc1JlcXVpcmVkRm9yRmlsdGVyKEZpbHRl
ck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtMjMyLDcgKzIwNCw3IEBAIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFw
cGVyJiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgICAgICBib29sIGxhc3QgPSAoaSA9PSBmaWx0ZXJz
LnNpemUoKSAtIDEpICYmIChqID09IG51bVBhc3NlcyAtIDEpOwogICAgICAgICAgICAgaWYgKCFs
YXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnRlcm1lZGlhdGVTdXJmYWNlKQotICAgICAg
ICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNlID0gdGV4bWFwR0wuYWNxdWlyZVRleHR1
cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwg
Qml0bWFwVGV4dHVyZTo6RkJPQXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZVN1cmZhY2UgPSB0ZXhtYXBHTC5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnRlbnRT
aXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICAgICAgICAgIHRl
eG1hcEdMLmJpbmRTdXJmYWNlKGludGVybWVkaWF0ZVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggNzQwOTBhNGRkMmJjMjRlYzg5ODVmMGRhYjBk
ODllNmFmZmJkZWZiYy4uODcwOWE4MjU2MGM2NDk4ODc0ODkzOGI4Yjg2ZTEzYmY1M2EwYmVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTUsOSArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB1aW50MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB1aW50MzJfdCB0ZXh0
dXJlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gR0xfVEVYVFVSRV8yRDsgfQogICAgIEludFNpemUg
dGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAgdm9pZCB1
cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25z
dCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zm
c2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcpIG92ZXJyaWRlOwotICAg
IHZvaWQgdXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwg
dW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQsIEdMdWludCBnbEZvcm1hdCA9IEdMX1JHQkEpOwor
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBi
eXRlc1BlckxpbmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
cHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVy
cmlkZTsKQEAgLTc5LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3B5RnJvbUV4dGVy
bmFsVGV4dHVyZShHTHVpbnQgdGV4dHVyZUlEKTsKIAorICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgY29sb3JDb252ZXJ0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yQ29udmVydEZsYWdz
OyB9CisKIHByaXZhdGU6CiAgICAgQml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcyYsIGNvbnN0IEZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAK
QEAgLTkxLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkQ2xlYXIgeyB0cnVl
IH07CiAgICAgQ2xpcFN0YWNrIG1fY2xpcFN0YWNrOwogICAgIFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyBtX2NvbnRleHRBdHRyaWJ1dGVzOworICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgbV9jb2xvckNvbnZlcnRGbGFncyB7IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnIH07CiAKICAg
ICB2b2lkIGNsZWFySWZOZWVkZWQoKTsKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVQb29sLmNwcAppbmRleCA3NWQ0YWU2OTc0OGYyZTNiNDM0ZDE1NTZkNjQ2
OGU4NTNhMWY1ZjA4Li44MTIyMDQ4NTM2ZDNhYTQ4NzU1Mzk0MDZkYTc0NTljN2UwMTc4NWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAKQEAgLTQ2LDE0ICs0NiwxMiBAQCBCaXRtYXBUZXh0
dXJlUG9vbDo6Qml0bWFwVGV4dHVyZVBvb2woY29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzJiBjb250ZQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZVBvb2w6
OmFjcXVpcmVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzIGZsYWdzKQogewotICAgIFZlY3RvcjxFbnRyeT4mIGxpc3QgPSBmbGFncyAmIEJpdG1h
cFRleHR1cmU6OkZCT0F0dGFjaG1lbnQgPyBtX2F0dGFjaG1lbnRUZXh0dXJlcyA6IG1fdGV4dHVy
ZXM7Ci0KLSAgICBFbnRyeSogc2VsZWN0ZWRFbnRyeSA9IHN0ZDo6ZmluZF9pZihsaXN0LmJlZ2lu
KCksIGxpc3QuZW5kKCksCisgICAgRW50cnkqIHNlbGVjdGVkRW50cnkgPSBzdGQ6OmZpbmRfaWYo
bV90ZXh0dXJlcy5iZWdpbigpLCBtX3RleHR1cmVzLmVuZCgpLAogICAgICAgICBbJnNpemVdKEVu
dHJ5JiBlbnRyeSkgeyByZXR1cm4gZW50cnkubV90ZXh0dXJlLT5yZWZDb3VudCgpID09IDEgJiYg
ZW50cnkubV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZTsgfSk7CiAKLSAgICBpZiAoc2VsZWN0ZWRF
bnRyeSA9PSBsaXN0LmVuZCgpKSB7Ci0gICAgICAgIGxpc3QuYXBwZW5kKEVudHJ5KGNyZWF0ZVRl
eHR1cmUoZmxhZ3MpKSk7Ci0gICAgICAgIHNlbGVjdGVkRW50cnkgPSAmbGlzdC5sYXN0KCk7Cisg
ICAgaWYgKHNlbGVjdGVkRW50cnkgPT0gbV90ZXh0dXJlcy5lbmQoKSkgeworICAgICAgICBtX3Rl
eHR1cmVzLmFwcGVuZChFbnRyeShjcmVhdGVUZXh0dXJlKGZsYWdzKSkpOworICAgICAgICBzZWxl
Y3RlZEVudHJ5ID0gJm1fdGV4dHVyZXMubGFzdCgpOwogICAgIH0KIAogICAgIHNjaGVkdWxlUmVs
ZWFzZVVudXNlZFRleHR1cmVzKCk7CkBAIC03MSwyMiArNjksMTcgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlUG9vbDo6c2NoZWR1bGVSZWxlYXNlVW51c2VkVGV4dHVyZXMoKQogCiB2b2lkIEJpdG1hcFRl
eHR1cmVQb29sOjpyZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lckZpcmVkKCkKIHsKKyAgICBpZiAo
bV90ZXh0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERlbGV0ZSBl
bnRyaWVzLCB3aGljaCBoYXZlIGJlZW4gdW51c2VkIGluIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9s
ZXJhbmNlLgogICAgIE1vbm90b25pY1RpbWUgbWluVXNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSAtIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlOwogCi0gICAgaWYgKCFtX3RleHR1
cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX3RleHR1cmVzLnJlbW92ZUFsbE1hdGNoaW5nKFsm
bWluVXNlZFRpbWVdKGNvbnN0IEVudHJ5JiBlbnRyeSkgewotICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LmNhbkJlUmVsZWFzZWQobWluVXNlZFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX2F0dGFj
aG1lbnRUZXh0dXJlcy5yZW1vdmVBbGxNYXRjaGluZyhbJm1pblVzZWRUaW1lXShjb25zdCBFbnRy
eSYgZW50cnkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVz
ZWRUaW1lKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIG1fdGV4dHVyZXMucmVtb3ZlQWxsTWF0
Y2hpbmcoWyZtaW5Vc2VkVGltZV0oY29uc3QgRW50cnkmIGVudHJ5KSB7CisgICAgICAgIHJldHVy
biBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVzZWRUaW1lKTsKKyAgICB9KTsKIAotICAgIGlmICgh
bV90ZXh0dXJlcy5pc0VtcHR5KCkgfHwgIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkK
KyAgICBpZiAoIW1fdGV4dHVyZXMuaXNFbXB0eSgpKQogICAgICAgICBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRUZXh0dXJlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCmluZGV4IDM5NmJjZTFm
ZmU3OGY0NWQyOGUxMmQ2MTY0ZmViMDM0YjE5ZTA5YTkuLmM0MjliMzJlMGY1N2I5YWVkNGM2M2M4
OGI5NGM1Mjg0NTM2NTc3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCkBAIC02Nyw3ICs2Nyw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFZlY3RvcjxFbnRyeT4gbV90ZXh0dXJlczsKLSAg
ICBWZWN0b3I8RW50cnk+IG1fYXR0YWNobWVudFRleHR1cmVzOwogICAgIFJ1bkxvb3A6OlRpbWVy
PEJpdG1hcFRleHR1cmVQb29sPiBtX3JlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODVmNDk2NGY0
YzQwMWJjYjZmNzFlMDJhYWI1NGNiZGU5Njg4OGZlOS4uMjhhZTY3NDRmODQxNTY3MmRjYjE5NmU5
ZWZiZmU1ZGIxNDExNzViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRl
Q29udGVudHNTY2FsZShwYWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwog
CiAgICAgZGlydHlSZWN0LnNjYWxlKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cygqdGV4dHVyZU1hcHBlciwg
dGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9y
aWdpbmFsSW1hZ2VEYXRhKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKCp0ZXh0
dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCk7CiAKICAgICBtX25lZWRzRGlzcGxh
eSA9IGZhbHNlOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Q29udGV4dEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKaW5kZXggODhjNjg5YmFi
MWM4YWQ1YzhhNzc3OWU4ODdiNTdkOTM1YjNhYjI1Ni4uNWIxN2RmOWJhODQ4NzA5MDYxZGJhMjhj
MTQ1NWY5ZDkxOWViNWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcy5jcHAKQEAgLTU2LDEyICs1NiwxMCBAQCBjb25zdCBUZXh0dXJlTWFwcGVyQ29u
dGV4dEF0dHJpYnV0ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkKIAog
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwogICAgICAgICBhdHRyaWJ1dGVzLnN1
cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucyhBU0NJSUxpdGVy
YWwoIkdMX09FU190ZXh0dXJlX25wb3QiKSk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNC
R1JBODg4OCA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNV
bnBhY2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJH
TF9FWFRfdW5wYWNrX3N1YmltYWdlIikpOwogI2Vsc2UKICAgICAgICAgYXR0cmlidXRlcy5pc0dM
RVMyQ29tcGxpYW50ID0gZmFsc2U7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4
dHVyZXMgPSB0cnVlOwotICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzQkdSQTg4ODggPSB0cnVl
OwogICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5o
CmluZGV4IDIwZDdkZTYwODBiZWQxM2IyYTI1MGZiNjAyNjBlNGUzMzlhYTJjNDMuLjg3NTM4ZmU3
ZDM3YzQ5YjBiYjljMjg3ZDU4NzdiMjZlYjQ0Yjg1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgKQEAgLTM1LDcgKzM1LDYgQEAgc3RydWN0IFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyB7CiAgICAgYm9vbCBpbml0aWFsaXplZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50IHsgZmFsc2UgfTsKICAgICBib29sIHN1cHBv
cnRzTlBPVFRleHR1cmVzIHsgZmFsc2UgfTsKLSAgICBib29sIHN1cHBvcnRzQkdSQTg4ODggeyBm
YWxzZSB9OwogICAgIGJvb2wgc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDdiYTJlN2Y2NzAwY2NiNjY2NjFkZmEwY2E2OGVm
MTc3N2Y2OTI4N2YuLmFkNjhmMmJkNjBmNWMxZDQzZTcxNGFlMmM3N2NkZjYxM2Y5YWM0MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
bG9hdFBvaW4KICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0
dXJlRnJvbVBvb2woc2l6ZSk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKLSAgICBzdGF0aWNfY2FzdDxCaXRt
YXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0
cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKKyAgICBzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHMoYml0cywg
c291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKICAgICBkcmF3VGV4dHVyZSgq
dGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBmLCBBbGxFZGdlcyk7CiAK
ICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CkBAIC00NjAsNyArNDYwLDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1
cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUpOwogICAg
IFNldEZvclNjb3BlPGNvbnN0IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyo+IGZpbHRlcklu
Zm8oZGF0YSgpLmZpbHRlckluZm8sIHRleHR1cmVHTC5maWx0ZXJJbmZvKCkpOwogCi0gICAgZHJh
d1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3Vs
ZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4
cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5j
b2xvckNvbnZlcnRGbGFncygpIHwgKHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kKSwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBv
c2VkRWRnZXMpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50
IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgKaW5kZXggMzY5MWFhYTllMGY2YzAxZWMxZTgwNjkzMWMxZDFiOTIxYjA0YjcwMS4u
ZTFlMzkwNWQzM2U3MjczMWUxOTNkMjZlZmMzYjFiY2NkZWU5NzM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
ckdMKCk7CiAKICAgICBlbnVtIEZsYWcgeworICAgICAgICBOb0ZsYWcgPSAweDAwLAogICAgICAg
ICBTaG91bGRCbGVuZCA9IDB4MDEsCiAgICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwK
ICAgICAgICAgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPSAweDA0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcAppbmRleCAzODFlMzE4YTI0Y2I3ODA5MGE3YzkzMDQ1Yjk1NDg5YjYzYWIxZDE0
Li44NTQ4OTcxNWZhZmQxYmYzZTlhNmEwMTRlZTM0YjZmNTQwNmZkNWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykK
IAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVy
ZTo6U3VwcG9ydHNBbHBoYSB8IEJpdG1hcFRleHR1cmU6OkZCT0F0dGFjaG1lbnQpOworICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmFjcXVp
cmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAg
ICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CiAgICAg
cGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDhiYjFlODVhNDcxZjY5Nzk3ZGE1MTQ2
MmE1MzMyYzhhZDJjMGRiNzYuLjA4MzQ5ODhiNzRmMjZlNzk3MWI3Y2M5NTdkOTg5ZDE4ZWZiZDYw
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dQogICAgIGlmICht
X2hhc01hbmFnZWRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChtX3RleHR1cmUpOwogICAgICAg
ICBCaXRtYXBUZXh0dXJlR0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVH
TCo+KG1fdGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKHRleHR1
cmVHTC0+aWQoKSwgbV9leHRyYUZsYWdzLCB0ZXh0dXJlR0wtPnNpemUoKSwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUo
dGV4dHVyZUdMLT5pZCgpLCBtX2V4dHJhRmxhZ3MgfCB0ZXh0dXJlR0wtPmNvbG9yQ29udmVydEZs
YWdzKCksIHRleHR1cmVHTC0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNw
cAppbmRleCAzOTM2NTY3M2U1NjA3YzI4MDI3YjQ2MmNjMjFjMjViOGUwZDYyY2Q5Li45ZjRhY2M0
MDUwNmRlYzdmYTUyNmU5YTA4ZjcxZGI5NjAzN2EyYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0xheWVyOwogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRz
RmxhZykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBw
ZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsK
ICAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwpAQCAtNDUsMTAgKzQ1LDEwIEBA
IHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0
UmVjdC5zaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBC
aXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICB9CiAKLSAgICBtX3RleHR1cmUtPnVw
ZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRl
bnRzRmxhZyk7CisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVj
dCwgc291cmNlT2Zmc2V0KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29u
dGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNl
TGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29u
dGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCit2b2lkIFRleHR1cmVN
YXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBH
cmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBmbG9h
dCBzY2FsZSkKIHsKICAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1f
cmVjdCk7CiAgICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKQEAgLTY0LDcgKzY0
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkKICAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0
YXJnZXRSZWN0LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAgfQog
Ci0gICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXll
ciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50c0ZsYWcsIHNjYWxlKTsK
KyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVy
LCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHNjYWxlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFw
cGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5zaWduZWQg
ZXhwb3NlZEVkZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA0OGVkZDJhZTBiYzZiOGYy
MjYzOWYwNzdjZTY0NjNmNzQzZDQ2YmE1Li4yZjRkODlmYmI1ZWU0N2JlMDhkYzk2YjI0YTZlNmE0
NDVmMzA5ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzYsOCArMzYsOCBAQCBwdWJs
aWM6CiAgICAgaW5saW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7
IG1fdGV4dHVyZSA9IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXImLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwot
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBj
b25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNh
bk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEltYWdlKiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25z
dCBJbnRSZWN0JiwgZmxvYXQgc2NhbGUgPSAxKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQsIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclRpbGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ExYWFjMjg5OGM4ZDczYzFjMzJlODdkNjRmNTZl
ZTUwZTVmY2MzOC4uYWE4YzQ5YjJkNzg0MDFhNWM2NGI3MmU2ZDc0NGUzZjU1Y2FhYmY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHAKICAgICBpZiAoIW1faW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIG1faW1h
Z2UuZ2V0KCksIG1faW1hZ2UtPnNpemUoKSwgZW5jbG9zaW5nSW50UmVjdChtX2ltYWdlLT5yZWN0
KCkpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CisgICAgdXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgbV9pbWFnZS5nZXQoKSwgbV9pbWFn
ZS0+c2l6ZSgpLCBlbmNsb3NpbmdJbnRSZWN0KG1faW1hZ2UtPnJlY3QoKSkpOwogCiAgICAgaWYg
KG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZl
cigpLT5kaWREcmF3KCptX2ltYWdlKTsKQEAgLTE0OSwxOCArMTQ5LDE4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNv
bnN0IEZsb2F0U2l6CiAgICAgfQogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2Uq
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBjcmVhdGVPckRl
c3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci5tYXhUZXh0dXJlU2l6
ZSgpLCAhaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKICAgICBmb3IgKGF1
dG8mIHRpbGUgOiBtX3RpbGVzKQotICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVN
YXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgICAgIHRp
bGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCk7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29u
c3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKK3ZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgRmxvYXRT
aXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci5tYXhUZXh0dXJl
U2l6ZSgpLCB0cnVlKTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzKQotICAgICAgICB0
aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCBkaXJ0eVJlY3Qs
IHVwZGF0ZUNvbnRlbnRzRmxhZywgbV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgdGlsZS51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCBtX2NvbnRl
bnRzU2NhbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggM2FhZGJhY2I0OWZmYzQ3MmJmYzEx
ODZlNGMxYzM3NDU1NGQ0NjA0OC4uMjQwZTkyNGZjYzU0OGI0YjJmMzI2MTAyZTc2OTc2ODI2YmI2
ZTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApA
QCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4
dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
KFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdm9pZCB1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwg
R3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmKTsKIAogICAg
IHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA1YjRhODhj
M2E1MGNlYmM1Y2NjM2FlN2UxNmU4NjE2NmI4YmIxYTUxLi40MmZjMmU0YWNkY2I1YmYxMDAzNDlk
MzAxMWUwZDlmNjhhZjZjMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6
c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcikKICAgICB9IGVsc2UgaWYg
KG1fYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkgPT0gbV90ZXh0dXJlLT5pc09wYXF1ZSgpKQogICAg
ICAgICBtX3RleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBtX2J1ZmZlci0+c3VwcG9y
dHNBbHBoYSgpKTsKIAotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMobV9idWZmZXItPmRh
dGEoKSwgbV9zb3VyY2VSZWN0LCBtX2J1ZmZlck9mZnNldCwgbV9idWZmZXItPnN0cmlkZSgpLCBC
aXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgbV90
ZXh0dXJlLT51cGRhdGVDb250ZW50cyhtX2J1ZmZlci0+ZGF0YSgpLCBtX3NvdXJjZVJlY3QsIG1f
YnVmZmVyT2Zmc2V0LCBtX2J1ZmZlci0+c3RyaWRlKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDIzOTEzMzVlNDIzNDkxYWE3N2U0NTEwMzVmZWNmOWVhZmMwMTE0MDguLjQ5OWIxNzllY2M2
NzQyMDIyMmMxNTFkMmUyYTQ5MmJmMmIyMmZhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTMxOSw4ICszMTksNyBAQCBib29sIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkK
ICAgICBJbnRSZWN0IHRhcmdldFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgSW50UG9p
bnQgb2Zmc2V0KDAsIDApOwogICAgIGludCBieXRlc1BlckxpbmUgPSB3aWR0aCAqIDQ7Ci0gICAg
Qml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIGZsYWdzID0gQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGE7Ci0gICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoZGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRlc1BlckxpbmUsIGZsYWdzKTsKKyAg
ICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhkYXRhLCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVz
UGVyTGluZSk7CiAKICAgICAvLyBSZW5kZXIgdGV4dHVyZS4KICAgICB0ZXh0dXJlTWFwcGVyLT5i
ZWdpblBhaW50aW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336369</attachid>
            <date>2018-03-23 06:47:38 -0700</date>
            <delta_ts>2018-03-23 08:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183892-20180323144737.patch</filename>
            <type>text/plain</type>
            <size>36838</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdlOTI2YmIzNThiMzQy
YWI0MWUyZDA1NDNlODZlYWE5MTA5YTI3MS4uMTczNDg3YWU5MzM3OTYzNWU1ZGIzNzhlMTZhOTlm
NDBjMTgyZTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTAzLTIzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9p
ZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IMW9YW4gRG9iZXLFoWVrLgorCisgICAgICAgIEFsd2F5cyB1c2UgUkdC
QSBmb3JtYXQgb24gQml0bWFwVGV4dHVyZUdMICh3aGVuIG5vIG90aGVyIGZvcm1hdCBpcyBzcGVj
aWZpY2FsbHkgcmVxdWVzdGVkKS4gV2hlbgorICAgICAgICB0aGUgdGV4dHVyZSBpcyB1cGRhdGVk
IGZyb20gQkdSQSBjb250ZW50LCB1c2UgYSBmbGFnIHRvIGluZGljYXRlIHRoZSBzaGFkZXIgdG8g
cGVyZm9ybSBhIGNvbG9yCisgICAgICAgIGNvbnZlcnNpb24gZHVyaW5nIHRoZSBwYWludGluZy4g
VGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBzd2FwIHRoZSBSIGFuZCBCIGNvbXBvbmVudHMgb24g
dGhlIENQVS4KKyAgICAgICAgQWxzbywgcmVtb3ZlIG9uZSBvZiB0aGUgbGlzdHMgaW4gQml0bWFw
VGV4dHVyZVBvb2wgYXMgbm93IGFsbCBvZiB0aGVtIGhhdmUgdGhlIHNhbWUgZm9ybWF0LCBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBVcGRhdGVDb250ZW50c0ZsYWcgYXMgd2UgbmV2ZXIgbmVlZCB0
byBtb2RpZnkgdGhlIG9yaWdpbmFsIGltYWdlIGRhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN3aXp6bGVCR1JBVG9SR0JBKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3
aXp6bGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6Y29sb3JD
b252ZXJ0RmxhZ3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUG9v
bDo6YWNxdWlyZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVBvb2w6
OnJlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Q29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOjpnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50SW50b1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuaDoKKwogMjAxOC0wMy0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgc3RhbmRhcmQgY29udGFpbmVycyB3aXRoIEZh
c3RBbGxvY2F0b3Igc3BlY2lhbGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzBhYjBiZTg1OTQwYWJlOWNl
ODk2ODdkZTE5NTZjZDc5YzQ2ZDMzNy4uNWQzMmU0MmRlNzM1YzlmYTk5ZWExODNkMTYxNTA5NDQw
NzhjMTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgTWlndWVsIEdv
bWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQXZvaWQgc29m
dHdhcmUgY29sb3IgY29udmVyc2lvbiBpbnNpZGUgQml0bWFwVGV4dHVyZUdMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM4OTIKKworICAgICAgICBS
ZW1vdmUgdGhlIFVwZGF0ZUNvbnRlbnRzRmxhZyBwYXJhbWV0ZXIgd2hlbiBjYWxsaW5nIEJpdG1h
cFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBE
b2JlcsWhZWsuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgorCiAyMDE4LTAzLTIzICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIEZpeCAtV3N3
aXRjaCB3YXJuaW5ncyBhZnRlciByMjI5Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggY2ZmYTdmMjE4NDIyMmU2ZWJhODk0MDgxNTViYTMxYTU2YTNkMmQxNy4uNzk1YmY3MjIyZWE1
NjAzNTM0NzA0ZjQ2MDU0YWM1NTJmMDVkZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTIzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBdm9pZCBzb2Z0d2FyZSBjb2xvciBjb252
ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg5MgorCisgICAgICAgIFJlbW92ZSB0aGUgVXBkYXRl
Q29udGVudHNGbGFnIHBhcmFtZXRlciBhcyBpdCdzIG5vdCB1c2VkIGFueW1vcmUuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSk6CisK
IDIwMTgtMDMtMTUgIFlvdXN1a2UgS2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBGaXggYnVpbGQgZXJyb3JzIHdoZW4gRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEkgaXMgdHVybmVkIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGI3NDFlMDAwOTYyNzhiM2EyYTc2ZDUw
OGYzY2FmNTEyMGM2YzZkM2UuLjk5M2NkOWUzNTA0N2ViZWM0YTJmODYzMGE5ZTJlMTMzODFiMTg4
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKQEAgLTcwNiw3ICs3MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlLCBHcwogCiAg
ICAgaW50IHN0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUoJnZpZGVvRnJhbWUs
IDApOwogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFU
QSgmdmlkZW9GcmFtZSwgMCk7Ci0gICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBH
U1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAw
KSwgc3RyaWRlLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7CisgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRS
ZWN0KDAsIDAsIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5G
T19IRUlHSFQoJnZpZGVvSW5mbykpLCBXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsK
ICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5jcHAKaW5kZXggNDg3MDc3YmU5MzExN2I3NTNmMzdhZjM3YWZiZDE3YTBlYTM1YjZhMC4uZjkz
YzIzYzQxZjRlZTBkMmU4MTQwOTRmYjdjYzNmMDQzOWI5ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQml0bWFw
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNv
dXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zm
c2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkK
K3ZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBo
aWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNv
ZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBh
Y2NlbGVyYXRlZCBiaXQuCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBj
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlQ29udGVudHMo
aW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCksIHVwZGF0ZUNvbnRlbnRzRmxhZyk7
CisgICAgdXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjZjODg4MjViNWI1NDJk
MDAyYTgxOGU1MzFjMWU1YWYxNTk5MTI1Zi4uNmUzYjhmYmQwYWJkZjNlOTY5NzJlYTRkZTI5MTUy
NGYyZDVkMjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAg
ICAgZW51bSBGbGFnIHsKICAgICAgICAgTm9GbGFnID0gMCwKICAgICAgICAgU3VwcG9ydHNBbHBo
YSA9IDB4MDEsCi0gICAgICAgIEZCT0F0dGFjaG1lbnQgPSAweDAyCi0gICAgfTsKLQotICAgIGVu
dW0gVXBkYXRlQ29udGVudHNGbGFnIHsKLSAgICAgICAgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEsCi0gICAgICAgIFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhCiAg
ICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CkBAIC02NSw5ICs1OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0Zs
YWcsIGZsb2F0IHNjYWxlID0gMSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQs
IGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCA9IDA7CiAgICAgaW5saW5lIEZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFnczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IGE0MjA5YmMwODkyNDc0OTE0
MmU1MTg2Zjg2YThkNzlhOWI5Y2JhM2YuLjE1MDUwY2YwZDBmNmI5YjUxMDE4NDBhODYyMTdhZTA1
ZmQxZGFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEJpdG1h
cFRleHR1cmVHTCogdG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4dHVyZSogdGV4dHVyZSkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZSk7CiB9CiAKLUJp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZsYWdzIGZsYWdzLCBHTGludCBp
bnRlcm5hbEZvcm1hdCkKK0JpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKGNvbnN0IFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyYgY29udGV4dEF0dHJpYnV0ZXMsIGNvbnN0IEZs
YWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fY29udGV4dEF0dHJpYnV0ZXMoY29u
dGV4dEF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGludGVybmFsRm9ybWF0ICE9IEdMX0RPTlRfQ0FS
RSkgewpAQCAtNjQsMzAgKzY0LDcgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wo
Y29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzJiBjb250ZXh0QXQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEZCT0F0dGFjaG1lbnQpCi0gICAgICAg
IG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIC8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBwb3J0ZWQgaW4g
dGhlIE9wZW5HTEVTCi0gICAgICAgIC8vIGludGVybmFsIGFuZCBleHRlcm5hbCBmb3JtYXRzIG5l
ZWQgdG8gYmUgQkdSQQotICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR0xfUkdCQTsKLSAgICAg
ICAgbV9mb3JtYXQgPSBHTF9CR1JBOwotICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5p
c0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgICAgICBpZiAobV9jb250ZXh0QXR0cmlidXRlcy5z
dXBwb3J0c0JHUkE4ODg4KQotICAgICAgICAgICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBHTF9C
R1JBOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZm9ybWF0ID0gR0xfUkdC
QTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JHQkEo
dWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdHJpZGUgPSAwKQotewot
ICAgIHN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IHJlY3Qud2lkdGgoKTsKLSAgICBmb3IgKGlu
dCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5KSB7Ci0gICAgICAgIHVpbnQzMl90
KiBwID0gZGF0YSArIHkgKiBzdHJpZGU7Ci0gICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsg
eCA8IHJlY3QubWF4WCgpOyArK3gpCi0gICAgICAgICAgICBwW3hdID0gKChwW3hdIDw8IDE2KSAm
IDB4ZmYwMDAwKSB8ICgocFt4XSA+PiAxNikgJiAweGZmKSB8IChwW3hdICYgMHhmZjAwZmYwMCk7
Ci0gICAgfQorICAgIG1faW50ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IEdMX1JHQkE7CiB9CiAK
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCkBAIC05Niw2ICs3Myw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
aWQpOwogCiAgICAgbV9zaG91bGRDbGVhciA9IHRydWU7CisgICAgbV9jb2xvckNvbnZlcnRGbGFn
cyA9IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnOwogICAgIGlmIChtX3RleHR1cmVTaXplID09IGNv
bnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA5LDMxICs4NywxMyBAQCB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBtX2ludGVybmFsRm9ybWF0LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVy
ZVNpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBtX3R5cGUsIDApOwogfQogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCogc3JjRGF0YSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwg
aW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCwgR0x1aW50IGdsRm9ybWF0
KQordm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQsIGludCBieXRlc1BlckxpbmUpCiB7Ci0gICAgLy8gRm9yIEVTIGRyaXZlcnMgdGhhdCBkb24n
dCBzdXBwb3J0IHN1Yi1pbWFnZXMuCi0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNVbnBhY2tTdWJp
bWFnZSA9IG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNVbnBhY2tTdWJpbWFnZTsKLQotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7Ci0KLSAgICBpZiAoY29udGV4dFN1
cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKLSAgICAgICAgLy8gVXNlIHRoZSBPcGVuR0wgc3ViLWlt
YWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2YWlsYWJsZS4KLSAgICAgICAg
Z2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQ
ZXJQaXhlbCk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291
cmNlT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElY
RUxTLCBzb3VyY2VPZmZzZXQueCgpKTsKLSAgICB9Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBtX3R5cGUsIHNyY0RhdGEp
OwotCi0gICAgaWYgKGNvbnRleHRTdXBwb3J0c1VucGFja1N1YmltYWdlKSB7Ci0gICAgICAgIGds
UGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOwotICAgICAgICBnbFBpeGVsU3Rv
cmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApOwotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VO
UEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAgfQotfQorICAgIC8vIFdlIGFyZSB1cGRhdGluZyBh
IHRleHR1cmUgd2l0aCBmb3JtYXQgUkdCQSB3aXRoIGNvbnRlbnQgZnJvbSBhIGJ1ZmZlciB0aGF0
IGhhcyBCR1JBIGZvcm1hdC4gSW5zdGVhZCBvZiB0dXJuaW5nIEJHUkEKKyAgICAvLyBpbnRvIFJH
QkEgYW5kIHRoZW4gdXBsb2FkaW5nIGl0LCB3ZSB1cGxvYWQgaXQgYXMgaXMuIFRoaXMgY2F1c2Vz
IHRoZSB0ZXh0dXJlIGZvcm1hdCB0byBiZSBSR0JBIGJ1dCB0aGUgY29udGVudCB0byBiZSBCR1JB
LAorICAgIC8vIHNvIHdlIG1hcmsgdGhlIHRleHR1cmUgdG8gY29udmVydCB0aGUgY29sb3JzIHdo
ZW4gcGFpbnRpbmcgdGhlIHRleHR1cmUuCisgICAgbV9jb2xvckNvbnZlcnRGbGFncyA9IFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQ29udmVydFRleHR1cmVCR1JBVG9SR0JBOwogCi12b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVz
UGVyTGluZSwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKLXsKICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQg
Ynl0ZXNQZXJQaXhlbCA9IDQ7CkBAIC0xNDYsNyArMTA2LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJl
R0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRh
cmdldFIKICAgICAgICAgJiYgIShieXRlc1BlckxpbmUgPT0gc3RhdGljX2Nhc3Q8aW50Pih0YXJn
ZXRSZWN0LndpZHRoKCkgKiBieXRlc1BlclBpeGVsKSAmJiBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
PSBJbnRQb2ludDo6emVybygpKTsKIAogICAgIC8vIHByZXBhcmUgdGVtcG9yYXJ5RGF0YSBpZiBu
ZWNlc3NhcnkKLSAgICBpZiAoKG1fZm9ybWF0ID09IEdMX1JHQkEgJiYgdXBkYXRlQ29udGVudHNG
bGFnID09IFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKSB8fCByZXF1aXJlU3Vi
SW1hZ2VCdWZmZXIpIHsKKyAgICBpZiAocmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CiAgICAgICAg
IHRlbXBvcmFyeURhdGEucmVzaXplKHRhcmdldFJlY3Qud2lkdGgoKSAqIHRhcmdldFJlY3QuaGVp
Z2h0KCkgKiBieXRlc1BlclBpeGVsKTsKICAgICAgICAgZGF0YSA9IHRlbXBvcmFyeURhdGEuZGF0
YSgpOwogICAgICAgICBjb25zdCBjaGFyKiBiaXRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KHNyY0RhdGEpOwpAQCAtMTYzLDEzICsxMjMsMjUgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIK
ICAgICAgICAgYWRqdXN0ZWRTb3VyY2VPZmZzZXQgPSBJbnRQb2ludCgwLCAwKTsKICAgICB9CiAK
LSAgICBpZiAobV9mb3JtYXQgPT0gR0xfUkdCQSkKLSAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEo
cmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3QqPihkYXRhKSwgSW50UmVjdChhZGp1c3RlZFNv
dXJjZU9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkpLCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBp
eGVsKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpOwogCi0gICAgdXBk
YXRlQ29udGVudHNOb1N3aXp6bGUoZGF0YSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRTb3VyY2VPZmZz
ZXQsIGJ5dGVzUGVyTGluZSwgYnl0ZXNQZXJQaXhlbCwgbV9mb3JtYXQpOworICAgIGlmIChtX2Nv
bnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgLy8gVXNl
IHRoZSBPcGVuR0wgc3ViLWltYWdlIGV4dGVuc2lvbiwgbm93IHRoYXQgd2Uga25vdyBpdCdzIGF2
YWlsYWJsZS4KKyAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0
ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgYWRqdXN0ZWRTb3VyY2VPZmZzZXQueSgpKTsKKyAgICAgICAgZ2xQaXhl
bFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIGFkanVzdGVkU291cmNlT2Zmc2V0LngoKSk7
CisgICAgfQorCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0Lmhl
aWdodCgpLCBtX2Zvcm1hdCwgbV90eXBlLCBzcmNEYXRhKTsKKworICAgIGlmIChtX2NvbnRleHRB
dHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UpIHsKKyAgICAgICAgZ2xQaXhlbFN0b3Jl
aShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBf
UElYRUxTLCAwKTsKKyAgICB9CiB9CiAKLXZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250
ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit2b2lk
IEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Niw3ICsxNTgsNyBAQCB2b2lkIEJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjbwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlk
ZShzdXJmYWNlKTsKICNlbmRpZgogCi0gICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCB0YXJn
ZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB1
cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIHRhcmdldFJlY3QsIG9mZnNldCwgYnl0ZXNQZXJMaW5l
KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGdldFBhc3Nlc1JlcXVpcmVkRm9yRmlsdGVyKEZpbHRl
ck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtMjMyLDcgKzIwNCw3IEBAIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFw
cGVyJiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgICAgICBib29sIGxhc3QgPSAoaSA9PSBmaWx0ZXJz
LnNpemUoKSAtIDEpICYmIChqID09IG51bVBhc3NlcyAtIDEpOwogICAgICAgICAgICAgaWYgKCFs
YXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnRlcm1lZGlhdGVTdXJmYWNlKQotICAgICAg
ICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNlID0gdGV4bWFwR0wuYWNxdWlyZVRleHR1
cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwg
Qml0bWFwVGV4dHVyZTo6RkJPQXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZVN1cmZhY2UgPSB0ZXhtYXBHTC5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnRlbnRT
aXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICAgICAgICAgIHRl
eG1hcEdMLmJpbmRTdXJmYWNlKGludGVybWVkaWF0ZVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggNzQwOTBhNGRkMmJjMjRlYzg5ODVmMGRhYjBk
ODllNmFmZmJkZWZiYy4uODcwOWE4MjU2MGM2NDk4ODc0ODkzOGI4Yjg2ZTEzYmY1M2EwYmVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTUsOSArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB1aW50MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB1aW50MzJfdCB0ZXh0
dXJlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gR0xfVEVYVFVSRV8yRDsgfQogICAgIEludFNpemUg
dGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAgdm9pZCB1
cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25z
dCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zm
c2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcpIG92ZXJyaWRlOwotICAg
IHZvaWQgdXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwg
dW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQsIEdMdWludCBnbEZvcm1hdCA9IEdMX1JHQkEpOwor
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBi
eXRlc1BlckxpbmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
cHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVy
cmlkZTsKQEAgLTc5LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3B5RnJvbUV4dGVy
bmFsVGV4dHVyZShHTHVpbnQgdGV4dHVyZUlEKTsKIAorICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgY29sb3JDb252ZXJ0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yQ29udmVydEZsYWdz
OyB9CisKIHByaXZhdGU6CiAgICAgQml0bWFwVGV4dHVyZUdMKGNvbnN0IFRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcyYsIGNvbnN0IEZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAK
QEAgLTkxLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkQ2xlYXIgeyB0cnVl
IH07CiAgICAgQ2xpcFN0YWNrIG1fY2xpcFN0YWNrOwogICAgIFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcyBtX2NvbnRleHRBdHRyaWJ1dGVzOworICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgbV9jb2xvckNvbnZlcnRGbGFncyB7IFRleHR1cmVNYXBwZXJHTDo6Tm9GbGFnIH07CiAKICAg
ICB2b2lkIGNsZWFySWZOZWVkZWQoKTsKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVQb29sLmNwcAppbmRleCA3NWQ0YWU2OTc0OGYyZTNiNDM0ZDE1NTZkNjQ2
OGU4NTNhMWY1ZjA4Li44MTIyMDQ4NTM2ZDNhYTQ4NzU1Mzk0MDZkYTc0NTljN2UwMTc4NWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAKQEAgLTQ2LDE0ICs0NiwxMiBAQCBCaXRtYXBUZXh0
dXJlUG9vbDo6Qml0bWFwVGV4dHVyZVBvb2woY29uc3QgVGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzJiBjb250ZQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZVBvb2w6
OmFjcXVpcmVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzIGZsYWdzKQogewotICAgIFZlY3RvcjxFbnRyeT4mIGxpc3QgPSBmbGFncyAmIEJpdG1h
cFRleHR1cmU6OkZCT0F0dGFjaG1lbnQgPyBtX2F0dGFjaG1lbnRUZXh0dXJlcyA6IG1fdGV4dHVy
ZXM7Ci0KLSAgICBFbnRyeSogc2VsZWN0ZWRFbnRyeSA9IHN0ZDo6ZmluZF9pZihsaXN0LmJlZ2lu
KCksIGxpc3QuZW5kKCksCisgICAgRW50cnkqIHNlbGVjdGVkRW50cnkgPSBzdGQ6OmZpbmRfaWYo
bV90ZXh0dXJlcy5iZWdpbigpLCBtX3RleHR1cmVzLmVuZCgpLAogICAgICAgICBbJnNpemVdKEVu
dHJ5JiBlbnRyeSkgeyByZXR1cm4gZW50cnkubV90ZXh0dXJlLT5yZWZDb3VudCgpID09IDEgJiYg
ZW50cnkubV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZTsgfSk7CiAKLSAgICBpZiAoc2VsZWN0ZWRF
bnRyeSA9PSBsaXN0LmVuZCgpKSB7Ci0gICAgICAgIGxpc3QuYXBwZW5kKEVudHJ5KGNyZWF0ZVRl
eHR1cmUoZmxhZ3MpKSk7Ci0gICAgICAgIHNlbGVjdGVkRW50cnkgPSAmbGlzdC5sYXN0KCk7Cisg
ICAgaWYgKHNlbGVjdGVkRW50cnkgPT0gbV90ZXh0dXJlcy5lbmQoKSkgeworICAgICAgICBtX3Rl
eHR1cmVzLmFwcGVuZChFbnRyeShjcmVhdGVUZXh0dXJlKGZsYWdzKSkpOworICAgICAgICBzZWxl
Y3RlZEVudHJ5ID0gJm1fdGV4dHVyZXMubGFzdCgpOwogICAgIH0KIAogICAgIHNjaGVkdWxlUmVs
ZWFzZVVudXNlZFRleHR1cmVzKCk7CkBAIC03MSwyMiArNjksMTcgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlUG9vbDo6c2NoZWR1bGVSZWxlYXNlVW51c2VkVGV4dHVyZXMoKQogCiB2b2lkIEJpdG1hcFRl
eHR1cmVQb29sOjpyZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lckZpcmVkKCkKIHsKKyAgICBpZiAo
bV90ZXh0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERlbGV0ZSBl
bnRyaWVzLCB3aGljaCBoYXZlIGJlZW4gdW51c2VkIGluIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9s
ZXJhbmNlLgogICAgIE1vbm90b25pY1RpbWUgbWluVXNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSAtIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlOwogCi0gICAgaWYgKCFtX3RleHR1
cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX3RleHR1cmVzLnJlbW92ZUFsbE1hdGNoaW5nKFsm
bWluVXNlZFRpbWVdKGNvbnN0IEVudHJ5JiBlbnRyeSkgewotICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LmNhbkJlUmVsZWFzZWQobWluVXNlZFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX2F0dGFj
aG1lbnRUZXh0dXJlcy5yZW1vdmVBbGxNYXRjaGluZyhbJm1pblVzZWRUaW1lXShjb25zdCBFbnRy
eSYgZW50cnkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVz
ZWRUaW1lKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIG1fdGV4dHVyZXMucmVtb3ZlQWxsTWF0
Y2hpbmcoWyZtaW5Vc2VkVGltZV0oY29uc3QgRW50cnkmIGVudHJ5KSB7CisgICAgICAgIHJldHVy
biBlbnRyeS5jYW5CZVJlbGVhc2VkKG1pblVzZWRUaW1lKTsKKyAgICB9KTsKIAotICAgIGlmICgh
bV90ZXh0dXJlcy5pc0VtcHR5KCkgfHwgIW1fYXR0YWNobWVudFRleHR1cmVzLmlzRW1wdHkoKSkK
KyAgICBpZiAoIW1fdGV4dHVyZXMuaXNFbXB0eSgpKQogICAgICAgICBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRUZXh0dXJlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCmluZGV4IDM5NmJjZTFm
ZmU3OGY0NWQyOGUxMmQ2MTY0ZmViMDM0YjE5ZTA5YTkuLmM0MjliMzJlMGY1N2I5YWVkNGM2M2M4
OGI5NGM1Mjg0NTM2NTc3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCkBAIC02Nyw3ICs2Nyw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFZlY3RvcjxFbnRyeT4gbV90ZXh0dXJlczsKLSAg
ICBWZWN0b3I8RW50cnk+IG1fYXR0YWNobWVudFRleHR1cmVzOwogICAgIFJ1bkxvb3A6OlRpbWVy
PEJpdG1hcFRleHR1cmVQb29sPiBtX3JlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODVmNDk2NGY0
YzQwMWJjYjZmNzFlMDJhYWI1NGNiZGU5Njg4OGZlOS4uMjhhZTY3NDRmODQxNTY3MmRjYjE5NmU5
ZWZiZmU1ZGIxNDExNzViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRl
Q29udGVudHNTY2FsZShwYWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwog
CiAgICAgZGlydHlSZWN0LnNjYWxlKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cygqdGV4dHVyZU1hcHBlciwg
dGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9y
aWdpbmFsSW1hZ2VEYXRhKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKCp0ZXh0
dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCk7CiAKICAgICBtX25lZWRzRGlzcGxh
eSA9IGZhbHNlOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Q29udGV4dEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKaW5kZXggODhjNjg5YmFi
MWM4YWQ1YzhhNzc3OWU4ODdiNTdkOTM1YjNhYjI1Ni4uNWIxN2RmOWJhODQ4NzA5MDYxZGJhMjhj
MTQ1NWY5ZDkxOWViNWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlcy5jcHAKQEAgLTU2LDEyICs1NiwxMCBAQCBjb25zdCBUZXh0dXJlTWFwcGVyQ29u
dGV4dEF0dHJpYnV0ZXMmIFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkKIAog
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwogICAgICAgICBhdHRyaWJ1dGVzLnN1
cHBvcnRzTlBPVFRleHR1cmVzID0gZXh0ZW5zaW9uc1N0cmluZy5jb250YWlucyhBU0NJSUxpdGVy
YWwoIkdMX09FU190ZXh0dXJlX25wb3QiKSk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNC
R1JBODg4OCA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNV
bnBhY2tTdWJpbWFnZSA9IGV4dGVuc2lvbnNTdHJpbmcuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJH
TF9FWFRfdW5wYWNrX3N1YmltYWdlIikpOwogI2Vsc2UKICAgICAgICAgYXR0cmlidXRlcy5pc0dM
RVMyQ29tcGxpYW50ID0gZmFsc2U7CiAgICAgICAgIGF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4
dHVyZXMgPSB0cnVlOwotICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzQkdSQTg4ODggPSB0cnVl
OwogICAgICAgICBhdHRyaWJ1dGVzLnN1cHBvcnRzVW5wYWNrU3ViaW1hZ2UgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5o
CmluZGV4IDIwZDdkZTYwODBiZWQxM2IyYTI1MGZiNjAyNjBlNGUzMzlhYTJjNDMuLjg3NTM4ZmU3
ZDM3YzQ5YjBiYjljMjg3ZDU4NzdiMjZlYjQ0Yjg1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgKQEAgLTM1LDcgKzM1LDYgQEAgc3RydWN0IFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyB7CiAgICAgYm9vbCBpbml0aWFsaXplZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50IHsgZmFsc2UgfTsKICAgICBib29sIHN1cHBv
cnRzTlBPVFRleHR1cmVzIHsgZmFsc2UgfTsKLSAgICBib29sIHN1cHBvcnRzQkdSQTg4ODggeyBm
YWxzZSB9OwogICAgIGJvb2wgc3VwcG9ydHNVbnBhY2tTdWJpbWFnZSB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDdiYTJlN2Y2NzAwY2NiNjY2NjFkZmEwY2E2OGVm
MTc3N2Y2OTI4N2YuLmFkNjhmMmJkNjBmNWMxZDQzZTcxNGFlMmM3N2NkZjYxM2Y5YWM0MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
bG9hdFBvaW4KICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0
dXJlRnJvbVBvb2woc2l6ZSk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKLSAgICBzdGF0aWNfY2FzdDxCaXRt
YXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0
cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKKyAgICBzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHMoYml0cywg
c291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8oKSwgc3RyaWRlKTsKICAgICBkcmF3VGV4dHVyZSgq
dGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBmLCBBbGxFZGdlcyk7CiAK
ICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CkBAIC00NjAsNyArNDYwLDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1
cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUpOwogICAg
IFNldEZvclNjb3BlPGNvbnN0IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyo+IGZpbHRlcklu
Zm8oZGF0YSgpLmZpbHRlckluZm8sIHRleHR1cmVHTC5maWx0ZXJJbmZvKCkpOwogCi0gICAgZHJh
d1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3Vs
ZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4
cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5j
b2xvckNvbnZlcnRGbGFncygpIHwgKHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kKSwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBv
c2VkRWRnZXMpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50
IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgKaW5kZXggMzY5MWFhYTllMGY2YzAxZWMxZTgwNjkzMWMxZDFiOTIxYjA0YjcwMS4u
ZTFlMzkwNWQzM2U3MjczMWUxOTNkMjZlZmMzYjFiY2NkZWU5NzM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
ckdMKCk7CiAKICAgICBlbnVtIEZsYWcgeworICAgICAgICBOb0ZsYWcgPSAweDAwLAogICAgICAg
ICBTaG91bGRCbGVuZCA9IDB4MDEsCiAgICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwK
ICAgICAgICAgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPSAweDA0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcAppbmRleCAzODFlMzE4YTI0Y2I3ODA5MGE3YzkzMDQ1Yjk1NDg5YjYzYWIxZDE0
Li44NTQ4OTcxNWZhZmQxYmYzZTlhNmEwMTRlZTM0YjZmNTQwNmZkNWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykK
IAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVy
ZTo6U3VwcG9ydHNBbHBoYSB8IEJpdG1hcFRleHR1cmU6OkZCT0F0dGFjaG1lbnQpOworICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmFjcXVp
cmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAg
ICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CiAgICAg
cGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDhiYjFlODVhNDcxZjY5Nzk3ZGE1MTQ2
MmE1MzMyYzhhZDJjMGRiNzYuLjA4MzQ5ODhiNzRmMjZlNzk3MWI3Y2M5NTdkOTg5ZDE4ZWZiZDYw
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dQogICAgIGlmICht
X2hhc01hbmFnZWRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChtX3RleHR1cmUpOwogICAgICAg
ICBCaXRtYXBUZXh0dXJlR0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVH
TCo+KG1fdGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKHRleHR1
cmVHTC0+aWQoKSwgbV9leHRyYUZsYWdzLCB0ZXh0dXJlR0wtPnNpemUoKSwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUo
dGV4dHVyZUdMLT5pZCgpLCBtX2V4dHJhRmxhZ3MgfCB0ZXh0dXJlR0wtPmNvbG9yQ29udmVydEZs
YWdzKCksIHRleHR1cmVHTC0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNw
cAppbmRleCAzOTM2NTY3M2U1NjA3YzI4MDI3YjQ2MmNjMjFjMjViOGUwZDYyY2Q5Li45ZjRhY2M0
MDUwNmRlYzdmYTUyNmU5YTA4ZjcxZGI5NjAzN2EyYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0xheWVyOwogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRz
RmxhZykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBw
ZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsK
ICAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwpAQCAtNDUsMTAgKzQ1LDEwIEBA
IHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0
UmVjdC5zaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBC
aXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICB9CiAKLSAgICBtX3RleHR1cmUtPnVw
ZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRl
bnRzRmxhZyk7CisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVj
dCwgc291cmNlT2Zmc2V0KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29u
dGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNl
TGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29u
dGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCit2b2lkIFRleHR1cmVN
YXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBH
cmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBmbG9h
dCBzY2FsZSkKIHsKICAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1f
cmVjdCk7CiAgICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKQEAgLTY0LDcgKzY0
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkKICAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0
YXJnZXRSZWN0LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAgfQog
Ci0gICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXll
ciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50c0ZsYWcsIHNjYWxlKTsK
KyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVy
LCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHNjYWxlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFw
cGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5zaWduZWQg
ZXhwb3NlZEVkZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA0OGVkZDJhZTBiYzZiOGYy
MjYzOWYwNzdjZTY0NjNmNzQzZDQ2YmE1Li4yZjRkODlmYmI1ZWU0N2JlMDhkYzk2YjI0YTZlNmE0
NDVmMzA5ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzYsOCArMzYsOCBAQCBwdWJs
aWM6CiAgICAgaW5saW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7
IG1fdGV4dHVyZSA9IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXImLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwot
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBj
b25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNh
bk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEltYWdlKiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25z
dCBJbnRSZWN0JiwgZmxvYXQgc2NhbGUgPSAxKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQsIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclRpbGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ExYWFjMjg5OGM4ZDczYzFjMzJlODdkNjRmNTZl
ZTUwZTVmY2MzOC4uYWE4YzQ5YjJkNzg0MDFhNWM2NGI3MmU2ZDc0NGUzZjU1Y2FhYmY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHAKICAgICBpZiAoIW1faW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIG1faW1h
Z2UuZ2V0KCksIG1faW1hZ2UtPnNpemUoKSwgZW5jbG9zaW5nSW50UmVjdChtX2ltYWdlLT5yZWN0
KCkpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CisgICAgdXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgbV9pbWFnZS5nZXQoKSwgbV9pbWFn
ZS0+c2l6ZSgpLCBlbmNsb3NpbmdJbnRSZWN0KG1faW1hZ2UtPnJlY3QoKSkpOwogCiAgICAgaWYg
KG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZl
cigpLT5kaWREcmF3KCptX2ltYWdlKTsKQEAgLTE0OSwxOCArMTQ5LDE4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNv
bnN0IEZsb2F0U2l6CiAgICAgfQogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2Uq
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBjcmVhdGVPckRl
c3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci5tYXhUZXh0dXJlU2l6
ZSgpLCAhaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKICAgICBmb3IgKGF1
dG8mIHRpbGUgOiBtX3RpbGVzKQotICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVN
YXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgICAgIHRp
bGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCk7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29u
c3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKK3ZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgRmxvYXRT
aXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci5tYXhUZXh0dXJl
U2l6ZSgpLCB0cnVlKTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzKQotICAgICAgICB0
aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCBkaXJ0eVJlY3Qs
IHVwZGF0ZUNvbnRlbnRzRmxhZywgbV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgdGlsZS51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCBtX2NvbnRl
bnRzU2NhbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggM2FhZGJhY2I0OWZmYzQ3MmJmYzEx
ODZlNGMxYzM3NDU1NGQ0NjA0OC4uMjQwZTkyNGZjYzU0OGI0YjJmMzI2MTAyZTc2OTc2ODI2YmI2
ZTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApA
QCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4
dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
KFRleHR1cmVNYXBwZXImLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdm9pZCB1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwg
R3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmKTsKIAogICAg
IHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA1YjRhODhj
M2E1MGNlYmM1Y2NjM2FlN2UxNmU4NjE2NmI4YmIxYTUxLi40MmZjMmU0YWNkY2I1YmYxMDAzNDlk
MzAxMWUwZDlmNjhhZjZjMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6
c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcikKICAgICB9IGVsc2UgaWYg
KG1fYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkgPT0gbV90ZXh0dXJlLT5pc09wYXF1ZSgpKQogICAg
ICAgICBtX3RleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBtX2J1ZmZlci0+c3VwcG9y
dHNBbHBoYSgpKTsKIAotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMobV9idWZmZXItPmRh
dGEoKSwgbV9zb3VyY2VSZWN0LCBtX2J1ZmZlck9mZnNldCwgbV9idWZmZXItPnN0cmlkZSgpLCBC
aXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgbV90
ZXh0dXJlLT51cGRhdGVDb250ZW50cyhtX2J1ZmZlci0+ZGF0YSgpLCBtX3NvdXJjZVJlY3QsIG1f
YnVmZmVyT2Zmc2V0LCBtX2J1ZmZlci0+c3RyaWRlKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDIzOTEzMzVlNDIzNDkxYWE3N2U0NTEwMzVmZWNmOWVhZmMwMTE0MDguLjQ5OWIxNzllY2M2
NzQyMDIyMmMxNTFkMmUyYTQ5MmJmMmIyMmZhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTMxOSw4ICszMTksNyBAQCBib29sIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkK
ICAgICBJbnRSZWN0IHRhcmdldFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgSW50UG9p
bnQgb2Zmc2V0KDAsIDApOwogICAgIGludCBieXRlc1BlckxpbmUgPSB3aWR0aCAqIDQ7Ci0gICAg
Qml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIGZsYWdzID0gQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGE7Ci0gICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoZGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRlc1BlckxpbmUsIGZsYWdzKTsKKyAg
ICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhkYXRhLCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVz
UGVyTGluZSk7CiAKICAgICAvLyBSZW5kZXIgdGV4dHVyZS4KICAgICB0ZXh0dXJlTWFwcGVyLT5i
ZWdpblBhaW50aW5nKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>