<?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>129557</bug_id>
          
          <creation_ts>2014-03-01 13:49:59 -0800</creation_ts>
          <short_desc>Subpixel rendering: Make GraphicsLayer::fillRect FloatRoundedRect based and cleanup dependencies.</short_desc>
          <delta_ts>2014-03-04 09:01:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129558</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985972</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 13:49:59 -0800</bug_when>
    <thetext>Merge FloatRect + Radii parameters to FloatRoundedRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985987</commentid>
    <comment_count>1</comment_count>
      <attachid>225568</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 14:36:10 -0800</bug_when>
    <thetext>Created attachment 225568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986042</commentid>
    <comment_count>2</comment_count>
      <attachid>225583</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:02:30 -0800</bug_when>
    <thetext>Created attachment 225583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986043</commentid>
    <comment_count>3</comment_count>
      <attachid>225583</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:02:52 -0800</bug_when>
    <thetext>Comment on attachment 225583
Patch

EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986050</commentid>
    <comment_count>4</comment_count>
      <attachid>225587</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:54:42 -0800</bug_when>
    <thetext>Created attachment 225587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986051</commentid>
    <comment_count>5</comment_count>
      <attachid>225587</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:55:01 -0800</bug_when>
    <thetext>Comment on attachment 225587
Patch

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986056</commentid>
    <comment_count>6</comment_count>
      <attachid>225589</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 21:32:08 -0800</bug_when>
    <thetext>Created attachment 225589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986057</commentid>
    <comment_count>7</comment_count>
      <attachid>225589</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 21:32:30 -0800</bug_when>
    <thetext>Comment on attachment 225589
Patch

EWS win testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986250</commentid>
    <comment_count>8</comment_count>
      <attachid>225629</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-02 19:41:34 -0800</bug_when>
    <thetext>Created attachment 225629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986251</commentid>
    <comment_count>9</comment_count>
      <attachid>225629</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-02 19:42:01 -0800</bug_when>
    <thetext>Comment on attachment 225629
Patch

updated patch. ews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986354</commentid>
    <comment_count>10</comment_count>
      <attachid>225658</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-03 08:52:56 -0800</bug_when>
    <thetext>Created attachment 225658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986355</commentid>
    <comment_count>11</comment_count>
      <attachid>225658</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-03 08:53:12 -0800</bug_when>
    <thetext>Comment on attachment 225658
Patch

EWS win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986444</commentid>
    <comment_count>12</comment_count>
      <attachid>225682</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-03 12:15:40 -0800</bug_when>
    <thetext>Created attachment 225682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986445</commentid>
    <comment_count>13</comment_count>
      <attachid>225682</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-03 12:15:57 -0800</bug_when>
    <thetext>Comment on attachment 225682
Patch

EWS win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986556</commentid>
    <comment_count>14</comment_count>
      <attachid>225682</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-03 16:12:15 -0800</bug_when>
    <thetext>Comment on attachment 225682
Patch

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

&gt; Source/WebCore/platform/graphics/FloatRoundedRect.cpp:151
&gt; +    &amp;&amp; m_radii.bottomLeft().width() + m_radii.bottomRight().width() &lt;= m_rect.width()
&gt; +    &amp;&amp; m_radii.topLeft().height() + m_radii.bottomLeft().height() &lt;= m_rect.height()
&gt; +    &amp;&amp; m_radii.topRight().height() + m_radii.bottomRight().height() &lt;= m_rect.height();

Indent these lines.

&gt; Source/WebCore/platform/graphics/Path.cpp:135
&gt; +    if (rect.width() &lt; radii.topLeft().width() + radii.topRight().width()
&gt; +        || rect.width() &lt; radii.bottomLeft().width() + radii.bottomRight().width()
&gt; +        || rect.height() &lt; radii.topLeft().height() + radii.bottomLeft().height()
&gt; +        || rect.height() &lt; radii.topRight().height() + radii.bottomRight().height()) {
&gt;          // If all the radii cannot be accommodated, return a rect.

Is this the same logic as isRenderable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986805</commentid>
    <comment_count>15</comment_count>
      <attachid>225777</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-04 07:38:23 -0800</bug_when>
    <thetext>Created attachment 225777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986806</commentid>
    <comment_count>16</comment_count>
      <attachid>225777</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-04 07:38:56 -0800</bug_when>
    <thetext>Comment on attachment 225777
Patch

EWS testing before commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986808</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-04 07:44:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 225682 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225682&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FloatRoundedRect.cpp:151
&gt; &gt; +    &amp;&amp; m_radii.bottomLeft().width() + m_radii.bottomRight().width() &lt;= m_rect.width()
&gt; &gt; +    &amp;&amp; m_radii.topLeft().height() + m_radii.bottomLeft().height() &lt;= m_rect.height()
&gt; &gt; +    &amp;&amp; m_radii.topRight().height() + m_radii.bottomRight().height() &lt;= m_rect.height();
&gt; 
&gt; Indent these lines.
Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Path.cpp:135
&gt; &gt; +    if (rect.width() &lt; radii.topLeft().width() + radii.topRight().width()
&gt; &gt; +        || rect.width() &lt; radii.bottomLeft().width() + radii.bottomRight().width()
&gt; &gt; +        || rect.height() &lt; radii.topLeft().height() + radii.bottomLeft().height()
&gt; &gt; +        || rect.height() &lt; radii.topRight().height() + radii.bottomRight().height()) {
&gt; &gt;          // If all the radii cannot be accommodated, return a rect.
&gt; 
&gt; Is this the same logic as isRenderable?
Yes. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986836</commentid>
    <comment_count>18</comment_count>
      <attachid>225777</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 09:01:11 -0800</bug_when>
    <thetext>Comment on attachment 225777
Patch

Clearing flags on attachment: 225777

Committed r165055: &lt;http://trac.webkit.org/changeset/165055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986837</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 09:01:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225568</attachid>
            <date>2014-03-01 14:36:10 -0800</date>
            <delta_ts>2014-03-01 20:02:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140301143611.patch</filename>
            <type>text/plain</type>
            <size>46954</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMTEwOTliM2M2YTEyNGMyZGY4MjBjNGE4NzkwMjFh
OWFkM2VhN2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0OjpG
bG9hdFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5k
ZWRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6
YWRkUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWVyRXh0ZW5kZWQpOiB0aGVzZSBleHBsaWNpdCBjb252ZXJzaW9ucyAKKyAgICAgICAg
d2lsbCBiZSByZXBsYWNlZCB3aXRoIHBpeGVsc25hcHBpbmcuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvQm94U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qm94U2hhcGU6OmJ1aWxk
RGlzcGxheVBhdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUluc2V0OjpwYXRoKToKKwogMjAxNC0wMy0w
MSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE2NDkxMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKaW5kZXggMTlhYzkzMTg2YmUz
ZjUwMmI0ZTRjNDk5OTI0NjI4YjRiNDE4YmZmNi4uN2IxOTBhOGU1MGRjOWZkNDUyOTZhNGI2MDYx
YzU0Njk5MTU4MjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKQEAgLTM0LDYgKzM0LDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorRmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVkUmVjdChjb25zdCBS
b3VuZGVkUmVjdCYgcmVjdCkKKyAgICA6IG1fcmVjdChyZWN0LnJlY3QoKSkKKyAgICAsIG1fcmFk
aWkocmVjdC5yYWRpaSgpKQoreworfQorCiBGbG9hdFJvdW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRS
ZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiAgICAgOiBt
X3JlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAppbmRleCBmYmQ0NDliZThlMzBjMjAz
NjhjY2ZmNDhkZTNmOWMyMjEzYjkyZGNkLi5mZjVlYzcxNjVjMTNiZmQ1MThhMTY0NTY4YjZkMGZl
NjIzYzllNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFJvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRSb3VuZGVkUmVjdC5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgZXhwbGljaXQgRmxvYXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSYWRp
aSYgPSBSYWRpaSgpKTsKKyAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5k
ZWRSZWN0Jik7CiAgICAgRmxvYXRSb3VuZGVkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggNmI0ZDdhOWEzZDcyZWRjMzI1YTk5NGU3OWNmNjFhMWYwMTk3NjVh
My4uZjljYTI1YTI4YjVjM2Y1Zjk3ZmI3NGJlMDFhNGRiZWZjZDU0OWIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgpAQCAtNjk2LDE1ICs2OTcsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVk
UmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCkKICAgICBjbGlwKHBhdGgpOwogfQogCi0vLyBG
SVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQgUm91
bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwKLSAgICBj
b25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHJlY3QpOwogICAgIGNsaXAocGF0aCk7CiB9CiAKQEAgLTc2OSwxOCArNzY4LDE4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7
CiAgICAgaWYgKHJlY3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwotICAgICAgICBmaWxsUm91bmRl
ZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50
b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9t
UmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdChyZWN0LCBjb2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZpbGxSZWN0
KHJlY3QucmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJs
ZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJv
dW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBhOWJmNWQwMDRjZTExYmFjYTcwNzE5NjIwNDZkOTgzNGNlMmUwZmU1Li5hNTQzZWNjMDJlN2Ux
N2E4Zjc3YmU5Yjg0ZGQ5ODk3OWRkMjM4NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNzUsNiArNzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3Mg
RHJhd2luZ0J1ZmZlcjsKKyAgICBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEdy
YWRpZW50OwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBj
bGFzcyBJbWFnZUJ1ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFk
aWVudCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29u
c3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzI4LDkgKzMyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9pZCBjbGlw
KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBS
b3VuZGVkUmVjdCYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB3cml0aW5nIHRoaXMg
aW4gdGVybXMgb2YgYSBzcGVjaWFsaXplZCBSb3VuZGVkUmVjdCB0aGF0IHVzZXMgRmxvYXRSZWN0
IGFuZCBGbG9hdFNpemUgcmFkaWkuCi0gICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJv
dHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYpOwogCiAgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKTsKICAg
ICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKQEAgLTU3
MCw2ICs1NjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1G
aWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVN0cm9r
ZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAKKyAgICAgICAgdm9pZCBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNw
YWNlKTsKKwogICAgICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsK
IAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA4OGQ0NTNjM2E0MzY4ZjQzOTNkOTI0OTI3
ZjYyNDAyNTU3NzUyMTNmLi4wOTE2OGU1ODZmYTY1ZjlmM2Q1MGRlYjMyZjVmNjdlZGFhODA2ZjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJQYXRoVHJhdmVyc2Fs
U3RhdGUuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAg
LTkxLDExICs5Miw2IEBAIGZsb2F0IFBhdGg6Om5vcm1hbEFuZ2xlQXRMZW5ndGgoZmxvYXQgbGVu
Z3RoLCBib29sJiBvaykgY29uc3QKICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9ub3JtYWxB
bmdsZTsKIH0KIAotdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYg
cikKLXsKLSAgICBhZGRSb3VuZGVkUmVjdChyLnJlY3QoKSwgci5yYWRpaSgpLnRvcExlZnQoKSwg
ci5yYWRpaSgpLnRvcFJpZ2h0KCksIHIucmFkaWkoKS5ib3R0b21MZWZ0KCksIHIucmFkaWkoKS5i
b3R0b21SaWdodCgpKTsKLX0KLQogdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RT
dHJhdGVneSBzdHJhdGVneSkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCkBAIC0xMDUsNyAr
MTAxLDcgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAgICBGbG9hdFNpemUgaGFsZlNpemUo
cmVjdC53aWR0aCgpIC8gMiwgcmVjdC5oZWlnaHQoKSAvIDIpOwogCiAgICAgLy8gQXBwbHkgdGhl
IFNWRyBjb3JuZXIgcmFkaXVzIGNvbnN0cmFpbnRzLCBwZXIgdGhlIHJlY3Qgc2VjdGlvbiBvZiB0
aGUgU1ZHIHNoYXBlcyBzcGVjOiBpZgotICAgIC8vIG9uZSBvZiByeCxyeSBpcyBuZWdhdGl2ZSwg
dGhlbiB0aGUgb3RoZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJZiBib3RoIHZhbHVl
cyBhcmUgCisgICAgLy8gb25lIG9mIHJ4LHJ5IGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBvdGhlciBj
b3JuZXIgcmFkaXVzIHZhbHVlIGlzIHVzZWQuIElmIGJvdGggdmFsdWVzIGFyZQogICAgIC8vIG5l
Z2F0aXZlIHRoZW4gcnggPSByeSA9IDAuIElmIHJ4IGlzIGdyZWF0ZXIgdGhhbiBoYWxmIG9mIHRo
ZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgLy8gdGhlbiBzZXQgcnggdG8gaGFsZiBvZiB0
aGUgd2lkdGg7IHJ5IGlzIGhhbmRsZWQgc2ltaWxhcmx5LgogCkBAIC0xMjEsMzYgKzExNywzOSBA
QCB2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLAogICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkgPiBoYWxm
U2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmFkaXVzLnNldEhlaWdodChoYWxmU2l6ZS5oZWlnaHQo
KSk7CiAKLSAgICBhZGRQYXRoRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzLCBzdHJhdGVneSk7CisgICAgYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpLCBzdHJhdGVneSk7CiB9
CiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRp
dXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSBzdHJhdGVneSkKK3ZvaWQgUGF0
aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgciwgUm91bmRlZFJlY3RT
dHJhdGVneSBzdHJhdGVneSkKIHsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKHIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmVjdC53aWR0aCgpIDwgdG9w
TGVmdFJhZGl1cy53aWR0aCgpICsgdG9wUmlnaHRSYWRpdXMud2lkdGgoKQotICAgICAgICAgICAg
fHwgcmVjdC53aWR0aCgpIDwgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICsgYm90dG9tUmlnaHRS
YWRpdXMud2lkdGgoKQotICAgICAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHRvcExlZnRSYWRp
dXMuaGVpZ2h0KCkgKyBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpCi0gICAgICAgICAgICB8fCBy
ZWN0LmhlaWdodCgpIDwgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBib3R0b21SaWdodFJhZGl1
cy5oZWlnaHQoKSkgeworICAgIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSA9
IHIucmFkaWkoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QgPSByLnJlY3QoKTsKKworICAg
IGlmIChyZWN0LndpZHRoKCkgPCByYWRpaS50b3BMZWZ0KCkud2lkdGgoKSArIHJhZGlpLnRvcFJp
Z2h0KCkud2lkdGgoKQorICAgICAgICB8fCByZWN0LndpZHRoKCkgPCByYWRpaS5ib3R0b21MZWZ0
KCkud2lkdGgoKSArIHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKQorICAgICAgICB8fCByZWN0
LmhlaWdodCgpIDwgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgcmFkaWkuYm90dG9tTGVmdCgp
LmhlaWdodCgpCisgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCByYWRpaS50b3BSaWdodCgpLmhl
aWdodCgpICsgcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSkgewogICAgICAgICAvLyBJZiBh
bGwgdGhlIHJhZGlpIGNhbm5vdCBiZSBhY2NvbW1vZGF0ZWQsIHJldHVybiBhIHJlY3QuCiAgICAg
ICAgIGFkZFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhZGRQYXRo
Rm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBzdHJhdGVneSk7Ci19Ci0KLXZvaWQgUGF0
aDo6YWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
UmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCi17CiAgICAgaWYgKHN0
cmF0ZWd5ID09IFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0KSB7CiAjaWYgVVNFKENHKQotICAgICAg
ICBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgICAg
ICBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCksIHJh
ZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIH0KIAotICAgIGFkZEJlemllcnNGb3JSb3Vu
ZGVkUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJh
ZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgIGFkZEJlemllcnNGb3JSb3VuZGVkUmVjdChy
ZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQo
KSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7Cit9CisKK3ZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3Qo
Y29uc3QgUm91bmRlZFJlY3QmIHIpCit7CisgICAgYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChyKSk7CiB9CiAKIC8vIEFwcHJveGltYXRpb24gb2YgY29udHJvbCBwb2ludCBwb3NpdGlv
bnMgb24gYSBiZXppZXIgdG8gc2ltdWxhdGUgYSBxdWFydGVyIG9mIGEgY2lyY2xlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4IDU1ZjBmNmUyZWFiNzU0ODA2MmMy
ZTNlMWJjYmExNDdlNDZlYzc5YTYuLjNkM2ZhMTdhY2UwNDUzZjgzOWI0MzYwMGM1NDA0NmJmOTJl
ZTI3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTU3LDYg
KzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
ICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFzcyBG
bG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEZsb2F0U2l6ZTsKICAgICBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAgICAgY2xhc3MgUm91bmRlZFJlY3Q7CkBAIC0xMjksNyArMTMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9OwogCiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLCBSb3Vu
ZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwotICAgICAgICB2b2lk
IGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBS
b3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOworICAgICAgICB2
b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBSb3VuZGVkUmVjdFN0
cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwogICAgICAgICB2b2lkIGFkZFJvdW5k
ZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CiAKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29u
c3QgRmxvYXRTaXplJik7CkBAIC0xNDMsNyArMTQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rpb24pIGNvbnN0
OwogICAgICAgICB2b2lkIHRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAotICAg
ICAgICB2b2lkIGFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0
b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRS
ZWN0KTsKICAgICAgICAgdm9pZCBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRv
cFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjc1MjI4YmJi
ZWJkOWFhZDJmYzc2MmRkNGYyMzIzY2U4MmFlMDgxLi4xMWE1ZjlmMDJkNjRkNTM1MmZmOWIwZmFl
ODYyMzkzMjJjMGI5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcApAQCAtNTA5LDkgKzUwOSw5IEBAIEludFNpemUgU2hhZG93Qmx1cjo6
dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IEZsb2F0Um91
bmRlCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2UgKyBi
b3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QpCiB7Ci0gICAgSW50UmVjdCBsYXllclJlY3Qg
PSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVj
dCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0
ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJl
Y3QucmVjdCgpLCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxheWVy
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTIwLDIzICs1MjAsMjQgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAvLyBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcg
ZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+Z2V0
Q1RNKCkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hhZG93KSB7
Ci0gICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNo
YWRvd2VkUmVjdCwgcmFkaWksIGxheWVyUmVjdCk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgbGF5ZXJSZWN0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludFNpemUgZWRnZVNpemUgPSBibHVycmVkRWRn
ZVNpemUoKTsKLSAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShl
ZGdlU2l6ZSwgcmFkaWkpOworICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxh
dGVTaXplKGVkZ2VTaXplLCBzaGFkb3dlZFJlY3QucmFkaWkoKSk7CisgICAgY29uc3QgRmxvYXRS
ZWN0JiByZWN0ID0gc2hhZG93ZWRSZWN0LnJlY3QoKTsKIAotICAgIGlmICh0ZW1wbGF0ZVNpemUu
d2lkdGgoKSA+IHNoYWRvd2VkUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+
IHNoYWRvd2VkUmVjdC5oZWlnaHQoKQorICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IHJl
Y3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiByZWN0LmhlaWdodCgpCiAgICAg
ICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1f
c291cmNlUmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3Qs
IHJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0
LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYgaG9sZVJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpCiB7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJlY3QsIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcEJvdW5kcygpKTsKICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKQEAgLTU0
NywzMyArNTQ4LDM0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gZHJhd0luc2V0
U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTA0MgogICAgIGlmICghZ3Jh
cGhpY3NDb250ZXh0LT5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBl
ICE9IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7Cisg
ICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0
LCBob2xlUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIElu
dFNpemUgZWRnZVNpemUgPSBibHVycmVkRWRnZVNpemUoKTsKLSAgICBJbnRTaXplIHRlbXBsYXRl
U2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgaG9sZVJhZGlpKTsKKyAgICBJbnRT
aXplIHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgaG9sZVJlY3Qu
cmFkaWkoKSk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBoUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsK
IAotICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IGhvbGVSZWN0LndpZHRoKCkgfHwgdGVt
cGxhdGVTaXplLmhlaWdodCgpID4gaG9sZVJlY3QuaGVpZ2h0KCkKLSAgICAgICAgfHwgKHRlbXBs
YXRlU2l6ZS53aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gaG9sZVJlY3Qud2lkdGgo
KSAqIGhvbGVSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0
VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgbGF5ZXJS
ZWN0KTsKKyAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBoUmVjdC53aWR0aCgpIHx8IHRl
bXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhSZWN0LmhlaWdodCgpCisgICAgICAgIHx8ICh0ZW1wbGF0
ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhSZWN0LndpZHRoKCkgKiBo
UmVjdC5oZWlnaHQoKSkpIHsKKyAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRl
eHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUpOwor
ICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xl
UmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVk
KCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5ZXJJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlU2hh
ZG93ZWRSZWN0ID0gc2hhZG93ZWRSZWN0OworICAgIEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZVNo
YWRvd2VkUmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAgICAgYnVmZmVyUmVsYXRpdmVTaGFk
b3dlZFJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkg
cmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0
IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6
c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgcmFkaWks
IG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNo
YXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRvd2Vk
UmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRl
eHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFk
b3dDb250ZXh0KTsKQEAgLTU4MiwxMSArNTg0LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1Jl
Y3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9sYXll
clNpemUud2lkdGgoKSArIDEsIG1fbGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOwogICAgICAgICBz
aGFkb3dDb250ZXh0LT50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAgICAg
ICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCi0gICAgICAgICAgICBzaGFk
b3dDb250ZXh0LT5maWxsUmVjdChzaGFkb3dlZFJlY3QpOworICAgICAgICBpZiAoc2hhZG93ZWRS
ZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisgICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVj
dChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRo
IHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCwgcmFk
aWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlp
LmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChzaGFkb3dl
ZFJlY3QpOwogICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAg
ICAgIH0KIApAQCAtNTk4LDcgKzYwMCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAg
U2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0K
IAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFk
aWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYg
KCFtX2xheWVySW1hZ2UpCkBAIC02MDcsMTEgKzYwOSwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsCiAgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlUmVjdCA9IHJlY3Q7CiAgICAgYnVmZmVy
UmVsYXRpdmVSZWN0Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKLSAgICBGbG9h
dFJlY3QgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCA9IGhvbGVSZWN0OworICAgIEZsb2F0UmVjdCBi
dWZmZXJSZWxhdGl2ZUhvbGVSZWN0ID0gaG9sZVJlY3QucmVjdCgpOwogICAgIGJ1ZmZlclJlbGF0
aXZlSG9sZVJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9u
bHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRv
bid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVy
UmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJhZGlpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNj
cmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVJl
Y3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChy
ZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0g
bV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC02MjIsMTAgKzYyNCwxMCBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsCiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFk
ZFJlY3QocmVjdCk7Ci0gICAgICAgIGlmIChob2xlUmFkaWkuaXNaZXJvKCkpCi0gICAgICAgICAg
ICBwYXRoLmFkZFJlY3QoaG9sZVJlY3QpOworICAgICAgICBpZiAoaG9sZVJlY3QucmFkaWkoKS5p
c1plcm8oKSkKKyAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVjdC5yZWN0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCBob2xl
UmFkaWkudG9wTGVmdCgpLCBob2xlUmFkaWkudG9wUmlnaHQoKSwgaG9sZVJhZGlpLmJvdHRvbUxl
ZnQoKSwgaG9sZVJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRSb3Vu
ZGVkUmVjdChob2xlUmVjdCk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbFJ1bGUo
UlVMRV9FVkVOT0REKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC02NzEsNyArNjczLDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICB0aGUgc2hhZG93LgogICovCiAKLXZvaWQgU2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNv
bnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAg
ICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZl
cih0ZW1wbGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjgyLDcgKzY4NCw3
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9sZSA9
IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVT
aXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgp
IC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2Fj
aGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2Us
IHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0ZUhvbGUsIHJhZGlpKTsKKyAgICBib29sIHJlZHJhd05l
ZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVz
KG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywgdGVt
cGxhdGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAg
ICAgICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpA
QCAtNjkzLDEwICs2OTUsMTAgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KIAogICAgICAgICBQ
YXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7Ci0gICAgICAg
IGlmIChyYWRpaS5pc1plcm8oKSkKKyAgICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNaZXJv
KCkpCiAgICAgICAgICAgICBwYXRoLmFkZFJlY3QodGVtcGxhdGVIb2xlKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIHJhZGlpLnRv
cExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0
b21SaWdodCgpKTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAogICAgICAgICBzaGFkb3dD
b250ZXh0LT5maWxsUGF0aChwYXRoKTsKIApAQCAtNzExLDcgKzcxMyw3IEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IHJlY3Q7CiAgICAgYm91
bmRpbmdSZWN0Lm1vdmUob2Zmc2V0KTsKIAotICAgIEZsb2F0UmVjdCBkZXN0SG9sZVJlY3QgPSBo
b2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3QucmVjdCgpOwog
ICAgIGRlc3RIb2xlUmVjdC5tb3ZlKG9mZnNldCk7CiAgICAgRmxvYXRSZWN0IGRlc3RIb2xlQm91
bmRzID0gZGVzdEhvbGVSZWN0OwogICAgIGRlc3RIb2xlQm91bmRzLmluZmxhdGVYKGVkZ2VTaXpl
LndpZHRoKCkpOwpAQCAtNzMwLDEzICs3MzIsMTMgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24K
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUGF0aChleHRlcmlvclBhdGgpOwogICAgIH0K
ICAgICAKLSAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5k
cywgcmFkaWksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIElubmVyU2hhZG93KTsKKyAgICBkcmF3
TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9sZVJlY3QucmFk
aWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCiAgICAgbV9sYXll
ckltYWdlID0gMDsKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hC
dWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3Qg
SW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IElu
dFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAgbV9s
YXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1w
bGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNzQ1LDcgKzc0Nyw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlU2hhZG93ID0gRmxv
YXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1wbGF0ZVNpemUu
d2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSAy
ICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0
Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0g
ICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRl
U2hhZG93LCByYWRpaSwgbV9sYXllclNpemUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2Ny
YXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywg
bV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8vIERy
YXcgc2hhZG93IGludG8gdGhlIEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQq
IHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTc1NCwxMSArNzU2
LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmNs
ZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6
ZS5oZWlnaHQoKSkpOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyYWRp
aS5pc1plcm8oKSkKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQog
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmln
aHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAgICAg
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywg
c2hhZG93ZWRSZWN0LnJhZGlpKCkpKTsKICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQ
YXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAgLTc3MCwxMiArNzcyLDEyIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zCiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNmb3JtLnhTY2FsZSgp
LCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3Qgc2hhZG93
Qm91bmRzID0gc2hhZG93ZWRSZWN0OworICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFk
b3dlZFJlY3QucmVjdCgpOwogICAgIHNoYWRvd0JvdW5kcy5tb3ZlKG9mZnNldCk7CiAgICAgc2hh
ZG93Qm91bmRzLmluZmxhdGVYKGVkZ2VTaXplLndpZHRoKCkpOwogICAgIHNoYWRvd0JvdW5kcy5p
bmZsYXRlWShlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBP
dXRlclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93
Qm91bmRzLCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0
ZXJTaGFkb3cpOwogCiAgICAgbV9sYXllckltYWdlID0gMDsKICAgICBTY3JhdGNoQnVmZmVyOjpz
aGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDk1OWUxN2U4OWI2OGMyODAyMDMy
ZTVhOWMxZjk0OTQ5MGYwYjdjNTIuLjgxODAzNTVmNzQ4OWI4MmY0ZWE5ZWJjMWExZDFmNTkzZTVk
YTFlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKIAotICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKTsKKyAgICB2b2lkIGRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsK
KyAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7CiAKICAgICB2b2lkIGJsdXJM
YXllckltYWdlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiwgaW50IHN0cmlkZSk7CiAK
QEAgLTg3LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIEludFJlY3QgY2FsY3VsYXRlTGF5ZXJC
b3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShjb25z
dCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1Rl
bXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKICAgICAKICAgICB2
b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXpl
JiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVj
dGlvbik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMWRkZjYwZjI1
NzU0ZDE1MjhhYjBjZDRiOTU5Y2ZkM2U1MmU0ZWQ2My4uYTM0MzgxMTA1ZDQ2NzdmNGE5OGVmMGQy
ZGVjM2MxMmFhY2IwNGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkRyYXdFcnJvclVuZGVybGluZS5oIgogI2luY2x1ZGUgIkZs
b2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0
Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0xMDI4
LDE4ICsxMDI5LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0
UmVjdCYgcikKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHIsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxh
dGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVj
dFNoYWRvdyh0aGlzLCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGgu
YWRkUm91bmRlZFJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0KTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGFwcGVuZFdlYkNvcmVQ
YXRoVG9DYWlyb0NvbnRleHQoY3IsIHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3Io
Y3IsIGNvbG9yKTsKICAgICBjYWlyb19maWxsKGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAy
NGQxMWY5MDUyMzc1NjQ4NWJlZjM3NTUzNzc2ZmQ4ZDEyMTk2ZTllLi4xMmRlNTVhNjhmZWVhMjhl
MGFmZDczMzJiZGUyODk3MDdkYmQ1MWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC04MDYsNyAr
ODA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4
dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFk
b3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywg
cmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdS
ZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4
dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAg
ICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKQEAgLTg0Niw3ICs4
NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihj
b250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNp
emUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NSwxNyArODY1LDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwogICAgIH0KIAotICAgIGJvb2wgZXF1YWxXaWR0aHMg
PSAodG9wTGVmdC53aWR0aCgpID09IHRvcFJpZ2h0LndpZHRoKCkgJiYgdG9wUmlnaHQud2lkdGgo
KSA9PSBib3R0b21MZWZ0LndpZHRoKCkgJiYgYm90dG9tTGVmdC53aWR0aCgpID09IGJvdHRvbVJp
Z2h0LndpZHRoKCkpOwotICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHRvcExlZnQuaGVpZ2h0KCkg
PT0gYm90dG9tTGVmdC5oZWlnaHQoKSAmJiBib3R0b21MZWZ0LmhlaWdodCgpID09IHRvcFJpZ2h0
LmhlaWdodCgpICYmIHRvcFJpZ2h0LmhlaWdodCgpID09IGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsK
KyAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0LnJhZGlpKCk7CisgICAgYm9vbCBlcXVhbFdp
ZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgoKSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRo
KCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0
aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKSk7CisgICAgYm9vbCBlcXVhbEhlaWdodHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdo
dCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCku
aGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgp
LmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOwogICAgIGJvb2wgaGFz
Q3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47
Ci0gICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAm
JiB0b3BMZWZ0LndpZHRoKCkgKiAyID09IHJlY3Qud2lkdGgoKSAmJiB0b3BMZWZ0LmhlaWdodCgp
ICogMiA9PSByZWN0LmhlaWdodCgpKQotICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVj
dChjb250ZXh0LCByZWN0KTsKKyAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMg
JiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRo
KCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICogMiA9PSByLmhlaWdodCgpKQorICAgICAg
ICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByKTsKICAgICBlbHNlIHsKICAg
ICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QocmVjdCk7CiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIApAQCAt
ODg2LDcgKzg4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC05MTYsNyArOTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUm91bmQKICAgICAgICAg
Q0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJv
LCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0g
ICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRI
b2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKKyAgICAgICAgY29udGV4
dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAg
ICB9CiAKICAgICBmaWxsUGF0aChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApp
bmRleCA4Mjk5ZDYzNGFlYjJkZGRjYWFlOTMxZTYxMWMzZDA2ODY2OWE2ODY2Li5lMGQzMjkxNjQw
MjMxNjk5ZGE1MDdmMDY1OGE2NzkzMzVkMjZkMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAK
ICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdESUV4dHJhcy5oIgogI2luY2x1ZGUg
IkdseXBoQnVmZmVyLmgiCkBAIC0xMTUwLDcgKzExNTEsOCBAQCBzdGF0aWMgaW5saW5lIEludFBv
aW50IHJlY3RDZW50ZXJQb2ludChjb25zdCBSRUNUJiByZWN0KQogewogICAgIHJldHVybiBJbnRQ
b2ludChyZWN0LmxlZnQgKyAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgLyAyLCByZWN0LnRvcCAr
IChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIDIpOwogfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNp
emUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYg
Ym90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgYywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIFNjb3BlRENQcm92aWRlciBkY1Byb3ZpZGVyKG1f
ZGF0YSk7CiAgICAgaWYgKCFtX2RhdGEtPm1fZGMpCkBAIC0xMTYzLDE2ICsxMTY1LDE3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxs
UmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAgICAgIAogICAgIGdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAKKyAg
ICBjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0ID0gcmVjdC5yZWN0KCk7CiAgICAgSW50UmVjdCBk
c3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCiAgICAgZHN0UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNo
YWRvd09mZnNldC53aWR0aCgpKSwgc3RhYmxlUm91bmQoc2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7
CiAgICAgZHN0UmVjdC5pbmZsYXRlKHN0YWJsZVJvdW5kKHNoYWRvd0JsdXIpKTsKICAgICBkc3RS
ZWN0ID0gbV9kYXRhLT5tYXBSZWN0KGRzdFJlY3QpOwogICAKLSAgICBGbG9hdFNpemUgbmV3VG9w
TGVmdChtX2RhdGEtPm1hcFNpemUodG9wTGVmdCkpOwotICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdo
dChtX2RhdGEtPm1hcFNpemUodG9wUmlnaHQpKTsKLSAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVm
dChtX2RhdGEtPm1hcFNpemUoYm90dG9tTGVmdCkpOwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21S
aWdodChtX2RhdGEtPm1hcFNpemUoYm90dG9tUmlnaHQpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9w
TGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLnRvcExlZnQoKSkpOworICAgIEZsb2F0
U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkp
KTsKKyAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRp
aSgpLmJvdHRvbUxlZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEt
Pm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKIAogICAgIFRyYW5zcGFyZW50
TGF5ZXJEQyB0cmFuc3BhcmVudERjKG1fZGF0YSwgZHN0UmVjdCwgJmZpbGxSZWN0KTsKICAgICBI
REMgZGMgPSB0cmFuc3BhcmVudERjLmhkYygpOwpAQCAtMTIyMyw3ICsxMjI2LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0
LCBjb25zdCBGbG9hdFNpemUKICAgICBTZWxlY3RPYmplY3QoZGMsIG9sZEJydXNoKTsKIH0KIAot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JvdW5kQ29ybmVyKGJvb2wgbmVlZHNOZXdDbGlw
LCBSRUNUIGNsaXBSZWN0LCBSRUNUIHJlY3RXaW4sIEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogewogICAgIGlmICghZGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1YTBjMmRjOTFlYWRkYjY4ZTAyZTI2MzJhNjUz
NzU5MDU4YzY3Mzk1Li4xOTdkNjg1MTg3OGExNzY5NDJlNDUwODUxN2JlYWMxMWMzZDBhN2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5k
ZXJCb3hNb2RlbE9iamVjdC5oIgogCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCkBAIC02NTMsNyArNjU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28K
ICAgICAgICAgaWYgKGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dy
b3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgICAgIFJvdW5kZWRSZWN0
IGJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2Uo
KmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0
RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAgICAgICAgICAgICBpZiAoYm9yZGVyLmlzUmVuZGVy
YWJsZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIs
IGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpLCBiZ0NvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5zYXZlKCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29u
dGV4dCwgcmVjdCwgYm9yZGVyKTsKQEAgLTI1NjIsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIGZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRv
d1NwcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsbFJlY3QuaXNSZW5kZXJhYmxl
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9y
OjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZmlsbFJlY3QpLCBDb2xvcjo6YmxhY2ss
IHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVj
dCgpOwpAQCAtMjU5MCw3ICsyNTkxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAg
ICAgICAgICAgaWYgKGhvbGVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmICho
YXNCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVk
UmVjdChib3JkZXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIp
LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRlci5yZWN0KCksIHNoYWRv
d0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MjYzNSw3ICsyNjM2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgICAgICBj
b250ZXh0LT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShvdXRlclJlY3QsIHJvdW5kZWRIb2xlLCBm
aWxsQ29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShvdXRlclJlY3QsIEZsb2F0Um91bmRlZFJlY3Qocm91bmRlZEhvbGUp
LCBmaWxsQ29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZmE5NGI4YjdiYjY5
ZjMyYWQzMDE3YzJlOTdjYjJmYTdkMzVhOTNlNS4uNTdjMmJkN2U3NDYyMDM3ODE4YTI3ZTMzOGNm
ZmRjYTczMzM2NjljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtOTg2LDcgKzk4Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAKICAgICAg
ICAgLy8gQmFja2dyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBzaW1wbGUgYmFja2dyb3VuZCBpY29u
IHdpdGggYSBncmFkaWVudCBtYXRjaGluZyB0aGUgYnV0dG9uLgogICAgICAgICBDb2xvciBiYWNr
Z3JvdW5kSW1hZ2VDb2xvciA9IGJ1dHRvblJlbmRlcmVyID8gQ29sb3IoYnV0dG9uUmVuZGVyZXIt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KS5yZ2IoKSkgOiBDb2xvcigyMDYuMGYsIDIwNi4wZiwgMjA2LjBmKTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBj
b3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBwaWN0dXJlRnJh
bWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVS
ZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGlj
dHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZmlsbFJlY3QodGh1bWJuYWlsUmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIyKCpwYWludEluZm8uY29udGV4dCk7CkBAIC0xMDA3LDcg
KzEwMDcsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3Jh
dGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KgogICAgIH0KIAogICAgIC8vIEZvcmVn
cm91bmQgcGljdHVyZSBmcmFtZSBhbmQgaWNvbi4KLSAgICBwYWludEluZm8uY29udGV4dC0+Zmls
bFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5l
clNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSksIGNvcm5lclNpemUsIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICAgICBpY29uLT5wYWludChwYWludEluZm8uY29udGV4dCwgdGh1
bWJuYWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvQm94U2hhcGUuY3BwCmluZGV4IDI1Yzk2Njg3NWNlNjI4MWU3Y2RjYjM1M2Ux
MjY2OWJiOGQwNDI3MWEuLjU2ODdlYzgwMWZkNDc2YmZhODg1ZDI1OTE1YjYwZjgzNTBiNWJiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwCkBAIC0x
NTYsMTggKzE1NiwxMSBAQCBib29sIEJveFNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dp
Y2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydmFsVG9wLAogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRSb3VuZGVkUmVjdChQYXRoJiBwYXRoLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKLXsKLSAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmln
aHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpLCBQYXRoOjpQcmVm
ZXJCZXppZXJSb3VuZGVkUmVjdCk7Ci19Ci0KIHZvaWQgQm94U2hhcGU6OmJ1aWxkRGlzcGxheVBh
dGhzKERpc3BsYXlQYXRocyYgcGF0aHMpIGNvbnN0CiB7Ci0gICAgYWRkUm91bmRlZFJlY3QocGF0
aHMuc2hhcGUsIG1fYm91bmRzLnJlY3QoKSwgbV9ib3VuZHMucmFkaWkoKSk7Ci0gICAgaWYgKHNo
YXBlTWFyZ2luKCkpIHsKLSAgICAgICAgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgbWFyZ2luQm91
bmRzID0gc2hhcGVNYXJnaW5Cb3VuZHMoKTsKLSAgICAgICAgYWRkUm91bmRlZFJlY3QocGF0aHMu
bWFyZ2luU2hhcGUsIG1hcmdpbkJvdW5kcy5yZWN0KCksIG1hcmdpbkJvdW5kcy5yYWRpaSgpKTsK
LSAgICB9CisgICAgcGF0aHMuc2hhcGUuYWRkUm91bmRlZFJlY3QobV9ib3VuZHMsIFBhdGg6OlBy
ZWZlckJlemllclJvdW5kZWRSZWN0KTsKKyAgICBpZiAoc2hhcGVNYXJnaW4oKSkKKyAgICAgICAg
cGF0aHMubWFyZ2luU2hhcGUuYWRkUm91bmRlZFJlY3Qoc2hhcGVNYXJnaW5Cb3VuZHMoKSwgUGF0
aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRl
eCBkYTg4N2U0NzJjNTFmZGNkODQwMzI0Y2JmOTZhMzQ5MWIzNDViNjNjLi5kNTJkY2JhOGQ2MTU1
MGUyNGM4YTMwMzk2YzkwN2E0NDY0MjQ5MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJC
YXNpY1NoYXBlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNs
dWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCkBAIC0zNTUsNyArMzU2LDcgQEAgdm9pZCBCYXNpY1NoYXBlSW5zZXQ6OnBhdGgo
UGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKICAgICBBU1NFUlQocGF0
aC5pc0VtcHR5KCkpOwogICAgIGZsb2F0IGxlZnQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fbGVm
dCwgYm91bmRpbmdCb3gud2lkdGgoKSk7CiAgICAgZmxvYXQgdG9wID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChtX3RvcCwgYm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QoCisgICAgRmxvYXRSb3VuZGVkUmVjdCByID0gRmxvYXRSb3VuZGVkUmVjdCgKICAgICAgICAg
RmxvYXRSZWN0KAogICAgICAgICAgICAgbGVmdCArIGJvdW5kaW5nQm94LngoKSwKICAgICAgICAg
ICAgIHRvcCArIGJvdW5kaW5nQm94LnkoKSwKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIEJhc2lj
U2hhcGVJbnNldDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
KQogICAgICAgICBmbG9hdFNpemVGb3JMZW5ndGhTaXplKG1fYm90dG9tTGVmdFJhZGl1cywgYm91
bmRpbmdCb3gpLAogICAgICAgICBmbG9hdFNpemVGb3JMZW5ndGhTaXplKG1fYm90dG9tUmlnaHRS
YWRpdXMsIGJvdW5kaW5nQm94KQogICAgICk7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyKTsK
IH0KIAogUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKGNvbnN0
IEJhc2ljU2hhcGUqIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225583</attachid>
            <date>2014-03-01 20:02:30 -0800</date>
            <delta_ts>2014-03-01 20:54:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140301200230.patch</filename>
            <type>text/plain</type>
            <size>50202</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uYjQ3NDJkYzMzM2NjMjlhMDhiYmI5YTUwMDk2NTBj
MjE0MDc5ZGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0OjpG
bG9hdFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5k
ZWRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6
YWRkUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWVyRXh0ZW5kZWQpOiB0aGVzZSBleHBsaWNpdCBjb252ZXJzaW9ucworICAgICAgICB3
aWxsIGJlIHJlcGxhY2VkIHdpdGggcGl4ZWxzbmFwcGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9Cb3hTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGRE
aXNwbGF5UGF0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAx
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCBhZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggODcwNTNjZGE2NzY4ODEwYzRkOTRjODhjMTAz
ZDRiODJjOTQzNDdkMy4uY2RmY2UwNzhmMmVjY2M4ZDg2ZTZlOGMwYjVjNjViNDJiNmJkZDY0ZCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkNhaXJvVXRpbGl0aWVzRWZsLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKQEAgLTEyNDIsNyArMTI0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZv
CiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIElu
dFNpemUgdGh1bWJSZWN0KDMsIDMpOwotICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0
KHJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgbV9zbGlk
ZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQtPmZp
bGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0
LCB0aHVtYlJlY3QsIHRodW1iUmVjdCksIG1fc2xpZGVyVGh1bWJDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKaW5kZXggMTlhYzkzMTg2
YmUzZjUwMmI0ZTRjNDk5OTI0NjI4YjRiNDE4YmZmNi4uN2IxOTBhOGU1MGRjOWZkNDUyOTZhNGI2
MDYxYzU0Njk5MTU4MjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKQEAgLTM0LDYgKzM0LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorRmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYgcmVjdCkKKyAgICA6IG1fcmVjdChyZWN0LnJlY3QoKSkKKyAgICAsIG1f
cmFkaWkocmVjdC5yYWRpaSgpKQoreworfQorCiBGbG9hdFJvdW5kZWRSZWN0OjpGbG9hdFJvdW5k
ZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiAgICAg
OiBtX3JlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAppbmRleCBmYmQ0NDliZThlMzBj
MjAzNjhjY2ZmNDhkZTNmOWMyMjEzYjkyZGNkLi5mZjVlYzcxNjVjMTNiZmQ1MThhMTY0NTY4YjZk
MGZlNjIzYzllNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSb3VuZGVkUmVjdC5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgZXhwbGljaXQgRmxvYXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBS
YWRpaSYgPSBSYWRpaSgpKTsKKyAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0Jik7CiAgICAgRmxvYXRSb3VuZGVkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdo
dCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJp
Z2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggNmI0ZDdhOWEzZDcyZWRjMzI1YTk5NGU3OWNmNjFhMWYwMTk3
NjVhMy4uZjljYTI1YTI4YjVjM2Y1Zjk3ZmI3NGJlMDFhNGRiZWZjZDU0OWIyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgpAQCAtNjk2LDE1ICs2OTcsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3Vu
ZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCkKICAgICBjbGlwKHBhdGgpOwogfQogCi0v
LyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQg
Um91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwKLSAg
ICBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmln
aHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGNsaXAocGF0aCk7CiB9CiAKQEAgLTc2OSwxOCArNzY4
LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KHByZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgaWYgKHJlY3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwotICAgICAgICBmaWxsUm91
bmRlZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWko
KS50b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90
dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxSb3Vu
ZGVkUmVjdChyZWN0LCBjb2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHNldENvbXBvc2l0ZU9w
ZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZpbGxS
ZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCks
IGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCBhOWJmNWQwMDRjZTExYmFjYTcwNzE5NjIwNDZkOTgzNGNlMmUwZmU1Li5hNTQzZWNjMDJl
N2UxN2E4Zjc3YmU5Yjg0ZGQ5ODk3OWRkMjM4NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNzUsNiArNzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xh
c3MgRHJhd2luZ0J1ZmZlcjsKKyAgICBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNz
IEdyYWRpZW50OwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAg
ICBjbGFzcyBJbWFnZUJ1ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBH
cmFkaWVudCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xl
UmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzI4LDkgKzMyOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9pZCBj
bGlwKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB3cml0aW5nIHRo
aXMgaW4gdGVybXMgb2YgYSBzcGVjaWFsaXplZCBSb3VuZGVkUmVjdCB0aGF0IHVzZXMgRmxvYXRS
ZWN0IGFuZCBGbG9hdFNpemUgcmFkaWkuCi0gICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXpl
JiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUm
IGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYpOwogCiAgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKTsK
ICAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKQEAg
LTU3MCw2ICs1NjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGxhdGZv
cm1GaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVN0
cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAKKyAgICAgICAgdm9pZCBwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKKwogICAgICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0
YTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA4OGQ0NTNjM2E0MzY4ZjQzOTNkOTI0
OTI3ZjYyNDAyNTU3NzUyMTNmLi4wOTE2OGU1ODZmYTY1ZjlmM2Q1MGRlYjMyZjVmNjdlZGFhODA2
ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJQYXRoVHJhdmVy
c2FsU3RhdGUuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgPG1hdGguaD4K
QEAgLTkxLDExICs5Miw2IEBAIGZsb2F0IFBhdGg6Om5vcm1hbEFuZ2xlQXRMZW5ndGgoZmxvYXQg
bGVuZ3RoLCBib29sJiBvaykgY29uc3QKICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9ub3Jt
YWxBbmdsZTsKIH0KIAotdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVj
dCYgcikKLXsKLSAgICBhZGRSb3VuZGVkUmVjdChyLnJlY3QoKSwgci5yYWRpaSgpLnRvcExlZnQo
KSwgci5yYWRpaSgpLnRvcFJpZ2h0KCksIHIucmFkaWkoKS5ib3R0b21MZWZ0KCksIHIucmFkaWko
KS5ib3R0b21SaWdodCgpKTsKLX0KLQogdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJl
Y3RTdHJhdGVneSBzdHJhdGVneSkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCkBAIC0xMDUs
NyArMTAxLDcgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAgICBGbG9hdFNpemUgaGFsZlNp
emUocmVjdC53aWR0aCgpIC8gMiwgcmVjdC5oZWlnaHQoKSAvIDIpOwogCiAgICAgLy8gQXBwbHkg
dGhlIFNWRyBjb3JuZXIgcmFkaXVzIGNvbnN0cmFpbnRzLCBwZXIgdGhlIHJlY3Qgc2VjdGlvbiBv
ZiB0aGUgU1ZHIHNoYXBlcyBzcGVjOiBpZgotICAgIC8vIG9uZSBvZiByeCxyeSBpcyBuZWdhdGl2
ZSwgdGhlbiB0aGUgb3RoZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJZiBib3RoIHZh
bHVlcyBhcmUgCisgICAgLy8gb25lIG9mIHJ4LHJ5IGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBvdGhl
ciBjb3JuZXIgcmFkaXVzIHZhbHVlIGlzIHVzZWQuIElmIGJvdGggdmFsdWVzIGFyZQogICAgIC8v
IG5lZ2F0aXZlIHRoZW4gcnggPSByeSA9IDAuIElmIHJ4IGlzIGdyZWF0ZXIgdGhhbiBoYWxmIG9m
IHRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgLy8gdGhlbiBzZXQgcnggdG8gaGFsZiBv
ZiB0aGUgd2lkdGg7IHJ5IGlzIGhhbmRsZWQgc2ltaWxhcmx5LgogCkBAIC0xMjEsMzYgKzExNywz
OSBAQCB2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLAogICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkgPiBo
YWxmU2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmFkaXVzLnNldEhlaWdodChoYWxmU2l6ZS5oZWln
aHQoKSk7CiAKLSAgICBhZGRQYXRoRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMs
IHJhZGl1cywgcmFkaXVzLCBzdHJhdGVneSk7CisgICAgYWRkUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpLCBzdHJhdGVneSk7
CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSBzdHJhdGVneSkKK3ZvaWQg
UGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgciwgUm91bmRlZFJl
Y3RTdHJhdGVneSBzdHJhdGVneSkKIHsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgaWYg
KHIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmVjdC53aWR0aCgpIDwg
dG9wTGVmdFJhZGl1cy53aWR0aCgpICsgdG9wUmlnaHRSYWRpdXMud2lkdGgoKQotICAgICAgICAg
ICAgfHwgcmVjdC53aWR0aCgpIDwgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICsgYm90dG9tUmln
aHRSYWRpdXMud2lkdGgoKQotICAgICAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHRvcExlZnRS
YWRpdXMuaGVpZ2h0KCkgKyBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpCi0gICAgICAgICAgICB8
fCByZWN0LmhlaWdodCgpIDwgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBib3R0b21SaWdodFJh
ZGl1cy5oZWlnaHQoKSkgeworICAgIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSA9IHIucmFkaWkoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QgPSByLnJlY3QoKTsKKwor
ICAgIGlmIChyZWN0LndpZHRoKCkgPCByYWRpaS50b3BMZWZ0KCkud2lkdGgoKSArIHJhZGlpLnRv
cFJpZ2h0KCkud2lkdGgoKQorICAgICAgICB8fCByZWN0LndpZHRoKCkgPCByYWRpaS5ib3R0b21M
ZWZ0KCkud2lkdGgoKSArIHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKQorICAgICAgICB8fCBy
ZWN0LmhlaWdodCgpIDwgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgcmFkaWkuYm90dG9tTGVm
dCgpLmhlaWdodCgpCisgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCByYWRpaS50b3BSaWdodCgp
LmhlaWdodCgpICsgcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSkgewogICAgICAgICAvLyBJ
ZiBhbGwgdGhlIHJhZGlpIGNhbm5vdCBiZSBhY2NvbW1vZGF0ZWQsIHJldHVybiBhIHJlY3QuCiAg
ICAgICAgIGFkZFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhZGRQ
YXRoRm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBzdHJhdGVneSk7Ci19Ci0KLXZvaWQg
UGF0aDo6YWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCi17CiAgICAgaWYg
KHN0cmF0ZWd5ID09IFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0KSB7CiAjaWYgVVNFKENHKQotICAg
ICAgICBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0
b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAg
ICAgICBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCks
IHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQo
KSk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIH0KIAotICAgIGFkZEJlemllcnNGb3JS
b3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVm
dFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgIGFkZEJlemllcnNGb3JSb3VuZGVkUmVj
dChyZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxl
ZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7Cit9CisKK3ZvaWQgUGF0aDo6YWRkUm91bmRlZFJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmIHIpCit7CisgICAgYWRkUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChyKSk7CiB9CiAKIC8vIEFwcHJveGltYXRpb24gb2YgY29udHJvbCBwb2ludCBwb3Np
dGlvbnMgb24gYSBiZXppZXIgdG8gc2ltdWxhdGUgYSBxdWFydGVyIG9mIGEgY2lyY2xlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4IDU1ZjBmNmUyZWFiNzU0ODA2
MmMyZTNlMWJjYmExNDdlNDZlYzc5YTYuLjNkM2ZhMTdhY2UwNDUzZjgzOWI0MzYwMGM1NDA0NmJm
OTJlZTI3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTU3
LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9y
bTsKICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFz
cyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEZsb2F0U2l6ZTsKICAgICBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAgICAgY2xhc3MgUm91bmRlZFJlY3Q7CkBAIC0xMjksNyArMTMwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9OwogCiAgICAgICAgIHZvaWQgYWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLCBS
b3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwotICAgICAgICB2
b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
TGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBSb3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOworICAgICAg
ICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBSb3VuZGVkUmVj
dFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwogICAgICAgICB2b2lkIGFkZFJv
dW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CiAKICAgICAgICAgdm9pZCB0cmFuc2xhdGUo
Y29uc3QgRmxvYXRTaXplJik7CkBAIC0xNDMsNyArMTQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIGFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rpb24pIGNv
bnN0OwogICAgICAgICB2b2lkIHRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAot
ICAgICAgICB2b2lkIGFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRp
dXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5k
ZWRSZWN0KTsKICAgICAgICAgdm9pZCBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjc1MjI4
YmJiZWJkOWFhZDJmYzc2MmRkNGYyMzIzY2U4MmFlMDgxLi4xMWE1ZjlmMDJkNjRkNTM1MmZmOWIw
ZmFlODYyMzkzMjJjMGI5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNTA5LDkgKzUwOSw5IEBAIEludFNpemUgU2hhZG93Qmx1
cjo6dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IEZsb2F0
Um91bmRlCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2Ug
KyBib3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QpCiB7Ci0gICAgSW50UmVjdCBsYXllclJl
Y3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2Vk
UmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOworICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dl
ZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxh
eWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTIwLDIzICs1MjAsMjQg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAvLyBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcgZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+
Z2V0Q1RNKCkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hhZG93
KSB7Ci0gICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQs
IHNoYWRvd2VkUmVjdCwgcmFkaWksIGxheWVyUmVjdCk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93
V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgbGF5ZXJSZWN0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludFNpemUgZWRnZVNpemUgPSBibHVycmVk
RWRnZVNpemUoKTsKLSAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6
ZShlZGdlU2l6ZSwgcmFkaWkpOworICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVt
cGxhdGVTaXplKGVkZ2VTaXplLCBzaGFkb3dlZFJlY3QucmFkaWkoKSk7CisgICAgY29uc3QgRmxv
YXRSZWN0JiByZWN0ID0gc2hhZG93ZWRSZWN0LnJlY3QoKTsKIAotICAgIGlmICh0ZW1wbGF0ZVNp
emUud2lkdGgoKSA+IHNoYWRvd2VkUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQo
KSA+IHNoYWRvd2VkUmVjdC5oZWlnaHQoKQorICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+
IHJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiByZWN0LmhlaWdodCgpCiAg
ICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+
IG1fc291cmNlUmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgewotICAgICAg
ICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJl
Y3QsIHJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250
ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRl
bXBsYXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgaG9sZVJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpCiB7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJlY3QsIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcEJvdW5kcygpKTsKICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKQEAg
LTU0NywzMyArNTQ4LDM0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gZHJhd0lu
c2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTA0MgogICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90
eXBlICE9IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
ZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7
CisgICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBy
ZWN0LCBob2xlUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IEludFNpemUgZWRnZVNpemUgPSBibHVycmVkRWRnZVNpemUoKTsKLSAgICBJbnRTaXplIHRlbXBs
YXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgaG9sZVJhZGlpKTsKKyAgICBJ
bnRTaXplIHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgaG9sZVJl
Y3QucmFkaWkoKSk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBoUmVjdCA9IGhvbGVSZWN0LnJlY3Qo
KTsKIAotICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IGhvbGVSZWN0LndpZHRoKCkgfHwg
dGVtcGxhdGVTaXplLmhlaWdodCgpID4gaG9sZVJlY3QuaGVpZ2h0KCkKLSAgICAgICAgfHwgKHRl
bXBsYXRlU2l6ZS53aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gaG9sZVJlY3Qud2lk
dGgoKSAqIGhvbGVSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRo
b3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgbGF5
ZXJSZWN0KTsKKyAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBoUmVjdC53aWR0aCgpIHx8
IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhSZWN0LmhlaWdodCgpCisgICAgICAgIHx8ICh0ZW1w
bGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhSZWN0LndpZHRoKCkg
KiBoUmVjdC5oZWlnaHQoKSkpIHsKKyAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
ZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0Nv
bnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUp
OworICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBo
b2xlUmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hh
cmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5
ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZl
U2hhZG93ZWRSZWN0ID0gc2hhZG93ZWRSZWN0OworICAgIEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2
ZVNoYWRvd2VkUmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAgICAgYnVmZmVyUmVsYXRpdmVT
aGFkb3dlZFJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9u
bHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRv
bid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgcmFk
aWksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6
OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewog
ICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNv
bnRleHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpz
aGFkb3dDb250ZXh0KTsKQEAgLTU4MiwxMSArNTg0LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjCiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9s
YXllclNpemUud2lkdGgoKSArIDEsIG1fbGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOwogICAgICAg
ICBzaGFkb3dDb250ZXh0LT50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAg
ICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCi0gICAgICAgICAgICBz
aGFkb3dDb250ZXh0LT5maWxsUmVjdChzaGFkb3dlZFJlY3QpOworICAgICAgICBpZiAoc2hhZG93
ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisgICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxs
UmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQ
YXRoIHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCwg
cmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJh
ZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChzaGFk
b3dlZFJlY3QpOwogICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAg
ICAgICAgIH0KIApAQCAtNTk4LDcgKzYwMCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAg
ICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsK
IH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xl
UmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0lu
c2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hC
dWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAg
aWYgKCFtX2xheWVySW1hZ2UpCkBAIC02MDcsMTEgKzYwOSwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsCiAgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlUmVjdCA9IHJlY3Q7CiAgICAgYnVm
ZmVyUmVsYXRpdmVSZWN0Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKLSAgICBG
bG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCA9IGhvbGVSZWN0OworICAgIEZsb2F0UmVj
dCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0ID0gaG9sZVJlY3QucmVjdCgpOwogICAgIGJ1ZmZlclJl
bGF0aXZlSG9sZVJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8v
IE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRz
IGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1
ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVm
ZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJhZGlpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9
IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1
clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2
ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlm
IChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0
ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC02MjIsMTAgKzYyNCwxMCBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsCiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRo
LmFkZFJlY3QocmVjdCk7Ci0gICAgICAgIGlmIChob2xlUmFkaWkuaXNaZXJvKCkpCi0gICAgICAg
ICAgICBwYXRoLmFkZFJlY3QoaG9sZVJlY3QpOworICAgICAgICBpZiAoaG9sZVJlY3QucmFkaWko
KS5pc1plcm8oKSkKKyAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVjdC5yZWN0KCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCBo
b2xlUmFkaWkudG9wTGVmdCgpLCBob2xlUmFkaWkudG9wUmlnaHQoKSwgaG9sZVJhZGlpLmJvdHRv
bUxlZnQoKSwgaG9sZVJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRS
b3VuZGVkUmVjdChob2xlUmVjdCk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbFJ1
bGUoUlVMRV9FVkVOT0REKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENv
bG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC02NzEsNyArNjczLDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICB0aGUgc2hhZG93LgogICovCiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRl
bXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3Qs
IGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7
CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1
ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjgyLDcgKzY4
NCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9s
ZSA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxh
dGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdo
dCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRo
ZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBu
ZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0
Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UsIHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0ZUhvbGUsIHJhZGlpKTsKKyAgICBib29sIHJlZHJh
d05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFs
dWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywg
dGVtcGxhdGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7
CiAgICAgICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OwpAQCAtNjkzLDEwICs2OTUsMTAgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KIAogICAgICAg
ICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7Ci0gICAg
ICAgIGlmIChyYWRpaS5pc1plcm8oKSkKKyAgICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNa
ZXJvKCkpCiAgICAgICAgICAgICBwYXRoLmFkZFJlY3QodGVtcGxhdGVIb2xlKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIHJhZGlp
LnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5i
b3R0b21SaWdodCgpKTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAogICAgICAgICBzaGFk
b3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKIApAQCAtNzExLDcgKzcxMyw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IHJlY3Q7CiAgICAg
Ym91bmRpbmdSZWN0Lm1vdmUob2Zmc2V0KTsKIAotICAgIEZsb2F0UmVjdCBkZXN0SG9sZVJlY3Qg
PSBob2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3QucmVjdCgp
OwogICAgIGRlc3RIb2xlUmVjdC5tb3ZlKG9mZnNldCk7CiAgICAgRmxvYXRSZWN0IGRlc3RIb2xl
Qm91bmRzID0gZGVzdEhvbGVSZWN0OwogICAgIGRlc3RIb2xlQm91bmRzLmluZmxhdGVYKGVkZ2VT
aXplLndpZHRoKCkpOwpAQCAtNzMwLDEzICs3MzIsMTMgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b24KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUGF0aChleHRlcmlvclBhdGgpOwogICAg
IH0KICAgICAKLSAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJv
dW5kcywgcmFkaWksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIElubmVyU2hhZG93KTsKKyAgICBk
cmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9sZVJlY3Qu
cmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCiAgICAgbV9s
YXllckltYWdlID0gMDsKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0
Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29u
c3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAg
bV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0
ZW1wbGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNzQ1LDcgKzc0Nyw3IEBA
IHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlU2hhZG93ID0g
RmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1wbGF0ZVNp
emUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkg
LSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNj
cmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRz
Ci0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNo
ZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBs
YXRlU2hhZG93LCByYWRpaSwgbV9sYXllclNpemUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0g
U2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1
cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJh
ZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gdGhlIEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTc1NCwxMSAr
NzU2LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgICAgIHNoYWRvd0NvbnRleHQt
PmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRl
U2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCi0gICAgICAgIGlmIChy
YWRpaS5pc1plcm8oKSkKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygp
KQogICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgICAgIHBhdGgu
YWRkUm91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9w
UmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAg
ICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRv
dywgc2hhZG93ZWRSZWN0LnJhZGlpKCkpKTsKICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZp
bGxQYXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAgLTc3MCwxMiArNzcyLDEyIEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zCiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNmb3JtLnhTY2Fs
ZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3Qgc2hh
ZG93Qm91bmRzID0gc2hhZG93ZWRSZWN0OworICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBz
aGFkb3dlZFJlY3QucmVjdCgpOwogICAgIHNoYWRvd0JvdW5kcy5tb3ZlKG9mZnNldCk7CiAgICAg
c2hhZG93Qm91bmRzLmluZmxhdGVYKGVkZ2VTaXplLndpZHRoKCkpOwogICAgIHNoYWRvd0JvdW5k
cy5pbmZsYXRlWShlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBkcmF3TGF5ZXJQaWVjZXMoZ3Jh
cGhpY3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXpl
LCBPdXRlclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hh
ZG93Qm91bmRzLCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwg
T3V0ZXJTaGFkb3cpOwogCiAgICAgbV9sYXllckltYWdlID0gMDsKICAgICBTY3JhdGNoQnVmZmVy
OjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDk1OWUxN2U4OWI2OGMyODAy
MDMyZTVhOWMxZjk0OTQ5MGYwYjdjNTIuLjgxODAzNTVmNzQ4OWI4MmY0ZWE5ZWJjMWExZDFmNTkz
ZTVkYTFlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogYmVn
aW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJl
YSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKIAotICAgIHZv
aWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKTsKKyAgICB2b2lk
IGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
KTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7CiAKICAgICB2b2lkIGJs
dXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiwgaW50IHN0cmlkZSk7
CiAKQEAgLTg3LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIEludFJlY3QgY2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShj
b25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpJikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUs
IGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRv
d1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYs
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IElu
dFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXpl
KTsKIAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAg
dm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRT
aXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIGRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKICAgICAKICAg
ICB2b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRT
aXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0Rp
cmVjdGlvbik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMWRkZjYw
ZjI1NzU0ZDE1MjhhYjBjZDRiOTU5Y2ZkM2U1MmU0ZWQ2My4uN2U0NzI4MzFiZWMwMDE5YzU3MjQw
NmM3ZTc4Y2RmYTZlOGZkM2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAt
NDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkRyYXdFcnJvclVuZGVybGluZS5oIgogI2luY2x1ZGUg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZv
bnQuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yUwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzU2hhZG93KCkpCi0gICAg
ICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFkb3codGhpcywg
cmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkp
OwogCiAgICAgZmlsbFJlY3RXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3Qs
IGNvbG9yKTsKIH0KQEAgLTEwMjgsMzEgKzEwMjgsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByKQogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3Is
IHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgciwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBG
bG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1No
YWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0
U2hhZG93KHRoaXMsIHIsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwogCiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBQ
YXRoIHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7
CiAgICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgcGF0aCk7CiAgICAgc2V0
U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3IpOwogICAgIGNhaXJvX2ZpbGwoY3IpOwogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYg
cm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFj
b2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0aGlzLT5tdXN0VXNl
U2hhZG93Qmx1cigpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRy
YXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVjdCgpLCByb3VuZGVk
SG9sZVJlY3QucmFkaWkoKSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCkuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAKICAgICBQ
YXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4
IDI0ZDExZjkwNTIzNzU2NDg1YmVmMzc1NTM3NzZmZDhkMTIxOTZlOWUuLjEyZGU1NWE2OGZlZWEy
OGUwYWZkNzMzMmJkZTI4OTcwN2RiZDUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTgwNiw3
ICs4MDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250
ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNo
YWRvdyhtX3N0YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJh
d1JlY3RTaGFkb3codGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAg
Q0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC04MzQsNyArODM0LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dC
bHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICBjb250
ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwog
ICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtODQ2LDcg
Kzg0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHNldENHRmlsbENvbG9y
KGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDE3ICs4NjUsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdG8KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dC
bHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3codGhpcywgcmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cu
ZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCk7CiAgICAgfQogCi0gICAgYm9vbCBlcXVhbFdpZHRo
cyA9ICh0b3BMZWZ0LndpZHRoKCkgPT0gdG9wUmlnaHQud2lkdGgoKSAmJiB0b3BSaWdodC53aWR0
aCgpID09IGJvdHRvbUxlZnQud2lkdGgoKSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPT0gYm90dG9t
UmlnaHQud2lkdGgoKSk7Ci0gICAgYm9vbCBlcXVhbEhlaWdodHMgPSAodG9wTGVmdC5oZWlnaHQo
KSA9PSBib3R0b21MZWZ0LmhlaWdodCgpICYmIGJvdHRvbUxlZnQuaGVpZ2h0KCkgPT0gdG9wUmln
aHQuaGVpZ2h0KCkgJiYgdG9wUmlnaHQuaGVpZ2h0KCkgPT0gYm90dG9tUmlnaHQuaGVpZ2h0KCkp
OworICAgIGNvbnN0IEZsb2F0UmVjdCYgciA9IHJlY3QucmVjdCgpOworICAgIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSA9IHJlY3QucmFkaWkoKTsKKyAgICBib29sIGVxdWFs
V2lkdGhzID0gKHJhZGlpLnRvcExlZnQoKS53aWR0aCgpID09IHJhZGlpLnRvcFJpZ2h0KCkud2lk
dGgoKSAmJiByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLndp
ZHRoKCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tUmlnaHQo
KS53aWR0aCgpKTsKKyAgICBib29sIGVxdWFsSGVpZ2h0cyA9IChyYWRpaS50b3BMZWZ0KCkuaGVp
Z2h0KCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICYmIHJhZGlpLmJvdHRvbUxlZnQo
KS5oZWlnaHQoKSA9PSByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpICYmIHJhZGlpLnRvcFJpZ2h0
KCkuaGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSk7CiAgICAgYm9vbCBo
YXNDdXN0b21GaWxsID0gbV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVy
bjsKLSAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRz
ICYmIHRvcExlZnQud2lkdGgoKSAqIDIgPT0gcmVjdC53aWR0aCgpICYmIHRvcExlZnQuaGVpZ2h0
KCkgKiAyID09IHJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIENHQ29udGV4dEZpbGxFbGxpcHNlSW5S
ZWN0KGNvbnRleHQsIHJlY3QpOworICAgIGlmICghaGFzQ3VzdG9tRmlsbCAmJiBlcXVhbFdpZHRo
cyAmJiBlcXVhbEhlaWdodHMgJiYgcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKiAyID09IHIud2lk
dGgoKSAmJiByYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgKiAyID09IHIuaGVpZ2h0KCkpCisgICAg
ICAgIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0KGNvbnRleHQsIHIpOwogICAgIGVsc2Ugewog
ICAgICAgICBQYXRoIHBhdGg7Ci0gICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICAgICAgZmlsbFBhdGgocGF0aCk7CiAgICAgfQogCkBA
IC04ODYsNyArODg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG8KICAgICAgICAgc2V0Q0dG
aWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTkxNiw3ICs5MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAgICBjb250
ZXh0U2hhZG93LmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOwog
ICAgIH0KIAogICAgIGZpbGxQYXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3Bw
CmluZGV4IDgyOTlkNjM0YWViMmRkZGNhYWU5MzFlNjExYzNkMDY4NjY5YTY4NjYuLmUwZDMyOTE2
NDAyMzE2OTlkYTUwN2YwNjU4YTY3OTMzNWQyNmQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRX
aW5DRS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
IAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR0RJRXh0cmFzLmgiCiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKQEAgLTExNTAsNyArMTE1MSw4IEBAIHN0YXRpYyBpbmxpbmUgSW50
UG9pbnQgcmVjdENlbnRlclBvaW50KGNvbnN0IFJFQ1QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIElu
dFBvaW50KHJlY3QubGVmdCArIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAvIDIsIHJlY3QudG9w
ICsgKHJlY3QuYm90dG9tIC0gcmVjdC50b3ApIC8gMik7CiB9Ci12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJlY3QsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYg
YywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgU2NvcGVEQ1Byb3ZpZGVyIGRjUHJvdmlkZXIo
bV9kYXRhKTsKICAgICBpZiAoIW1fZGF0YS0+bV9kYykKQEAgLTExNjMsMTYgKzExNjUsMTcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIGZp
bGxSZWN0LCBjb25zdCBGbG9hdFNpemUKICAgICAgICAgCiAgICAgZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgIAor
ICAgIGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJlY3QgPSByZWN0LnJlY3QoKTsKICAgICBJbnRSZWN0
IGRzdFJlY3QgPSBmaWxsUmVjdDsKICAgICAKICAgICBkc3RSZWN0Lm1vdmUoc3RhYmxlUm91bmQo
c2hhZG93T2Zmc2V0LndpZHRoKCkpLCBzdGFibGVSb3VuZChzaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
KTsKICAgICBkc3RSZWN0LmluZmxhdGUoc3RhYmxlUm91bmQoc2hhZG93Qmx1cikpOwogICAgIGRz
dFJlY3QgPSBtX2RhdGEtPm1hcFJlY3QoZHN0UmVjdCk7CiAgIAotICAgIEZsb2F0U2l6ZSBuZXdU
b3BMZWZ0KG1fZGF0YS0+bWFwU2l6ZSh0b3BMZWZ0KSk7Ci0gICAgRmxvYXRTaXplIG5ld1RvcFJp
Z2h0KG1fZGF0YS0+bWFwU2l6ZSh0b3BSaWdodCkpOwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21M
ZWZ0KG1fZGF0YS0+bWFwU2l6ZShib3R0b21MZWZ0KSk7Ci0gICAgRmxvYXRTaXplIG5ld0JvdHRv
bVJpZ2h0KG1fZGF0YS0+bWFwU2l6ZShib3R0b21SaWdodCkpOworICAgIEZsb2F0U2l6ZSBuZXdU
b3BMZWZ0KG1fZGF0YS0+bWFwU2l6ZShyZWN0LnJhZGlpKCkudG9wTGVmdCgpKSk7CisgICAgRmxv
YXRTaXplIG5ld1RvcFJpZ2h0KG1fZGF0YS0+bWFwU2l6ZShyZWN0LnJhZGlpKCkudG9wUmlnaHQo
KSkpOworICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21MZWZ0KG1fZGF0YS0+bWFwU2l6ZShyZWN0LnJh
ZGlpKCkuYm90dG9tTGVmdCgpKSk7CisgICAgRmxvYXRTaXplIG5ld0JvdHRvbVJpZ2h0KG1fZGF0
YS0+bWFwU2l6ZShyZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogCiAgICAgVHJhbnNwYXJl
bnRMYXllckRDIHRyYW5zcGFyZW50RGMobV9kYXRhLCBkc3RSZWN0LCAmZmlsbFJlY3QpOwogICAg
IEhEQyBkYyA9IHRyYW5zcGFyZW50RGMuaGRjKCk7CkBAIC0xMjIzLDcgKzEyMjYsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZQogICAgIFNlbGVjdE9iamVjdChkYywgb2xkQnJ1c2gpOwogfQog
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Um91bmRDb3JuZXIoYm9vbCBuZWVkc05ld0Ns
aXAsIFJFQ1QgY2xpcFJlY3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCiB7CiAgICAgaWYgKCFkYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKaW5kZXggMzFhMzJlNGMzYzAyNTNlODE1N2U4NDg1YmQxM2I1YTExY2Vl
YTQ3ZS4uZDBkMDIwZTIxNzBiYWJlNTc3NGNlNmIxNjhmNTlmMTUzZTNhZDI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKIAorI2luY2x1
ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9u
dENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCkBAIC0xOTUsNyArMTk2LDcg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmkKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgYmFja2dy
b3VuZENvbG9yKDE0MCwgMTQwLCAxNDApOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHJhZGlp
KERyYWdMYWJlbFJhZGl1cywgRHJhZ0xhYmVsUmFkaXVzKTsKICAgICBJbnRSZWN0IHJlY3QoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC5m
aWxsUm91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWksIGJhY2tncm91
bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJh
Y2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgCiAgICAgLy8gRHJhdyB0aGUg
dGV4dAogICAgIHN0YXRpYyBjb25zdCBDb2xvciB0b3BDb2xvcigwLCAwLCAwLCAyNTUpOyAvLyBv
cmlnaW5hbCBhbHBoYSA9IDAuNzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVhMGMyZGM5MWVhZGRiNjhlMDJlMjYzMmE2NTM3
NTkwNThjNjczOTUuLjE5N2Q2ODUxODc4YTE3Njk0MmU0NTA4NTE3YmVhYzExYzNkMGE3ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRl
ckJveE1vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKQEAgLTY1Myw3ICs2NTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgICAgICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3Jv
dW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgq
Y29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRF
ZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGlmIChib3JkZXIuaXNSZW5kZXJh
YmxlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwg
YmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciksIGJnQ29sb3IsIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250
ZXh0LCByZWN0LCBib3JkZXIpOwpAQCAtMjU2Miw3ICsyNTYzLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWMKICAgICAgICAgICAgICAgICAgICAgZmlsbFJlY3QuZXhwYW5kUmFkaWkoc2hhZG93
U3ByZWFkKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxsUmVjdC5pc1JlbmRlcmFibGUo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxSZWN0LmFkanVzdFJhZGlpKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgQ29sb3I6
OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5m
aWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChmaWxsUmVjdCksIENvbG9yOjpibGFjaywg
cy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0
KCk7CkBAIC0yNTkwLDcgKzI1OTEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAg
ICAgICAgICBpZiAoaG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRS
ZWN0KGJvcmRlciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciks
IHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyLnJlY3QoKSwgc2hhZG93
Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0y
NjM1LDcgKzI2MzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRv
dyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d1JhZGl1cywgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKG91dGVyUmVjdCwgcm91bmRlZEhvbGUsIGZp
bGxDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKG91dGVyUmVjdCwgRmxvYXRSb3VuZGVkUmVjdChyb3VuZGVkSG9sZSks
IGZpbGxDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBmYTk0YjhiN2JiNjlm
MzJhZDMwMTdjMmU5N2NiMmZhN2QzNWE5M2U1Li41N2MyYmQ3ZTc0NjIwMzc4MThhMjdlMzM4Y2Zm
ZGNhNzMzMzY2OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCkBAIC05ODYsNyArOTg2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBs
b2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKIAogICAgICAg
ICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24g
d2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJhY2tn
cm91bmRJbWFnZUNvbG9yID0gYnV0dG9uUmVuZGVyZXIgPyBDb2xvcihidXR0b25SZW5kZXJlci0+
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
LnJnYigpKSA6IENvbG9yKDIwNi4wZiwgMjA2LjBmLCAyMDYuMGYpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNv
cm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIHBpY3R1cmVGcmFt
ZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsKQEAgLTEwMDcsNyAr
MTAwNyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0
aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgLy8gRm9yZWdy
b3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxs
Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVy
U2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplKSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCB0aHVt
Ym5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKaW5kZXggMjVjOTY2ODc1Y2U2MjgxZTdjZGNiMzUzZTEy
NjY5YmI4ZDA0MjcxYS4uNTY4N2VjODAxZmQ0NzZiZmE4ODVkMjU5MTViNjBmODM1MGI1YmI2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKQEAgLTE1
NiwxOCArMTU2LDExIEBAIGJvb2wgQm94U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2lj
YWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFJvdW5kZWRSZWN0KFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQotewotICAg
IHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdo
dCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCksIFBhdGg6OlByZWZl
ckJlemllclJvdW5kZWRSZWN0KTsKLX0KLQogdm9pZCBCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0
aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QKIHsKLSAgICBhZGRSb3VuZGVkUmVjdChwYXRo
cy5zaGFwZSwgbV9ib3VuZHMucmVjdCgpLCBtX2JvdW5kcy5yYWRpaSgpKTsKLSAgICBpZiAoc2hh
cGVNYXJnaW4oKSkgewotICAgICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBtYXJnaW5Cb3Vu
ZHMgPSBzaGFwZU1hcmdpbkJvdW5kcygpOwotICAgICAgICBhZGRSb3VuZGVkUmVjdChwYXRocy5t
YXJnaW5TaGFwZSwgbWFyZ2luQm91bmRzLnJlY3QoKSwgbWFyZ2luQm91bmRzLnJhZGlpKCkpOwot
ICAgIH0KKyAgICBwYXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywgUGF0aDo6UHJl
ZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIGlmIChzaGFwZU1hcmdpbigpKQorICAgICAgICBw
YXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVjdChzaGFwZU1hcmdpbkJvdW5kcygpLCBQYXRo
OjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4
IGRhODg3ZTQ3MmM1MWZkY2Q4NDAzMjRjYmY5NmEzNDkxYjM0NWI2M2MuLmQ1MmRjYmE4ZDYxNTUw
ZTI0YzhhMzAzOTZjOTA3YTQ0NjQyNDkwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJh
c2ljU2hhcGVGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1
ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSZW5k
ZXJCb3guaCIKQEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEJhc2ljU2hhcGVJbnNldDo6cGF0aChQ
YXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIEFTU0VSVChwYXRo
LmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgbGVmdCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9sZWZ0
LCBib3VuZGluZ0JveC53aWR0aCgpKTsKICAgICBmbG9hdCB0b3AgPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKG1fdG9wLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVj
dCgKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHIgPSBGbG9hdFJvdW5kZWRSZWN0KAogICAgICAgICBG
bG9hdFJlY3QoCiAgICAgICAgICAgICBsZWZ0ICsgYm91bmRpbmdCb3gueCgpLAogICAgICAgICAg
ICAgdG9wICsgYm91bmRpbmdCb3gueSgpLApAQCAtMzY3LDYgKzM2OCw3IEBAIHZvaWQgQmFzaWNT
aGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gp
CiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0b21MZWZ0UmFkaXVzLCBib3Vu
ZGluZ0JveCksCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0b21SaWdodFJh
ZGl1cywgYm91bmRpbmdCb3gpCiAgICAgKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHIpOwog
fQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6YmxlbmQoY29uc3Qg
QmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225587</attachid>
            <date>2014-03-01 20:54:42 -0800</date>
            <delta_ts>2014-03-01 21:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140301205441.patch</filename>
            <type>text/plain</type>
            <size>56399</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMGI4YmQ2MGZiNWZjZTEwZDBiOTA3NDkyMjRlMWUy
YzEzYTMzZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVk
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmFkaWlGcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzMzRlODIxNThjNjhjNmM2YzBmMTUx
YTEzOWRjYjBkMjY5NzAwYWMuLjI5YzdjMDVhMmI4NTFmMGI5MjE0ZmY2MDIyZGEyOTFhMDZlNDI5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0wMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzog
TWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9hdFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBj
bGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3KToKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorCiAyMDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0
ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApp
bmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4MmM5NDM0N2QzLi5jZGZjZTA3OGYy
ZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTI0Miw3ICsx
MjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSB0aHVtYlJlY3QoMywgMyk7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRodW1iQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0KSwg
bV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNmNTAyYjRlNGM0OTk5MjQ2MjhiNGI0
MThiZmY2Li43YjE5MGE4ZTUwZGM5ZmQ0NTI5NmE0YjYwNjFjNTQ2OTkxNTgyNTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGbG9hdFJv
dW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQorICAg
IDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRpaShyZWN0LnJhZGlpKCkpCit7Cit9
CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRS
b3VuZGVkUmVjdC5oCmluZGV4IGZiZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRlM2Y5YzIyMTNiOTJk
Y2QuLmZmNWVjNzE2NWMxM2JmZDUxOGExNjQ1NjhiNmQwZmU2MjNjOWU0ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAg
LTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBleHBsaWNpdCBGbG9hdFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4
cGxpY2l0IEZsb2F0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICBGbG9hdFJv
dW5kZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwog
ICAgIEZsb2F0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2YjRk
N2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzLi5mOWNhMjVhMjhiNWMzZjVmOTdm
Yjc0YmUwMWE0ZGJlZmNkNTQ5YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVk
ZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC02OTYsMTUgKzY5NywxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0
JiByZWN0KQogICAgIGNsaXAocGF0aCk7CiB9CiAKLS8vIEZJWE1FOiBDb25zaWRlciB3cml0aW5n
IHRoaXMgaW4gdGVybXMgb2YgYSBzcGVjaWFsaXplZCBSb3VuZGVkUmVjdCB0aGF0IHVzZXMgRmxv
YXRSZWN0IGFuZCBGbG9hdFNpemUgcmFkaWkuCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0
LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYXRoIHBhdGg7
Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7CiAgICAg
Y2xpcChwYXRoKTsKIH0KIApAQCAtNzY5LDE4ICs3NjgsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclMKICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAocmVjdC5pc1JvdW5k
ZWQoKSkgewogICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9u
KCksIGJsZW5kTW9kZSk7Ci0gICAgICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVj
dC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWko
KS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBjb2xvciwgY29sb3JT
cGFjZSk7CisgICAgICAgIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9yLCBjb2xv
clNwYWNlKTsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlv
bigpKTsKICAgICB9IGVsc2UKICAgICAgICAgZmlsbFJlY3QocmVjdC5yZWN0KCksIGNvbG9yLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKIH0KIAogI2lmICFV
U0UoQ0cpICYmICFVU0UoQ0FJUk8pCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5k
ZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGE5YmY1ZDAwNGNlMTFiYWNhNzA3
MTk2MjA0NmQ5ODM0Y2UyZTBmZTUuLmE1NDNlY2MwMmU3ZTE3YThmNzdiZTliODRkZDk4OTc5ZGQy
Mzg0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC03NSw2ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBEcmF3aW5nQnVmZmVyOworICAgIGNs
YXNzIEZsb2F0Um91bmRlZFJlY3Q7CiAgICAgY2xhc3MgR3JhZGllbnQ7CiAgICAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAt
Mjk0LDkgKzI5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2
b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7CiAgICAgICAgIHZvaWQg
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9p
ZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAg
ICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7
CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Cisg
ICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9y
U3BhY2UpOwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBA
IC0zMjgsOSArMzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsaXAo
Y29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7CiAg
ICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIHdyaXRpbmcgdGhpcyBpbiB0ZXJtcyBvZiBhIHNwZWNpYWxp
emVkIFJvdW5kZWRSZWN0IHRoYXQgdXNlcyBGbG9hdFJlY3QgYW5kIEZsb2F0U2l6ZSByYWRpaS4K
LSAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNp
emUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOworICAgICAgICB2
b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAKICAgICAgICAg
dm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBPdXRSb3Vu
ZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwpAQCAtNTcwLDYgKzU2OCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwbGF0Zm9ybUZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpOwogICAgICAgICB2b2lkIHBsYXRmb3JtU3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmKTsKIAorICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhOwogCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCmluZGV4IDg4ZDQ1M2MzYTQzNjhmNDM5M2Q5MjQ5MjdmNjI0MDI1NTc3NTIxM2YuLjA5MTY4
ZTU4NmZhNjVmOWYzZDUwZGViMzJmNWY2N2VkYWE4MDZmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgogI2luY2x1ZGUgIlJv
dW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtOTEsMTEgKzkyLDYgQEAgZmxvYXQg
UGF0aDo6bm9ybWFsQW5nbGVBdExlbmd0aChmbG9hdCBsZW5ndGgsIGJvb2wmIG9rKSBjb25zdAog
ICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX25vcm1hbEFuZ2xlOwogfQogCi12b2lkIFBhdGg6
OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQotewotICAgIGFkZFJvdW5kZWRS
ZWN0KHIucmVjdCgpLCByLnJhZGlpKCkudG9wTGVmdCgpLCByLnJhZGlpKCkudG9wUmlnaHQoKSwg
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwotfQotCiB2
b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRTaXplJiByb3VuZGluZ1JhZGlpLCBSb3VuZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQogewog
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTEwNSw3ICsxMDEsNyBAQCB2b2lkIFBhdGg6OmFk
ZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiByb3Vu
ZGluZ1JhZGlpLAogICAgIEZsb2F0U2l6ZSBoYWxmU2l6ZShyZWN0LndpZHRoKCkgLyAyLCByZWN0
LmhlaWdodCgpIC8gMik7CiAKICAgICAvLyBBcHBseSB0aGUgU1ZHIGNvcm5lciByYWRpdXMgY29u
c3RyYWludHMsIHBlciB0aGUgcmVjdCBzZWN0aW9uIG9mIHRoZSBTVkcgc2hhcGVzIHNwZWM6IGlm
Ci0gICAgLy8gb25lIG9mIHJ4LHJ5IGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBvdGhlciBjb3JuZXIg
cmFkaXVzIHZhbHVlIGlzIHVzZWQuIElmIGJvdGggdmFsdWVzIGFyZSAKKyAgICAvLyBvbmUgb2Yg
cngscnkgaXMgbmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMgdmFsdWUgaXMg
dXNlZC4gSWYgYm90aCB2YWx1ZXMgYXJlCiAgICAgLy8gbmVnYXRpdmUgdGhlbiByeCA9IHJ5ID0g
MC4gSWYgcnggaXMgZ3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIHdpZHRoIG9mIHRoZSByZWN0YW5n
bGUKICAgICAvLyB0aGVuIHNldCByeCB0byBoYWxmIG9mIHRoZSB3aWR0aDsgcnkgaXMgaGFuZGxl
ZCBzaW1pbGFybHkuCiAKQEAgLTEyMSwzNiArMTE3LDM5IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgaWYgKHJhZGl1cy5oZWlnaHQoKSA+IGhhbGZTaXplLmhlaWdodCgpKQogICAgICAg
ICByYWRpdXMuc2V0SGVpZ2h0KGhhbGZTaXplLmhlaWdodCgpKTsKIAotICAgIGFkZFBhdGhGb3JS
b3VuZGVkUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHN0cmF0ZWd5
KTsKKyAgICBhZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGl1cywgcmFk
aXVzLCByYWRpdXMsIHJhZGl1cyksIHN0cmF0ZWd5KTsKIH0KIAotdm9pZCBQYXRoOjphZGRSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJh
ZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3Vu
ZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQordm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByLCBSb3VuZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQogewot
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoci5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChyZWN0LndpZHRoKCkgPCB0b3BMZWZ0UmFkaXVzLndpZHRoKCkgKyB0
b3BSaWdodFJhZGl1cy53aWR0aCgpCi0gICAgICAgICAgICB8fCByZWN0LndpZHRoKCkgPCBib3R0
b21MZWZ0UmFkaXVzLndpZHRoKCkgKyBib3R0b21SaWdodFJhZGl1cy53aWR0aCgpCi0gICAgICAg
ICAgICB8fCByZWN0LmhlaWdodCgpIDwgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbUxl
ZnRSYWRpdXMuaGVpZ2h0KCkKLSAgICAgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCB0b3BSaWdo
dFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKSB7CisgICAgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpID0gci5yYWRpaSgpOworICAgIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCA9IHIucmVjdCgpOworCisgICAgaWYgKHJlY3Qud2lkdGgoKSA8IHJh
ZGlpLnRvcExlZnQoKS53aWR0aCgpICsgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpCisgICAgICAg
IHx8IHJlY3Qud2lkdGgoKSA8IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICsgcmFkaWkuYm90
dG9tUmlnaHQoKS53aWR0aCgpCisgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCByYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKyByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkKKyAgICAgICAgfHwg
cmVjdC5oZWlnaHQoKSA8IHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgKyByYWRpaS5ib3R0b21S
aWdodCgpLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJl
IGFjY29tbW9kYXRlZCwgcmV0dXJuIGEgcmVjdC4KICAgICAgICAgYWRkUmVjdChyZWN0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXMsIHN0cmF0ZWd5KTsKLX0KLQotdm9pZCBQYXRoOjphZGRQYXRoRm9yUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJl
Y3RTdHJhdGVneSBzdHJhdGVneSkKLXsKICAgICBpZiAoc3RyYXRlZ3kgPT0gUHJlZmVyTmF0aXZl
Um91bmRlZFJlY3QpIHsKICNpZiBVU0UoQ0cpCi0gICAgICAgIHBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0KHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWku
Ym90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAgICAgfQogCi0gICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cyk7CisgICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwg
cmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgp
KTsKK30KKwordm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcikK
K3sKKyAgICBhZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHIpKTsKIH0KIAogLy8gQXBw
cm94aW1hdGlvbiBvZiBjb250cm9sIHBvaW50IHBvc2l0aW9ucyBvbiBhIGJlemllciB0byBzaW11
bGF0ZSBhIHF1YXJ0ZXIgb2YgYSBjaXJjbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKaW5kZXggNTVmMGY2ZTJlYWI3NTQ4MDYyYzJlM2UxYmNiYTE0N2U0NmVjNzlhNi4u
M2QzZmExN2FjZTA0NTNmODM5YjQzNjAwYzU0MDQ2YmY5MmVlMjdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIEZsb2F0UG9pbnQ7
CiAgICAgY2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiAgICAg
Y2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKICAgICBjbGFzcyBS
b3VuZGVkUmVjdDsKQEAgLTEyOSw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIH07CiAKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVm
ZXJOYXRpdmVSb3VuZGVkUmVjdCk7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQ
cmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CisgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJOYXRpdmVS
b3VuZGVkUmVjdCk7CiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmKTsKIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmKTsKQEAgLTE0
Myw3ICsxNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHkodm9p
ZCogaW5mbywgUGF0aEFwcGxpZXJGdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIHZvaWQgdHJhbnNm
b3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCi0gICAgICAgIHZvaWQgYWRkUGF0aEZvclJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0
b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3VuZGVk
UmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwogICAgICAgICB2b2lkIGFk
ZEJlemllcnNGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUm
IHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJh
ZGl1cyk7CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGQ2NzUyMjhiYmJlYmQ5YWFkMmZjNzYyZGQ0ZjIzMjNj
ZTgyYWUwODEuLjExYTVmOWYwMmQ2NGQ1MzUyZmY5YjBmYWU4NjIzOTMyMmMwYjlkMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC01
MDksOSArNTA5LDkgQEAgSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50
U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgRmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAg
ICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BTbGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiByYWRpaSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRv
d2VkUmVjdCkKIHsKLSAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBncmFwaGljc0NvbnRleHQtPmNs
aXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcEJvdW5kcygpKTsKICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC01MjAsMjMgKzUyMCwyNCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
YwogICAgIC8vIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90
YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTA0MgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxp
Z25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5
ZXJSZWN0KTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29u
dGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgSW50U2l6ZSBlZGdlU2l6ZSA9IGJsdXJyZWRFZGdlU2l6ZSgpOwotICAgIEludFNpemUg
dGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVTaXplKGVkZ2VTaXplLCByYWRpaSk7CisgICAg
SW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QgPSBzaGFkb3dlZFJl
Y3QucmVjdCgpOwogCi0gICAgaWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gc2hhZG93ZWRSZWN0
LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4gc2hhZG93ZWRSZWN0LmhlaWdodCgp
CisgICAgaWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gcmVjdC53aWR0aCgpIHx8IHRlbXBsYXRl
U2l6ZS5oZWlnaHQoKSA+IHJlY3QuaGVpZ2h0KCkKICAgICAgICAgfHwgKHRlbXBsYXRlU2l6ZS53
aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gbV9zb3VyY2VSZWN0LndpZHRoKCkgKiBt
X3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7Ci0gICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgcmFkaWksIGxheWVyUmVjdCk7Cisg
ICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRv
d2VkUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgcmFkaWks
IHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUpOworICAgIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhn
cmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9
CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpCit2b2lkIFNo
YWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVj
dCkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwog
ICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTQ3LDMzICs1NDgsMzQgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmUKICAgICAvLyBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nIGRvZXMg
bm90IHdvcmsgd2l0aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MDQyCiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgp
LnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAg
ICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwg
aG9sZVJlY3QsIGhvbGVSYWRpaSwgbGF5ZXJSZWN0KTsKKyAgICAgICAgZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50U2l6ZSBlZGdlU2l6ZSA9IGJsdXJy
ZWRFZGdlU2l6ZSgpOwotICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVT
aXplKGVkZ2VTaXplLCBob2xlUmFkaWkpOworICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhp
cy0+dGVtcGxhdGVTaXplKGVkZ2VTaXplLCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBjb25zdCBG
bG9hdFJlY3QmIGhSZWN0ID0gaG9sZVJlY3QucmVjdCgpOwogCi0gICAgaWYgKHRlbXBsYXRlU2l6
ZS53aWR0aCgpID4gaG9sZVJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBo
b2xlUmVjdC5oZWlnaHQoKQotICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgPiBob2xlUmVjdC53aWR0aCgpICogaG9sZVJlY3QuaGVpZ2h0KCkp
KSB7Ci0gICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0
LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgIGlmICh0ZW1wbGF0
ZVNpemUud2lkdGgoKSA+IGhSZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4g
aFJlY3QuaGVpZ2h0KCkKKyAgICAgICAgfHwgKHRlbXBsYXRlU2l6ZS53aWR0aCgpICogdGVtcGxh
dGVTaXplLmhlaWdodCgpID4gaFJlY3Qud2lkdGgoKSAqIGhSZWN0LmhlaWdodCgpKSkgeworICAg
ICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwg
aG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkcmF3
SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhv
bGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVk
Z2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBt
X2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxh
eWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QgPSBzaGFkb3dlZFJl
Y3Q7CisgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0ID0gc2hhZG93ZWRS
ZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJD
b250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2gg
YnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAg
Ym9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFk
b3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCByYWRpaSwgbV9sYXllclNpemUpOworICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBi
dWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJT
aXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
c2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOwpAQCAtNTgyLDEx
ICs1ODQsMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgc2hhZG93Q29udGV4
dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGlm
IChyYWRpaS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNo
YWRvd2VkUmVjdCk7CisgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgICAgIHBh
dGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRv
cFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCk7CiAgICAgICAgICAgICBz
aGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCkBAIC01OTgsNyArNjAw
LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGMKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
CiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRj
aEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTYw
NywxMSArNjA5LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICBGbG9hdFJlY3QgYnVm
ZmVyUmVsYXRpdmVSZWN0ID0gcmVjdDsKICAgICBidWZmZXJSZWxhdGl2ZVJlY3QubW92ZShtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAotICAgIEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0ID0gaG9sZVJlY3Q7CisgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3Qg
PSBob2xlUmVjdC5yZWN0KCk7CiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5tb3ZlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0
Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0g
ICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRJ
bnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBob2xl
UmFkaWkpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCku
c2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xl
UmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQo
KTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dD
b250ZXh0KTsKQEAgLTYyMiwxMCArNjI0LDEwIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAog
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKLSAgICAgICAg
aWYgKGhvbGVSYWRpaS5pc1plcm8oKSkKLSAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVj
dCk7CisgICAgICAgIGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQorICAgICAgICAgICAg
cGF0aC5hZGRSZWN0KGhvbGVSZWN0LnJlY3QoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QsIGhvbGVSYWRpaS50b3BMZWZ0KCksIGhvbGVS
YWRpaS50b3BSaWdodCgpLCBob2xlUmFkaWkuYm90dG9tTGVmdCgpLCBob2xlUmFkaWkuYm90dG9t
UmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAog
ICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwogICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKQEAgLTY3MSw3ICs2NzMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
IHRoZSBzaGFkb3cuCiAgKi8KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAg
aWYgKCFtX2xheWVySW1hZ2UpCkBAIC02ODIsNyArNjg0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb24KICAgICBGbG9hdFJlY3QgdGVtcGxhdGVIb2xlID0gRmxvYXRSZWN0KGVkZ2VTaXplLndp
ZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdl
U2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0
KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBj
YWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVk
ZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyht
X2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBs
YXRlSG9sZSwgcmFkaWkpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6
c2hhcmVkKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9y
LCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJh
ZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byBhIG5ldyBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CkBAIC02OTMsMTAgKzY5NSwxMCBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbgogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0
aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgaWYgKHJhZGlpLmlzWmVybygpKQor
ICAgICAgICBpZiAoaG9sZVJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdCh0ZW1wbGF0ZUhvbGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KHRlbXBsYXRlSG9sZSwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdo
dCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRlbXBsYXRlSG9sZSwgaG9s
ZVJlY3QucmFkaWkoKSkpOwogCiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgp
OwogCkBAIC03MTEsNyArNzEzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcmVjdDsKICAgICBib3VuZGluZ1JlY3QubW92ZShvZmZzZXQp
OwogCi0gICAgRmxvYXRSZWN0IGRlc3RIb2xlUmVjdCA9IGhvbGVSZWN0OworICAgIEZsb2F0UmVj
dCBkZXN0SG9sZVJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAgICAgZGVzdEhvbGVSZWN0Lm1vdmUo
b2Zmc2V0KTsKICAgICBGbG9hdFJlY3QgZGVzdEhvbGVCb3VuZHMgPSBkZXN0SG9sZVJlY3Q7CiAg
ICAgZGVzdEhvbGVCb3VuZHMuaW5mbGF0ZVgoZWRnZVNpemUud2lkdGgoKSk7CkBAIC03MzAsMTMg
KzczMiwxMyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAotICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCByYWRpaSwgZWRnZVNpemUsIHRl
bXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOworICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0Nv
bnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxh
dGVTaXplLCBJbm5lclNoYWRvdyk7CiAKICAgICBtX2xheWVySW1hZ2UgPSAwOwogICAgIFNjcmF0
Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUs
IGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBj
b25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFt
X2xheWVySW1hZ2UpCkBAIC03NDUsNyArNzQ3LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMK
ICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgo
KSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXpl
LndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7
CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hl
ZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9
IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRp
dXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVTaGFkb3csIHJhZGlpLCBtX2xheWVy
U2l6ZSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5z
ZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2Us
IHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwogICAg
IGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byB0aGUgSW1h
Z2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5
ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtNzU0LDExICs3NTYsMTEgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnMKICAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAw
LCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CiAgICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJhZGlpLmlzWmVybygpKQorICAgICAgICBp
ZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250
ZXh0LT5maWxsUmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgUGF0aCBwYXRoOwotICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNo
YWRvdywgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0
KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSkp
OwogICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0K
IApAQCAtNzcwLDEyICs3NzIsMTIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICAgICAg
b2Zmc2V0LnNjYWxlKDEgLyB0cmFuc2Zvcm0ueFNjYWxlKCksIDEgLyB0cmFuc2Zvcm0ueVNjYWxl
KCkpOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dlZFJlY3Q7
CisgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAgICAg
c2hhZG93Qm91bmRzLm1vdmUob2Zmc2V0KTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVgoZWRn
ZVNpemUud2lkdGgoKSk7CiAgICAgc2hhZG93Qm91bmRzLmluZmxhdGVZKGVkZ2VTaXplLmhlaWdo
dCgpKTsKIAotICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5k
cywgcmFkaWksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsKKyAgICBkcmF3
TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHNoYWRvd2VkUmVjdC5y
YWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBPdXRlclNoYWRvdyk7CiAKICAgICBtX2xh
eWVySW1hZ2UgPSAwOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKaW5kZXggOTU5ZTE3ZTg5YjY4YzI4MDIwMzJlNWE5YzFmOTQ5NDkwZjBiN2M1Mi4u
ODE4MDM1NWY3NDg5YjgyZjRlYTllYmMxYTFkMWY1OTNlNWRhMWVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtNjMsOCArNjMsOCBAQCBw
dWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNoYWRvd0xh
eWVyKEdyYXBoaWNzQ29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiBob2xlUmFkaWkpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOworICAgIHZvaWQgZHJhd0luc2V0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0KTsKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciosIGNvbnN0IEludFNpemUmLCBpbnQgc3RyaWRlKTsKIApAQCAtODcsMTEgKzg3LDExIEBAIHBy
aXZhdGU6CiAgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdl
U2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNv
bnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVk
Z2VTaXplKTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXpl
LCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOwogCi0gICAgdm9pZCBkcmF3SW5zZXRT
aGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXpl
JiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7Cisg
ICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRT
aXplJiBibHVycmVkRWRnZVNpemUpOwogICAgIAogICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAxZGRmNjBmMjU3NTRkMTUyOGFiMGNkNGI5NTljZmQz
ZTUyZTRlZDYzLi43ZTQ3MjgzMWJlYzAwMTljNTcyNDA2YzdlNzhjZGZhNmU4ZmQzYTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
RHJhd0Vycm9yVW5kZXJsaW5lLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZsb2F0Um91
bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWly
by5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpA
QCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNo
YWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWko
KSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFk
b3codGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAKICAgICBmaWxsUmVjdFdpdGhDb2xv
cihwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdCwgY29sb3IpOwogfQpAQCAtMTAyOCwzMSAr
MTAyOCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3Qm
IHIpCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzU2hhZG93KCkpCi0gICAgICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFkb3codGhpcywgciwgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0
KSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFk
b3codGhpcywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7
CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBhcHBlbmRXZWJDb3JlUGF0aFRv
Q2Fpcm9Db250ZXh0KGNyLCBwYXRoKTsKICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBj
b2xvcik7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dCbHVyKCkpCi0gICAgICAgIHBs
YXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3Qs
IHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKKyAgICAg
ICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywg
cmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKIAogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLmFkZFJl
Y3QocmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMjRkMTFmOTA1MjM3NTY0ODViZWYzNzU1
Mzc3NmZkOGQxMjE5NmU5ZS4uMTJkZTU1YTY4ZmVlYTI4ZTBhZmQ3MzMyYmRlMjg5NzA3ZGJkNTFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIENHQ29udGV4
dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7
CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBj
b250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRp
aSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0
LCByZWN0KTsKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAg
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6
ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRl
KTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3Vu
ZGVkUmVjdDo6UmFkaWkoKSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3co
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC04NDYsNyArODQ2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yLCBv
bGRDb2xvclNwYWNlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBG
bG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC04NjUsMTcgKzg2NSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0bwogICAg
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6
ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRl
KTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0
KTsKICAgICB9CiAKLSAgICBib29sIGVxdWFsV2lkdGhzID0gKHRvcExlZnQud2lkdGgoKSA9PSB0
b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0LndpZHRoKCkgPT0gYm90dG9tTGVmdC53aWR0aCgp
ICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0b21SaWdodC53aWR0aCgpKTsKLSAgICBib29s
IGVxdWFsSGVpZ2h0cyA9ICh0b3BMZWZ0LmhlaWdodCgpID09IGJvdHRvbUxlZnQuaGVpZ2h0KCkg
JiYgYm90dG9tTGVmdC5oZWlnaHQoKSA9PSB0b3BSaWdodC5oZWlnaHQoKSAmJiB0b3BSaWdodC5o
ZWlnaHQoKSA9PSBib3R0b21SaWdodC5oZWlnaHQoKSk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBy
ID0gcmVjdC5yZWN0KCk7CisgICAgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
ID0gcmVjdC5yYWRpaSgpOworICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAocmFkaWkudG9wTGVmdCgp
LndpZHRoKCkgPT0gcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpICYmIHJhZGlpLnRvcFJpZ2h0KCku
d2lkdGgoKSA9PSByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSAmJiByYWRpaS5ib3R0b21MZWZ0
KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOworICAgIGJvb2wgZXF1
YWxIZWlnaHRzID0gKHJhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLnRvcFJp
Z2h0KCkuaGVpZ2h0KCkgJiYgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0
b21SaWdodCgpLmhlaWdodCgpKTsKICAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBtX3N0YXRlLmZp
bGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuOwotICAgIGlmICghaGFzQ3VzdG9tRmls
bCAmJiBlcXVhbFdpZHRocyAmJiBlcXVhbEhlaWdodHMgJiYgdG9wTGVmdC53aWR0aCgpICogMiA9
PSByZWN0LndpZHRoKCkgJiYgdG9wTGVmdC5oZWlnaHQoKSAqIDIgPT0gcmVjdC5oZWlnaHQoKSkK
LSAgICAgICAgQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3QoY29udGV4dCwgcmVjdCk7CisgICAg
aWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiByYWRp
aS50b3BMZWZ0KCkud2lkdGgoKSAqIDIgPT0gci53aWR0aCgpICYmIHJhZGlpLnRvcExlZnQoKS5o
ZWlnaHQoKSAqIDIgPT0gci5oZWlnaHQoKSkKKyAgICAgICAgQ0dDb250ZXh0RmlsbEVsbGlwc2VJ
blJlY3QoY29udGV4dCwgcik7CiAgICAgZWxzZSB7CiAgICAgICAgIFBhdGggcGF0aDsKLSAgICAg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpOworICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAg
ICAgICBmaWxsUGF0aChwYXRoKTsKICAgICB9CiAKQEAgLTg4Niw3ICs4ODgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRTaXplJiB0bwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxs
Q29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTE2LDcgKzkxOCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVjdCgpLCByb3VuZGVk
SG9sZVJlY3QucmFkaWkoKSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93
KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9H
cmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5kZXggODI5OWQ2MzRhZWIyZGRkY2Fh
ZTkzMWU2MTFjM2QwNjg2NjlhNjg2Ni4uZTBkMzI5MTY0MDIzMTY5OWRhNTA3ZjA2NThhNjc5MzM1
ZDI2ZDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJHRElFeHRyYXMuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgpAQCAtMTE1
MCw3ICsxMTUxLDggQEAgc3RhdGljIGlubGluZSBJbnRQb2ludCByZWN0Q2VudGVyUG9pbnQoY29u
c3QgUkVDVCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UG9pbnQocmVjdC5sZWZ0ICsgKHJlY3Qu
cmlnaHQgLSByZWN0LmxlZnQpIC8gMiwgcmVjdC50b3AgKyAocmVjdC5ib3R0b20gLSByZWN0LnRv
cCkgLyAyKTsKIH0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9h
dFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsK
ICAgICBTY29wZURDUHJvdmlkZXIgZGNQcm92aWRlcihtX2RhdGEpOwogICAgIGlmICghbV9kYXRh
LT5tX2RjKQpAQCAtMTE2MywxNiArMTE2NSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJlY3QsIGNvbnN0IEZsb2F0U2l6ZQog
ICAgICAgICAKICAgICBnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgCisgICAgY29uc3QgRmxvYXRSZWN0JiBmaWxs
UmVjdCA9IHJlY3QucmVjdCgpOwogICAgIEludFJlY3QgZHN0UmVjdCA9IGZpbGxSZWN0OwogICAg
IAogICAgIGRzdFJlY3QubW92ZShzdGFibGVSb3VuZChzaGFkb3dPZmZzZXQud2lkdGgoKSksIHN0
YWJsZVJvdW5kKHNoYWRvd09mZnNldC5oZWlnaHQoKSkpOwogICAgIGRzdFJlY3QuaW5mbGF0ZShz
dGFibGVSb3VuZChzaGFkb3dCbHVyKSk7CiAgICAgZHN0UmVjdCA9IG1fZGF0YS0+bWFwUmVjdChk
c3RSZWN0KTsKICAgCi0gICAgRmxvYXRTaXplIG5ld1RvcExlZnQobV9kYXRhLT5tYXBTaXplKHRv
cExlZnQpKTsKLSAgICBGbG9hdFNpemUgbmV3VG9wUmlnaHQobV9kYXRhLT5tYXBTaXplKHRvcFJp
Z2h0KSk7Ci0gICAgRmxvYXRTaXplIG5ld0JvdHRvbUxlZnQobV9kYXRhLT5tYXBTaXplKGJvdHRv
bUxlZnQpKTsKLSAgICBGbG9hdFNpemUgbmV3Qm90dG9tUmlnaHQobV9kYXRhLT5tYXBTaXplKGJv
dHRvbVJpZ2h0KSk7CisgICAgRmxvYXRTaXplIG5ld1RvcExlZnQobV9kYXRhLT5tYXBTaXplKHJl
Y3QucmFkaWkoKS50b3BMZWZ0KCkpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wUmlnaHQobV9kYXRh
LT5tYXBTaXplKHJlY3QucmFkaWkoKS50b3BSaWdodCgpKSk7CisgICAgRmxvYXRTaXplIG5ld0Jv
dHRvbUxlZnQobV9kYXRhLT5tYXBTaXplKHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpKTsKKyAg
ICBGbG9hdFNpemUgbmV3Qm90dG9tUmlnaHQobV9kYXRhLT5tYXBTaXplKHJlY3QucmFkaWkoKS5i
b3R0b21SaWdodCgpKSk7CiAKICAgICBUcmFuc3BhcmVudExheWVyREMgdHJhbnNwYXJlbnREYyht
X2RhdGEsIGRzdFJlY3QsICZmaWxsUmVjdCk7CiAgICAgSERDIGRjID0gdHJhbnNwYXJlbnREYy5o
ZGMoKTsKQEAgLTEyMjMsNyArMTIyNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAg
U2VsZWN0T2JqZWN0KGRjLCBvbGRCcnVzaCk7CiB9CiAKLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdSb3VuZENvcm5lcihib29sIG5lZWRzTmV3Q2xpcCwgUkVDVCBjbGlwUmVjdCwgUkVDVCBy
ZWN0V2luLCBIREMgZGMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoIWRjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXgg
YzQ2OWU0MjA2ZDY4ZmIxZTc3M2ViNDk2YmU5OWExYWM0MTlmYmI2ZS4uMTg5YTdlNWM1NWE1NWVm
NWUxZDI1ZGNiNjE3ZGVkMWUyOTA4OWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01NzAsOSArNTcwLDkgQEAgYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKFJlbmRlck9iamVj
dCogcmVuZGVyT2IKIH0KICNlbmRpZgogCi1zdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGJvcmRl
clJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSBib3JkZXJSYWRpaUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0g
ICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRpaSgKKyAgICByZXR1cm4gRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkoCiAgICAgICAgIEludFNpemUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS53
aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCku
aW50VmFsdWUoKSksCiAgICAgICAgIEludFNpemUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWln
aHQoKS5pbnRWYWx1ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQoKS5pbnRWYWx1ZSgpKSwKQEAgLTYwNSw3ICs2MDUsNyBAQCBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaQogICAgICAgICByYW5nZVJlY3Quc2V0V2lkdGgobGVuZ3RoUmF0aW8gKiB0
b3RhbFRyYWNrV2lkdGgpOwogICAgICAgICBpZiAoaW5kZXgpCiAgICAgICAgICAgICByYW5nZVJl
Y3QubW92ZShzdGFydFJhdGlvICogdG90YWxUcmFja1dpZHRoLCAwKTsKLSAgICAgICAgY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9t
U3R5bGUoc3R5bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5
bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAt
NjE1LDcgKzYxNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpCiBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5
bGUgPSAmby0+c3R5bGUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0
KFJvdW5kZWRSZWN0KHIsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChyLCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNv
bgogICAgIHZvbHVtZVJlY3QubW92ZSgwLCByZWN0SGVpZ2h0IC0gdHJhY2tIZWlnaHQpOwogICAg
IHZvbHVtZVJlY3Quc2V0SGVpZ2h0KGNlaWwodHJhY2tIZWlnaHQpKTsKIAotICAgIGNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21T
dHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksCiAgICAgICAgIHN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xv
clNwYWNlKCkpOwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAzMWEzMmU0YzNjMDI1M2U4MTU3ZTg0
ODViZDEzYjVhMTFjZWVhNDdlLi5kMGQwMjBlMjE3MGJhYmU1Nzc0Y2U2YjE2OGY1OWYxNTNlM2Fk
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdJbWFn
ZS5oIgogCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKQEAg
LTE5NSw3ICsxOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAgIHN0YXRpYyBjb25z
dCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoMTQwLCAxNDAsIDE0MCk7CiAgICAgc3RhdGljIGNvbnN0
IEludFNpemUgcmFkaWkoRHJhZ0xhYmVsUmFkaXVzLCBEcmFnTGFiZWxSYWRpdXMpOwogICAgIElu
dFJlY3QgcmVjdCgwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsK
LSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCBy
YWRpaSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFk
aWksIHJhZGlpKSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAKICAg
ICAvLyBEcmF3IHRoZSB0ZXh0CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIHRvcENvbG9yKDAsIDAs
IDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWEwYzJkYzkxZWFkZGI2
OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMTk3ZDY4NTE4NzhhMTc2OTQyZTQ1MDg1MTdiZWFj
MTFjM2QwYTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0Um91bmRl
ZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNjUzLDcgKzY1NCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgIGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRh
bmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgICAg
ICBSb3VuZGVkUmVjdCBib3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJs
ZWVkQXZvaWRhbmNlKCpjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAgICAgICAgaWYgKGJv
cmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QoYm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyKSwg
YmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgIGNsaXBSb3VuZGVk
SW5uZXJSZWN0KGNvbnRleHQsIHJlY3QsIGJvcmRlcik7CkBAIC0yNTYyLDcgKzI1NjMsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICBmaWxsUmVjdC5leHBh
bmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGxSZWN0
LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFJlY3QuYWRqdXN0
UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGZp
bGxSZWN0LCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGZpbGxSZWN0KSwg
Q29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCByZWN0VG9DbGlwT3V0
ID0gYm9yZGVyLnJlY3QoKTsKQEAgLTI1OTAsNyArMjU5MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoYm9yZGVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoYm9yZGVyKSwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXIu
cmVjdCgpLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTI2MzUsNyArMjYzNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKIAot
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUob3V0ZXJSZWN0LCBy
b3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUob3V0ZXJSZWN0LCBGbG9hdFJvdW5kZWRSZWN0
KHJvdW5kZWRIb2xlKSwgZmlsbENvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IGZhOTRiOGI3YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLjU3YzJiZDdlNzQ2MjAz
NzgxOGEyN2UzMzhjZmZkY2E3MzMzNjY5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KQEAgLTk4Niw3ICs5ODYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2Jq
ZWN0KgogCiAgICAgICAgIC8vIEJhY2tncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJh
Y2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQgbWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAg
ICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3IgPSBidXR0b25SZW5kZXJlciA/IENvbG9yKGJ1
dHRvblJlbmRlcmVyLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikucmdiKCkpIDogQ29sb3IoMjA2LjBmLCAyMDYuMGYsIDIwNi4wZik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVy
ZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6
ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWls
UGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJ
bWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgewogICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRleHQp
OwpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBs
b2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKICAgICB9CiAK
ICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBwaWN0dXJlRnJhbWVD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNv
cm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBjb3JuZXJTaXplLCBwaWN0dXJlRnJh
bWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWNvbi0+cGFpbnQocGFpbnRJbmZv
LmNvbnRleHQsIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAppbmRleCAyNWM5NjY4NzVjZTYy
ODFlN2NkY2IzNTNlMTI2NjliYjhkMDQyNzFhLi41Njg3ZWM4MDFmZDQ3NmJmYTg4NWQyNTkxNWI2
MGY4MzUwYjViYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L0JveFNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNo
YXBlLmNwcApAQCAtMTU2LDE4ICsxNTYsMTEgQEAgYm9vbCBCb3hTaGFwZTo6Zmlyc3RJbmNsdWRl
ZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgYWRkUm91bmRlZFJlY3QoUGF0aCYgcGF0
aCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWkpCi17Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCks
IHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQo
KSwgUGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOwotfQotCiB2b2lkIEJveFNoYXBlOjpi
dWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdAogewotICAgIGFkZFJv
dW5kZWRSZWN0KHBhdGhzLnNoYXBlLCBtX2JvdW5kcy5yZWN0KCksIG1fYm91bmRzLnJhZGlpKCkp
OwotICAgIGlmIChzaGFwZU1hcmdpbigpKSB7Ci0gICAgICAgIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIG1hcmdpbkJvdW5kcyA9IHNoYXBlTWFyZ2luQm91bmRzKCk7Ci0gICAgICAgIGFkZFJvdW5k
ZWRSZWN0KHBhdGhzLm1hcmdpblNoYXBlLCBtYXJnaW5Cb3VuZHMucmVjdCgpLCBtYXJnaW5Cb3Vu
ZHMucmFkaWkoKSk7Ci0gICAgfQorICAgIHBhdGhzLnNoYXBlLmFkZFJvdW5kZWRSZWN0KG1fYm91
bmRzLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CisgICAgaWYgKHNoYXBlTWFyZ2lu
KCkpCisgICAgICAgIHBhdGhzLm1hcmdpblNoYXBlLmFkZFJvdW5kZWRSZWN0KHNoYXBlTWFyZ2lu
Qm91bmRzKCksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5jcHAKaW5kZXggZGE4ODdlNDcyYzUxZmRjZDg0MDMyNGNiZjk2YTM0OTFiMzQ1YjYzYy4u
ZDUyZGNiYThkNjE1NTBlMjRjOGEzMDM5NmM5MDdhNDQ2NDI0OTBiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9u
VmFsdWUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgog
I2luY2x1ZGUgIlJlbmRlckJveC5oIgpAQCAtMzU1LDcgKzM1Niw3IEBAIHZvaWQgQmFzaWNTaGFw
ZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAg
ICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKICAgICBmbG9hdCBsZWZ0ID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChtX2xlZnQsIGJvdW5kaW5nQm94LndpZHRoKCkpOwogICAgIGZsb2F0IHRvcCA9IGZs
b2F0VmFsdWVGb3JMZW5ndGgobV90b3AsIGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KAorICAgIEZsb2F0Um91bmRlZFJlY3QgciA9IEZsb2F0Um91bmRlZFJl
Y3QoCiAgICAgICAgIEZsb2F0UmVjdCgKICAgICAgICAgICAgIGxlZnQgKyBib3VuZGluZ0JveC54
KCksCiAgICAgICAgICAgICB0b3AgKyBib3VuZGluZ0JveC55KCksCkBAIC0zNjcsNiArMzY4LDcg
QEAgdm9pZCBCYXNpY1NoYXBlSW5zZXQ6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCkKICAgICAgICAgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShtX2JvdHRvbUxl
ZnRSYWRpdXMsIGJvdW5kaW5nQm94KSwKICAgICAgICAgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSht
X2JvdHRvbVJpZ2h0UmFkaXVzLCBib3VuZGluZ0JveCkKICAgICApOworICAgIHBhdGguYWRkUm91
bmRlZFJlY3Qocik7CiB9CiAKIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUluc2V0
OjpibGVuZChjb25zdCBCYXNpY1NoYXBlKiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRl
eCA1NjYyNjRlODFmYzg0NTUwMjgxMDNmNjhiMDFlZjMzM2U2MTI1NmVhLi40NzlkOGQxYTc1YTky
MzdhNmNiNTk2MmY5ODRlZDA5OTFkNmU1OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSFVE
U2xpZGVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IGd1
dHRlcgogICAgIEludFNpemUgcmFkaXVzKG1fcmVjdC5oZWlnaHQoKSAvIDIsIG1fcmVjdC5oZWln
aHQoKSAvIDIpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzLCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QobV9yZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpLCBDb2xvcihzbGlkZXJH
dXR0ZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyBidXR0b24K
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKHNsaWRlckJ1dHRvbkNvbG9yKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CkBAIC00OTEsOSArNDkxLDkgQEAgdm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICBJbnRTaXplIGlubmVyUmFkaXVzKGJvcmRlclJhZGl1
cyAtIGJvcmRlclRoaWNrbmVzcywgYm9yZGVyUmFkaXVzIC0gYm9yZGVyVGhpY2tuZXNzKTsKICAg
ICBJbnRSZWN0IGlubmVyUmVjdChib3JkZXJUaGlja25lc3MsIGJvcmRlclRoaWNrbmVzcywgd2lu
ZG93V2lkdGggLSBib3JkZXJUaGlja25lc3MgKiAyLCB3aW5kb3dIZWlnaHQgLSBib3JkZXJUaGlj
a25lc3MgKiAyKTsKIAotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KG91dGVyUmVjdCwgb3V0
ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIENvbG9yKGJv
cmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlclJlY3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1
cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzKSwgQ29sb3IoYm9yZGVyQ29sb3IpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVyUmFk
aXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGlubmVyUmVjdCwgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVz
LCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMpLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgdGhlIHdpZGdldHMKICAgICBtX3BsYXlQ
YXVzZUJ1dHRvbi5kcmF3KGNvbnRleHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225589</attachid>
            <date>2014-03-01 21:32:08 -0800</date>
            <delta_ts>2014-03-02 19:41:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140301213207.patch</filename>
            <type>text/plain</type>
            <size>57107</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMGI4YmQ2MGZiNWZjZTEwZDBiOTA3NDkyMjRlMWUy
YzEzYTMzZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVk
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmFkaWlGcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzMzRlODIxNThjNjhjNmM2YzBmMTUx
YTEzOWRjYjBkMjY5NzAwYWMuLjI5YzdjMDVhMmI4NTFmMGI5MjE0ZmY2MDIyZGEyOTFhMDZlNDI5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0wMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzog
TWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9hdFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBj
bGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3KToKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorCiAyMDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0
ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApp
bmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4MmM5NDM0N2QzLi5jZGZjZTA3OGYy
ZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTI0Miw3ICsx
MjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSB0aHVtYlJlY3QoMywgMyk7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRodW1iQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0KSwg
bV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNmNTAyYjRlNGM0OTk5MjQ2MjhiNGI0
MThiZmY2Li43YjE5MGE4ZTUwZGM5ZmQ0NTI5NmE0YjYwNjFjNTQ2OTkxNTgyNTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGbG9hdFJv
dW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQorICAg
IDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRpaShyZWN0LnJhZGlpKCkpCit7Cit9
CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRS
b3VuZGVkUmVjdC5oCmluZGV4IGZiZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRlM2Y5YzIyMTNiOTJk
Y2QuLmZmNWVjNzE2NWMxM2JmZDUxOGExNjQ1NjhiNmQwZmU2MjNjOWU0ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAg
LTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBleHBsaWNpdCBGbG9hdFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4
cGxpY2l0IEZsb2F0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICBGbG9hdFJv
dW5kZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwog
ICAgIEZsb2F0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2YjRk
N2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzLi5mOWNhMjVhMjhiNWMzZjVmOTdm
Yjc0YmUwMWE0ZGJlZmNkNTQ5YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVk
ZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC02OTYsMTUgKzY5NywxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0
JiByZWN0KQogICAgIGNsaXAocGF0aCk7CiB9CiAKLS8vIEZJWE1FOiBDb25zaWRlciB3cml0aW5n
IHRoaXMgaW4gdGVybXMgb2YgYSBzcGVjaWFsaXplZCBSb3VuZGVkUmVjdCB0aGF0IHVzZXMgRmxv
YXRSZWN0IGFuZCBGbG9hdFNpemUgcmFkaWkuCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0
LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LAotICAgIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYXRoIHBhdGg7
Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7CiAgICAg
Y2xpcChwYXRoKTsKIH0KIApAQCAtNzY5LDE4ICs3NjgsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclMKICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAocmVjdC5pc1JvdW5k
ZWQoKSkgewogICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9u
KCksIGJsZW5kTW9kZSk7Ci0gICAgICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVj
dC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWko
KS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBjb2xvciwgY29sb3JT
cGFjZSk7CisgICAgICAgIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9yLCBjb2xv
clNwYWNlKTsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlv
bigpKTsKICAgICB9IGVsc2UKICAgICAgICAgZmlsbFJlY3QocmVjdC5yZWN0KCksIGNvbG9yLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKIH0KIAogI2lmICFV
U0UoQ0cpICYmICFVU0UoQ0FJUk8pCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5k
ZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGE5YmY1ZDAwNGNlMTFiYWNhNzA3
MTk2MjA0NmQ5ODM0Y2UyZTBmZTUuLmE1NDNlY2MwMmU3ZTE3YThmNzdiZTliODRkZDk4OTc5ZGQy
Mzg0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC03NSw2ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBEcmF3aW5nQnVmZmVyOworICAgIGNs
YXNzIEZsb2F0Um91bmRlZFJlY3Q7CiAgICAgY2xhc3MgR3JhZGllbnQ7CiAgICAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAt
Mjk0LDkgKzI5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2
b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7CiAgICAgICAgIHZvaWQg
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9p
ZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAg
ICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7
CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Cisg
ICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9y
U3BhY2UpOwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBA
IC0zMjgsOSArMzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsaXAo
Y29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7CiAg
ICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIHdyaXRpbmcgdGhpcyBpbiB0ZXJtcyBvZiBhIHNwZWNpYWxp
emVkIFJvdW5kZWRSZWN0IHRoYXQgdXNlcyBGbG9hdFJlY3QgYW5kIEZsb2F0U2l6ZSByYWRpaS4K
LSAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNp
emUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOworICAgICAgICB2
b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAKICAgICAgICAg
dm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBPdXRSb3Vu
ZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwpAQCAtNTcwLDYgKzU2OCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwbGF0Zm9ybUZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpOwogICAgICAgICB2b2lkIHBsYXRmb3JtU3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmKTsKIAorICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhOwogCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCmluZGV4IDg4ZDQ1M2MzYTQzNjhmNDM5M2Q5MjQ5MjdmNjI0MDI1NTc3NTIxM2YuLjA5MTY4
ZTU4NmZhNjVmOWYzZDUwZGViMzJmNWY2N2VkYWE4MDZmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgogI2luY2x1ZGUgIlJv
dW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtOTEsMTEgKzkyLDYgQEAgZmxvYXQg
UGF0aDo6bm9ybWFsQW5nbGVBdExlbmd0aChmbG9hdCBsZW5ndGgsIGJvb2wmIG9rKSBjb25zdAog
ICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX25vcm1hbEFuZ2xlOwogfQogCi12b2lkIFBhdGg6
OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQotewotICAgIGFkZFJvdW5kZWRS
ZWN0KHIucmVjdCgpLCByLnJhZGlpKCkudG9wTGVmdCgpLCByLnJhZGlpKCkudG9wUmlnaHQoKSwg
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwotfQotCiB2
b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRTaXplJiByb3VuZGluZ1JhZGlpLCBSb3VuZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQogewog
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTEwNSw3ICsxMDEsNyBAQCB2b2lkIFBhdGg6OmFk
ZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiByb3Vu
ZGluZ1JhZGlpLAogICAgIEZsb2F0U2l6ZSBoYWxmU2l6ZShyZWN0LndpZHRoKCkgLyAyLCByZWN0
LmhlaWdodCgpIC8gMik7CiAKICAgICAvLyBBcHBseSB0aGUgU1ZHIGNvcm5lciByYWRpdXMgY29u
c3RyYWludHMsIHBlciB0aGUgcmVjdCBzZWN0aW9uIG9mIHRoZSBTVkcgc2hhcGVzIHNwZWM6IGlm
Ci0gICAgLy8gb25lIG9mIHJ4LHJ5IGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBvdGhlciBjb3JuZXIg
cmFkaXVzIHZhbHVlIGlzIHVzZWQuIElmIGJvdGggdmFsdWVzIGFyZSAKKyAgICAvLyBvbmUgb2Yg
cngscnkgaXMgbmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMgdmFsdWUgaXMg
dXNlZC4gSWYgYm90aCB2YWx1ZXMgYXJlCiAgICAgLy8gbmVnYXRpdmUgdGhlbiByeCA9IHJ5ID0g
MC4gSWYgcnggaXMgZ3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIHdpZHRoIG9mIHRoZSByZWN0YW5n
bGUKICAgICAvLyB0aGVuIHNldCByeCB0byBoYWxmIG9mIHRoZSB3aWR0aDsgcnkgaXMgaGFuZGxl
ZCBzaW1pbGFybHkuCiAKQEAgLTEyMSwzNiArMTE3LDM5IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgaWYgKHJhZGl1cy5oZWlnaHQoKSA+IGhhbGZTaXplLmhlaWdodCgpKQogICAgICAg
ICByYWRpdXMuc2V0SGVpZ2h0KGhhbGZTaXplLmhlaWdodCgpKTsKIAotICAgIGFkZFBhdGhGb3JS
b3VuZGVkUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHN0cmF0ZWd5
KTsKKyAgICBhZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGl1cywgcmFk
aXVzLCByYWRpdXMsIHJhZGl1cyksIHN0cmF0ZWd5KTsKIH0KIAotdm9pZCBQYXRoOjphZGRSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJh
ZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3Vu
ZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQordm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByLCBSb3VuZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQogewot
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoci5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChyZWN0LndpZHRoKCkgPCB0b3BMZWZ0UmFkaXVzLndpZHRoKCkgKyB0
b3BSaWdodFJhZGl1cy53aWR0aCgpCi0gICAgICAgICAgICB8fCByZWN0LndpZHRoKCkgPCBib3R0
b21MZWZ0UmFkaXVzLndpZHRoKCkgKyBib3R0b21SaWdodFJhZGl1cy53aWR0aCgpCi0gICAgICAg
ICAgICB8fCByZWN0LmhlaWdodCgpIDwgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbUxl
ZnRSYWRpdXMuaGVpZ2h0KCkKLSAgICAgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCB0b3BSaWdo
dFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKSB7CisgICAgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpID0gci5yYWRpaSgpOworICAgIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCA9IHIucmVjdCgpOworCisgICAgaWYgKHJlY3Qud2lkdGgoKSA8IHJh
ZGlpLnRvcExlZnQoKS53aWR0aCgpICsgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpCisgICAgICAg
IHx8IHJlY3Qud2lkdGgoKSA8IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICsgcmFkaWkuYm90
dG9tUmlnaHQoKS53aWR0aCgpCisgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCByYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKyByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkKKyAgICAgICAgfHwg
cmVjdC5oZWlnaHQoKSA8IHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgKyByYWRpaS5ib3R0b21S
aWdodCgpLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJl
IGFjY29tbW9kYXRlZCwgcmV0dXJuIGEgcmVjdC4KICAgICAgICAgYWRkUmVjdChyZWN0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFBhdGhGb3JSb3VuZGVkUmVjdChyZWN0LCB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXMsIHN0cmF0ZWd5KTsKLX0KLQotdm9pZCBQYXRoOjphZGRQYXRoRm9yUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJl
Y3RTdHJhdGVneSBzdHJhdGVneSkKLXsKICAgICBpZiAoc3RyYXRlZ3kgPT0gUHJlZmVyTmF0aXZl
Um91bmRlZFJlY3QpIHsKICNpZiBVU0UoQ0cpCi0gICAgICAgIHBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0KHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWku
Ym90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAgICAgfQogCi0gICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cyk7CisgICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwg
cmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgp
KTsKK30KKwordm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcikK
K3sKKyAgICBhZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHIpKTsKIH0KIAogLy8gQXBw
cm94aW1hdGlvbiBvZiBjb250cm9sIHBvaW50IHBvc2l0aW9ucyBvbiBhIGJlemllciB0byBzaW11
bGF0ZSBhIHF1YXJ0ZXIgb2YgYSBjaXJjbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKaW5kZXggNTVmMGY2ZTJlYWI3NTQ4MDYyYzJlM2UxYmNiYTE0N2U0NmVjNzlhNi4u
M2QzZmExN2FjZTA0NTNmODM5YjQzNjAwYzU0MDQ2YmY5MmVlMjdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIEZsb2F0UG9pbnQ7
CiAgICAgY2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiAgICAg
Y2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKICAgICBjbGFzcyBS
b3VuZGVkUmVjdDsKQEAgLTEyOSw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIH07CiAKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVm
ZXJOYXRpdmVSb3VuZGVkUmVjdCk7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQ
cmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CisgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJOYXRpdmVS
b3VuZGVkUmVjdCk7CiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmKTsKIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmKTsKQEAgLTE0
Myw3ICsxNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHkodm9p
ZCogaW5mbywgUGF0aEFwcGxpZXJGdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIHZvaWQgdHJhbnNm
b3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCi0gICAgICAgIHZvaWQgYWRkUGF0aEZvclJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0
b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3VuZGVk
UmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwogICAgICAgICB2b2lkIGFk
ZEJlemllcnNGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUm
IHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJh
ZGl1cyk7CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGQ2NzUyMjhiYmJlYmQ5YWFkMmZjNzYyZGQ0ZjIzMjNj
ZTgyYWUwODEuLjExYTVmOWYwMmQ2NGQ1MzUyZmY5YjBmYWU4NjIzOTMyMmMwYjlkMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC01
MDksOSArNTA5LDkgQEAgSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50
U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgRmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAg
ICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BTbGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiByYWRpaSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRv
d2VkUmVjdCkKIHsKLSAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBncmFwaGljc0NvbnRleHQtPmNs
aXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcEJvdW5kcygpKTsKICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC01MjAsMjMgKzUyMCwyNCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
YwogICAgIC8vIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90
YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTA0MgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxp
Z25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5
ZXJSZWN0KTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29u
dGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgSW50U2l6ZSBlZGdlU2l6ZSA9IGJsdXJyZWRFZGdlU2l6ZSgpOwotICAgIEludFNpemUg
dGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVTaXplKGVkZ2VTaXplLCByYWRpaSk7CisgICAg
SW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QgPSBzaGFkb3dlZFJl
Y3QucmVjdCgpOwogCi0gICAgaWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gc2hhZG93ZWRSZWN0
LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4gc2hhZG93ZWRSZWN0LmhlaWdodCgp
CisgICAgaWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gcmVjdC53aWR0aCgpIHx8IHRlbXBsYXRl
U2l6ZS5oZWlnaHQoKSA+IHJlY3QuaGVpZ2h0KCkKICAgICAgICAgfHwgKHRlbXBsYXRlU2l6ZS53
aWR0aCgpICogdGVtcGxhdGVTaXplLmhlaWdodCgpID4gbV9zb3VyY2VSZWN0LndpZHRoKCkgKiBt
X3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7Ci0gICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgcmFkaWksIGxheWVyUmVjdCk7Cisg
ICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRv
d2VkUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgcmFkaWks
IHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUpOworICAgIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhn
cmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9
CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpCit2b2lkIFNo
YWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVj
dCkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwog
ICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTQ3LDMzICs1NDgsMzQgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmUKICAgICAvLyBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nIGRvZXMg
bm90IHdvcmsgd2l0aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MDQyCiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgp
LnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAg
ICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwg
aG9sZVJlY3QsIGhvbGVSYWRpaSwgbGF5ZXJSZWN0KTsKKyAgICAgICAgZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50U2l6ZSBlZGdlU2l6ZSA9IGJsdXJy
ZWRFZGdlU2l6ZSgpOwotICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVT
aXplKGVkZ2VTaXplLCBob2xlUmFkaWkpOworICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhp
cy0+dGVtcGxhdGVTaXplKGVkZ2VTaXplLCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBjb25zdCBG
bG9hdFJlY3QmIGhSZWN0ID0gaG9sZVJlY3QucmVjdCgpOwogCi0gICAgaWYgKHRlbXBsYXRlU2l6
ZS53aWR0aCgpID4gaG9sZVJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBo
b2xlUmVjdC5oZWlnaHQoKQotICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgPiBob2xlUmVjdC53aWR0aCgpICogaG9sZVJlY3QuaGVpZ2h0KCkp
KSB7Ci0gICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0
LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgIGlmICh0ZW1wbGF0
ZVNpemUud2lkdGgoKSA+IGhSZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4g
aFJlY3QuaGVpZ2h0KCkKKyAgICAgICAgfHwgKHRlbXBsYXRlU2l6ZS53aWR0aCgpICogdGVtcGxh
dGVTaXplLmhlaWdodCgpID4gaFJlY3Qud2lkdGgoKSAqIGhSZWN0LmhlaWdodCgpKSkgeworICAg
ICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwg
aG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkcmF3
SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhv
bGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVk
Z2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBt
X2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxh
eWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QgPSBzaGFkb3dlZFJl
Y3Q7CisgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0ID0gc2hhZG93ZWRS
ZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJD
b250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2gg
YnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAg
Ym9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFk
b3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCByYWRpaSwgbV9sYXllclNpemUpOworICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBi
dWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJT
aXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
c2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOwpAQCAtNTgyLDEx
ICs1ODQsMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgc2hhZG93Q29udGV4
dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGlm
IChyYWRpaS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNo
YWRvd2VkUmVjdCk7CisgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgICAgIHBh
dGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRv
cFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCk7CiAgICAgICAgICAgICBz
aGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCkBAIC01OTgsNyArNjAw
LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGMKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
CiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRj
aEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTYw
NywxMSArNjA5LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICBGbG9hdFJlY3QgYnVm
ZmVyUmVsYXRpdmVSZWN0ID0gcmVjdDsKICAgICBidWZmZXJSZWxhdGl2ZVJlY3QubW92ZShtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAotICAgIEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0ID0gaG9sZVJlY3Q7CisgICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3Qg
PSBob2xlUmVjdC5yZWN0KCk7CiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5tb3ZlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0
Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0g
ICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRJ
bnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBob2xl
UmFkaWkpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCku
c2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xl
UmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQo
KTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dD
b250ZXh0KTsKQEAgLTYyMiwxMCArNjI0LDEwIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAog
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKLSAgICAgICAg
aWYgKGhvbGVSYWRpaS5pc1plcm8oKSkKLSAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVj
dCk7CisgICAgICAgIGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQorICAgICAgICAgICAg
cGF0aC5hZGRSZWN0KGhvbGVSZWN0LnJlY3QoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QsIGhvbGVSYWRpaS50b3BMZWZ0KCksIGhvbGVS
YWRpaS50b3BSaWdodCgpLCBob2xlUmFkaWkuYm90dG9tTGVmdCgpLCBob2xlUmFkaWkuYm90dG9t
UmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAog
ICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwogICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKQEAgLTY3MSw3ICs2NzMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
IHRoZSBzaGFkb3cuCiAgKi8KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAg
aWYgKCFtX2xheWVySW1hZ2UpCkBAIC02ODIsNyArNjg0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb24KICAgICBGbG9hdFJlY3QgdGVtcGxhdGVIb2xlID0gRmxvYXRSZWN0KGVkZ2VTaXplLndp
ZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdl
U2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0
KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBj
YWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVk
ZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyht
X2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBs
YXRlSG9sZSwgcmFkaWkpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6
c2hhcmVkKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9y
LCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJh
ZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byBhIG5ldyBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CkBAIC02OTMsMTAgKzY5NSwxMCBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbgogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0
aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgaWYgKHJhZGlpLmlzWmVybygpKQor
ICAgICAgICBpZiAoaG9sZVJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdCh0ZW1wbGF0ZUhvbGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KHRlbXBsYXRlSG9sZSwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdo
dCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRlbXBsYXRlSG9sZSwgaG9s
ZVJlY3QucmFkaWkoKSkpOwogCiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgp
OwogCkBAIC03MTEsNyArNzEzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcmVjdDsKICAgICBib3VuZGluZ1JlY3QubW92ZShvZmZzZXQp
OwogCi0gICAgRmxvYXRSZWN0IGRlc3RIb2xlUmVjdCA9IGhvbGVSZWN0OworICAgIEZsb2F0UmVj
dCBkZXN0SG9sZVJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAgICAgZGVzdEhvbGVSZWN0Lm1vdmUo
b2Zmc2V0KTsKICAgICBGbG9hdFJlY3QgZGVzdEhvbGVCb3VuZHMgPSBkZXN0SG9sZVJlY3Q7CiAg
ICAgZGVzdEhvbGVCb3VuZHMuaW5mbGF0ZVgoZWRnZVNpemUud2lkdGgoKSk7CkBAIC03MzAsMTMg
KzczMiwxMyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAotICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCByYWRpaSwgZWRnZVNpemUsIHRl
bXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOworICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0Nv
bnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxh
dGVTaXplLCBJbm5lclNoYWRvdyk7CiAKICAgICBtX2xheWVySW1hZ2UgPSAwOwogICAgIFNjcmF0
Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUs
IGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBj
b25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFt
X2xheWVySW1hZ2UpCkBAIC03NDUsNyArNzQ3LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMK
ICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgo
KSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXpl
LndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7
CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hl
ZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9
IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRp
dXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVTaGFkb3csIHJhZGlpLCBtX2xheWVy
U2l6ZSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5z
ZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2Us
IHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwogICAg
IGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byB0aGUgSW1h
Z2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5
ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtNzU0LDExICs3NTYsMTEgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnMKICAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAw
LCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CiAgICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJhZGlpLmlzWmVybygpKQorICAgICAgICBp
ZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250
ZXh0LT5maWxsUmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgUGF0aCBwYXRoOwotICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNo
YWRvdywgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0
KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSkp
OwogICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0K
IApAQCAtNzcwLDEyICs3NzIsMTIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICAgICAg
b2Zmc2V0LnNjYWxlKDEgLyB0cmFuc2Zvcm0ueFNjYWxlKCksIDEgLyB0cmFuc2Zvcm0ueVNjYWxl
KCkpOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dlZFJlY3Q7
CisgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAgICAg
c2hhZG93Qm91bmRzLm1vdmUob2Zmc2V0KTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVgoZWRn
ZVNpemUud2lkdGgoKSk7CiAgICAgc2hhZG93Qm91bmRzLmluZmxhdGVZKGVkZ2VTaXplLmhlaWdo
dCgpKTsKIAotICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5k
cywgcmFkaWksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsKKyAgICBkcmF3
TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHNoYWRvd2VkUmVjdC5y
YWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBPdXRlclNoYWRvdyk7CiAKICAgICBtX2xh
eWVySW1hZ2UgPSAwOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKaW5kZXggOTU5ZTE3ZTg5YjY4YzI4MDIwMzJlNWE5YzFmOTQ5NDkwZjBiN2M1Mi4u
ODE4MDM1NWY3NDg5YjgyZjRlYTllYmMxYTFkMWY1OTNlNWRhMWVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtNjMsOCArNjMsOCBAQCBw
dWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNoYWRvd0xh
eWVyKEdyYXBoaWNzQ29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiBob2xlUmFkaWkpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOworICAgIHZvaWQgZHJhd0luc2V0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0KTsKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciosIGNvbnN0IEludFNpemUmLCBpbnQgc3RyaWRlKTsKIApAQCAtODcsMTEgKzg3LDExIEBAIHBy
aXZhdGU6CiAgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdl
U2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNv
bnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVk
Z2VTaXplKTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXpl
LCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOwogCi0gICAgdm9pZCBkcmF3SW5zZXRT
aGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXpl
JiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7Cisg
ICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRT
aXplJiBibHVycmVkRWRnZVNpemUpOwogICAgIAogICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAxZGRmNjBmMjU3NTRkMTUyOGFiMGNkNGI5NTljZmQz
ZTUyZTRlZDYzLi43ZTQ3MjgzMWJlYzAwMTljNTcyNDA2YzdlNzhjZGZhNmU4ZmQzYTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
RHJhd0Vycm9yVW5kZXJsaW5lLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZsb2F0Um91
bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWly
by5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpA
QCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNo
YWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWko
KSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFk
b3codGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAKICAgICBmaWxsUmVjdFdpdGhDb2xv
cihwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdCwgY29sb3IpOwogfQpAQCAtMTAyOCwzMSAr
MTAyOCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3Qm
IHIpCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzU2hhZG93KCkpCi0gICAgICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFkb3codGhpcywgciwgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0
KSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd1JlY3RTaGFk
b3codGhpcywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7
CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBhcHBlbmRXZWJDb3JlUGF0aFRv
Q2Fpcm9Db250ZXh0KGNyLCBwYXRoKTsKICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBj
b2xvcik7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dCbHVyKCkpCi0gICAgICAgIHBs
YXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3Qs
IHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKKyAgICAg
ICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywg
cmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKIAogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLmFkZFJl
Y3QocmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMjRkMTFmOTA1MjM3NTY0ODViZWYzNzU1
Mzc3NmZkOGQxMjE5NmU5ZS4uMTJkZTU1YTY4ZmVlYTI4ZTBhZmQ3MzMyYmRlMjg5NzA3ZGJkNTFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIENHQ29udGV4
dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7
CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBj
b250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRp
aSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0
LCByZWN0KTsKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAg
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6
ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRl
KTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3Vu
ZGVkUmVjdDo6UmFkaWkoKSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3co
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC04NDYsNyArODQ2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yLCBv
bGRDb2xvclNwYWNlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBG
bG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC04NjUsMTcgKzg2NSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0bwogICAg
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6
ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRl
KTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0
KTsKICAgICB9CiAKLSAgICBib29sIGVxdWFsV2lkdGhzID0gKHRvcExlZnQud2lkdGgoKSA9PSB0
b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0LndpZHRoKCkgPT0gYm90dG9tTGVmdC53aWR0aCgp
ICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0b21SaWdodC53aWR0aCgpKTsKLSAgICBib29s
IGVxdWFsSGVpZ2h0cyA9ICh0b3BMZWZ0LmhlaWdodCgpID09IGJvdHRvbUxlZnQuaGVpZ2h0KCkg
JiYgYm90dG9tTGVmdC5oZWlnaHQoKSA9PSB0b3BSaWdodC5oZWlnaHQoKSAmJiB0b3BSaWdodC5o
ZWlnaHQoKSA9PSBib3R0b21SaWdodC5oZWlnaHQoKSk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBy
ID0gcmVjdC5yZWN0KCk7CisgICAgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
ID0gcmVjdC5yYWRpaSgpOworICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAocmFkaWkudG9wTGVmdCgp
LndpZHRoKCkgPT0gcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpICYmIHJhZGlpLnRvcFJpZ2h0KCku
d2lkdGgoKSA9PSByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSAmJiByYWRpaS5ib3R0b21MZWZ0
KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOworICAgIGJvb2wgZXF1
YWxIZWlnaHRzID0gKHJhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLnRvcFJp
Z2h0KCkuaGVpZ2h0KCkgJiYgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0
b21SaWdodCgpLmhlaWdodCgpKTsKICAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBtX3N0YXRlLmZp
bGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuOwotICAgIGlmICghaGFzQ3VzdG9tRmls
bCAmJiBlcXVhbFdpZHRocyAmJiBlcXVhbEhlaWdodHMgJiYgdG9wTGVmdC53aWR0aCgpICogMiA9
PSByZWN0LndpZHRoKCkgJiYgdG9wTGVmdC5oZWlnaHQoKSAqIDIgPT0gcmVjdC5oZWlnaHQoKSkK
LSAgICAgICAgQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3QoY29udGV4dCwgcmVjdCk7CisgICAg
aWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiByYWRp
aS50b3BMZWZ0KCkud2lkdGgoKSAqIDIgPT0gci53aWR0aCgpICYmIHJhZGlpLnRvcExlZnQoKS5o
ZWlnaHQoKSAqIDIgPT0gci5oZWlnaHQoKSkKKyAgICAgICAgQ0dDb250ZXh0RmlsbEVsbGlwc2VJ
blJlY3QoY29udGV4dCwgcik7CiAgICAgZWxzZSB7CiAgICAgICAgIFBhdGggcGF0aDsKLSAgICAg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpOworICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAg
ICAgICBmaWxsUGF0aChwYXRoKTsKICAgICB9CiAKQEAgLTg4Niw3ICs4ODgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRTaXplJiB0bwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxs
Q29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTE2LDcgKzkxOCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVjdCgpLCByb3VuZGVk
SG9sZVJlY3QucmFkaWkoKSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93
KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9H
cmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5kZXggODI5OWQ2MzRhZWIyZGRkY2Fh
ZTkzMWU2MTFjM2QwNjg2NjlhNjg2Ni4uZTBkMzI5MTY0MDIzMTY5OWRhNTA3ZjA2NThhNjc5MzM1
ZDI2ZDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJHRElFeHRyYXMuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgpAQCAtMTE1
MCw3ICsxMTUxLDggQEAgc3RhdGljIGlubGluZSBJbnRQb2ludCByZWN0Q2VudGVyUG9pbnQoY29u
c3QgUkVDVCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UG9pbnQocmVjdC5sZWZ0ICsgKHJlY3Qu
cmlnaHQgLSByZWN0LmxlZnQpIC8gMiwgcmVjdC50b3AgKyAocmVjdC5ib3R0b20gLSByZWN0LnRv
cCkgLyAyKTsKIH0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9h
dFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsK
ICAgICBTY29wZURDUHJvdmlkZXIgZGNQcm92aWRlcihtX2RhdGEpOwogICAgIGlmICghbV9kYXRh
LT5tX2RjKQpAQCAtMTE2MywxNiArMTE2NSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJlY3QsIGNvbnN0IEZsb2F0U2l6ZQog
ICAgICAgICAKICAgICBnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgCisgICAgY29uc3QgRmxvYXRSZWN0JiBmaWxs
UmVjdCA9IHJlY3QucmVjdCgpOwogICAgIEludFJlY3QgZHN0UmVjdCA9IGZpbGxSZWN0OwogICAg
IAogICAgIGRzdFJlY3QubW92ZShzdGFibGVSb3VuZChzaGFkb3dPZmZzZXQud2lkdGgoKSksIHN0
YWJsZVJvdW5kKHNoYWRvd09mZnNldC5oZWlnaHQoKSkpOwogICAgIGRzdFJlY3QuaW5mbGF0ZShz
dGFibGVSb3VuZChzaGFkb3dCbHVyKSk7CiAgICAgZHN0UmVjdCA9IG1fZGF0YS0+bWFwUmVjdChk
c3RSZWN0KTsKICAgCi0gICAgRmxvYXRTaXplIG5ld1RvcExlZnQobV9kYXRhLT5tYXBTaXplKHRv
cExlZnQpKTsKLSAgICBGbG9hdFNpemUgbmV3VG9wUmlnaHQobV9kYXRhLT5tYXBTaXplKHRvcFJp
Z2h0KSk7Ci0gICAgRmxvYXRTaXplIG5ld0JvdHRvbUxlZnQobV9kYXRhLT5tYXBTaXplKGJvdHRv
bUxlZnQpKTsKLSAgICBGbG9hdFNpemUgbmV3Qm90dG9tUmlnaHQobV9kYXRhLT5tYXBTaXplKGJv
dHRvbVJpZ2h0KSk7CisgICAgRmxvYXRTaXplIG5ld1RvcExlZnQobV9kYXRhLT5tYXBTaXplKHJl
Y3QucmFkaWkoKS50b3BMZWZ0KCkpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wUmlnaHQobV9kYXRh
LT5tYXBTaXplKHJlY3QucmFkaWkoKS50b3BSaWdodCgpKSk7CisgICAgRmxvYXRTaXplIG5ld0Jv
dHRvbUxlZnQobV9kYXRhLT5tYXBTaXplKHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpKTsKKyAg
ICBGbG9hdFNpemUgbmV3Qm90dG9tUmlnaHQobV9kYXRhLT5tYXBTaXplKHJlY3QucmFkaWkoKS5i
b3R0b21SaWdodCgpKSk7CiAKICAgICBUcmFuc3BhcmVudExheWVyREMgdHJhbnNwYXJlbnREYyht
X2RhdGEsIGRzdFJlY3QsICZmaWxsUmVjdCk7CiAgICAgSERDIGRjID0gdHJhbnNwYXJlbnREYy5o
ZGMoKTsKQEAgLTEyMjMsNyArMTIyNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAg
U2VsZWN0T2JqZWN0KGRjLCBvbGRCcnVzaCk7CiB9CiAKLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdSb3VuZENvcm5lcihib29sIG5lZWRzTmV3Q2xpcCwgUkVDVCBjbGlwUmVjdCwgUkVDVCBy
ZWN0V2luLCBIREMgZGMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoIWRjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXgg
YzQ2OWU0MjA2ZDY4ZmIxZTc3M2ViNDk2YmU5OWExYWM0MTlmYmI2ZS4uMTg5YTdlNWM1NWE1NWVm
NWUxZDI1ZGNiNjE3ZGVkMWUyOTA4OWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01NzAsOSArNTcwLDkgQEAgYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKFJlbmRlck9iamVj
dCogcmVuZGVyT2IKIH0KICNlbmRpZgogCi1zdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGJvcmRl
clJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSBib3JkZXJSYWRpaUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0g
ICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRpaSgKKyAgICByZXR1cm4gRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkoCiAgICAgICAgIEludFNpemUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS53
aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCku
aW50VmFsdWUoKSksCiAgICAgICAgIEludFNpemUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWln
aHQoKS5pbnRWYWx1ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQoKS5pbnRWYWx1ZSgpKSwKQEAgLTYwNSw3ICs2MDUsNyBAQCBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaQogICAgICAgICByYW5nZVJlY3Quc2V0V2lkdGgobGVuZ3RoUmF0aW8gKiB0
b3RhbFRyYWNrV2lkdGgpOwogICAgICAgICBpZiAoaW5kZXgpCiAgICAgICAgICAgICByYW5nZVJl
Y3QubW92ZShzdGFydFJhdGlvICogdG90YWxUcmFja1dpZHRoLCAwKTsKLSAgICAgICAgY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9t
U3R5bGUoc3R5bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5
bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAt
NjE1LDcgKzYxNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpCiBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5
bGUgPSAmby0+c3R5bGUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0
KFJvdW5kZWRSZWN0KHIsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChyLCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNv
bgogICAgIHZvbHVtZVJlY3QubW92ZSgwLCByZWN0SGVpZ2h0IC0gdHJhY2tIZWlnaHQpOwogICAg
IHZvbHVtZVJlY3Quc2V0SGVpZ2h0KGNlaWwodHJhY2tIZWlnaHQpKTsKIAotICAgIGNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21T
dHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksCiAgICAgICAgIHN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xv
clNwYWNlKCkpOwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAzMWEzMmU0YzNjMDI1M2U4MTU3ZTg0
ODViZDEzYjVhMTFjZWVhNDdlLi5kMGQwMjBlMjE3MGJhYmU1Nzc0Y2U2YjE2OGY1OWYxNTNlM2Fk
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdJbWFn
ZS5oIgogCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKQEAg
LTE5NSw3ICsxOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAgIHN0YXRpYyBjb25z
dCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoMTQwLCAxNDAsIDE0MCk7CiAgICAgc3RhdGljIGNvbnN0
IEludFNpemUgcmFkaWkoRHJhZ0xhYmVsUmFkaXVzLCBEcmFnTGFiZWxSYWRpdXMpOwogICAgIElu
dFJlY3QgcmVjdCgwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsK
LSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCBy
YWRpaSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFk
aWksIHJhZGlpKSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAKICAg
ICAvLyBEcmF3IHRoZSB0ZXh0CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIHRvcENvbG9yKDAsIDAs
IDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWEwYzJkYzkxZWFkZGI2
OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMTk3ZDY4NTE4NzhhMTc2OTQyZTQ1MDg1MTdiZWFj
MTFjM2QwYTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0Um91bmRl
ZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNjUzLDcgKzY1NCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgIGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRh
bmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgICAg
ICBSb3VuZGVkUmVjdCBib3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJs
ZWVkQXZvaWRhbmNlKCpjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAgICAgICAgaWYgKGJv
cmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QoYm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyKSwg
YmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgIGNsaXBSb3VuZGVk
SW5uZXJSZWN0KGNvbnRleHQsIHJlY3QsIGJvcmRlcik7CkBAIC0yNTYyLDcgKzI1NjMsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICBmaWxsUmVjdC5leHBh
bmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGxSZWN0
LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFJlY3QuYWRqdXN0
UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGZp
bGxSZWN0LCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGZpbGxSZWN0KSwg
Q29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCByZWN0VG9DbGlwT3V0
ID0gYm9yZGVyLnJlY3QoKTsKQEAgLTI1OTAsNyArMjU5MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoYm9yZGVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoYm9yZGVyKSwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXIu
cmVjdCgpLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTI2MzUsNyArMjYzNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKIAot
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUob3V0ZXJSZWN0LCBy
b3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUob3V0ZXJSZWN0LCBGbG9hdFJvdW5kZWRSZWN0
KHJvdW5kZWRIb2xlKSwgZmlsbENvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IGZhOTRiOGI3YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLjU3YzJiZDdlNzQ2MjAz
NzgxOGEyN2UzMzhjZmZkY2E3MzMzNjY5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KQEAgLTk4Niw3ICs5ODYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2Jq
ZWN0KgogCiAgICAgICAgIC8vIEJhY2tncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJh
Y2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQgbWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAg
ICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3IgPSBidXR0b25SZW5kZXJlciA/IENvbG9yKGJ1
dHRvblJlbmRlcmVyLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikucmdiKCkpIDogQ29sb3IoMjA2LjBmLCAyMDYuMGYsIDIwNi4wZik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVy
ZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6
ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWls
UGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJ
bWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgewogICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRleHQp
OwpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBs
b2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKICAgICB9CiAK
ICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBwaWN0dXJlRnJhbWVD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNv
cm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBjb3JuZXJTaXplLCBwaWN0dXJlRnJh
bWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWNvbi0+cGFpbnQocGFpbnRJbmZv
LmNvbnRleHQsIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAppbmRleCAyNWM5NjY4NzVjZTYy
ODFlN2NkY2IzNTNlMTI2NjliYjhkMDQyNzFhLi41Njg3ZWM4MDFmZDQ3NmJmYTg4NWQyNTkxNWI2
MGY4MzUwYjViYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L0JveFNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNo
YXBlLmNwcApAQCAtMTU2LDE4ICsxNTYsMTEgQEAgYm9vbCBCb3hTaGFwZTo6Zmlyc3RJbmNsdWRl
ZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgYWRkUm91bmRlZFJlY3QoUGF0aCYgcGF0
aCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWkpCi17Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCks
IHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQo
KSwgUGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOwotfQotCiB2b2lkIEJveFNoYXBlOjpi
dWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdAogewotICAgIGFkZFJv
dW5kZWRSZWN0KHBhdGhzLnNoYXBlLCBtX2JvdW5kcy5yZWN0KCksIG1fYm91bmRzLnJhZGlpKCkp
OwotICAgIGlmIChzaGFwZU1hcmdpbigpKSB7Ci0gICAgICAgIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIG1hcmdpbkJvdW5kcyA9IHNoYXBlTWFyZ2luQm91bmRzKCk7Ci0gICAgICAgIGFkZFJvdW5k
ZWRSZWN0KHBhdGhzLm1hcmdpblNoYXBlLCBtYXJnaW5Cb3VuZHMucmVjdCgpLCBtYXJnaW5Cb3Vu
ZHMucmFkaWkoKSk7Ci0gICAgfQorICAgIHBhdGhzLnNoYXBlLmFkZFJvdW5kZWRSZWN0KG1fYm91
bmRzLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CisgICAgaWYgKHNoYXBlTWFyZ2lu
KCkpCisgICAgICAgIHBhdGhzLm1hcmdpblNoYXBlLmFkZFJvdW5kZWRSZWN0KHNoYXBlTWFyZ2lu
Qm91bmRzKCksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5jcHAKaW5kZXggZGE4ODdlNDcyYzUxZmRjZDg0MDMyNGNiZjk2YTM0OTFiMzQ1YjYzYy4u
ZDUyZGNiYThkNjE1NTBlMjRjOGEzMDM5NmM5MDdhNDQ2NDI0OTBiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9u
VmFsdWUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgog
I2luY2x1ZGUgIlJlbmRlckJveC5oIgpAQCAtMzU1LDcgKzM1Niw3IEBAIHZvaWQgQmFzaWNTaGFw
ZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAg
ICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKICAgICBmbG9hdCBsZWZ0ID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChtX2xlZnQsIGJvdW5kaW5nQm94LndpZHRoKCkpOwogICAgIGZsb2F0IHRvcCA9IGZs
b2F0VmFsdWVGb3JMZW5ndGgobV90b3AsIGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KAorICAgIEZsb2F0Um91bmRlZFJlY3QgciA9IEZsb2F0Um91bmRlZFJl
Y3QoCiAgICAgICAgIEZsb2F0UmVjdCgKICAgICAgICAgICAgIGxlZnQgKyBib3VuZGluZ0JveC54
KCksCiAgICAgICAgICAgICB0b3AgKyBib3VuZGluZ0JveC55KCksCkBAIC0zNjcsNiArMzY4LDcg
QEAgdm9pZCBCYXNpY1NoYXBlSW5zZXQ6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCkKICAgICAgICAgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShtX2JvdHRvbUxl
ZnRSYWRpdXMsIGJvdW5kaW5nQm94KSwKICAgICAgICAgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSht
X2JvdHRvbVJpZ2h0UmFkaXVzLCBib3VuZGluZ0JveCkKICAgICApOworICAgIHBhdGguYWRkUm91
bmRlZFJlY3Qocik7CiB9CiAKIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUluc2V0
OjpibGVuZChjb25zdCBCYXNpY1NoYXBlKiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRl
eCA1NjYyNjRlODFmYzg0NTUwMjgxMDNmNjhiMDFlZjMzM2U2MTI1NmVhLi4wYzU1MTFlYzY4MWRl
NWQ0NzZhYjc0ZTdhZjEwZWE5MGZhZmRhMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJvdW5kZWRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250U2VsZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IGd1dHRlcgogICAgIElu
dFNpemUgcmFkaXVzKG1fcmVjdC5oZWlnaHQoKSAvIDIsIG1fcmVjdC5oZWlnaHQoKSAvIDIpOwot
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cywgcmFkaXVzLCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobV9yZWN0LCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpLCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyBidXR0b24KICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yKHNsaWRlckJ1dHRvbkNvbG9yKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CkBAIC0xNzYsNyArMTc3LDggQEAgdm9pZCBIVURTbGlkZXI6OmRyYWcoY29uc3QgSW50
UG9pbnQmIHBvaW50LCBib29sIHN0YXJ0KQogICAgIG1fYnV0dG9uUG9zaXRpb24gPSBtYXgoMCwg
bWluKG1fcmVjdC53aWR0aCgpIC0gbV9idXR0b25TaXplLCBwb2ludC54KCkgLSBtX2RyYWdTdGFy
dE9mZnNldCkpOwogfQogCi1jbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgeworY2xhc3MgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQgOiBwdWJsaWMgCitQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIExheWVyQ2xpZW50KEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogCkBAIC00OTEsOSArNDkz
LDkgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICBJbnRTaXpl
IGlubmVyUmFkaXVzKGJvcmRlclJhZGl1cyAtIGJvcmRlclRoaWNrbmVzcywgYm9yZGVyUmFkaXVz
IC0gYm9yZGVyVGhpY2tuZXNzKTsKICAgICBJbnRSZWN0IGlubmVyUmVjdChib3JkZXJUaGlja25l
c3MsIGJvcmRlclRoaWNrbmVzcywgd2luZG93V2lkdGggLSBib3JkZXJUaGlja25lc3MgKiAyLCB3
aW5kb3dIZWlnaHQgLSBib3JkZXJUaGlja25lc3MgKiAyKTsKIAotICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KG91dGVyUmVjdCwgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1
cywgb3V0ZXJSYWRpdXMsIENvbG9yKGJvcmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlclJlY3Qs
IG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzKSwgQ29s
b3IoYm9yZGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChpbm5lclJlY3QsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlu
bmVyUmFkaXVzLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGlubmVyUmVjdCwg
aW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMpLCBDb2xv
cihiYWNrZ3JvdW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcg
dGhlIHdpZGdldHMKICAgICBtX3BsYXlQYXVzZUJ1dHRvbi5kcmF3KGNvbnRleHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225629</attachid>
            <date>2014-03-02 19:41:34 -0800</date>
            <delta_ts>2014-03-03 08:52:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140302194132.patch</filename>
            <type>text/plain</type>
            <size>78249</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMGI4YmQ2MGZiNWZjZTEwZDBiOTA3NDkyMjRlMWUy
YzEzYTMzZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVk
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmFkaWlGcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzMzRlODIxNThjNjhjNmM2YzBmMTUx
YTEzOWRjYjBkMjY5NzAwYWMuLjI5YzdjMDVhMmI4NTFmMGI5MjE0ZmY2MDIyZGEyOTFhMDZlNDI5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0wMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzog
TWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9hdFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBj
bGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3KToKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorCiAyMDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0
ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApp
bmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4MmM5NDM0N2QzLi5jZGZjZTA3OGYy
ZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTI0Miw3ICsx
MjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSB0aHVtYlJlY3QoMywgMyk7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRodW1iQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0KSwg
bV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNmNTAyYjRlNGM0OTk5MjQ2MjhiNGI0
MThiZmY2Li44ODQ5YTgxMzdkZGU4MTQzYjI5NTMzZjI5NzhjZDEwNjYyMzA3ZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGbG9hdFJv
dW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQorICAg
IDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRpaShyZWN0LnJhZGlpKCkpCit7Cit9
CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KQogewpAQCAtMTM3LDQgKzE0MywxMiBAQCBib29sIEZsb2F0Um91bmRlZFJlY3Q6OnhJbnRl
cmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WAogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIEZsb2F0Um91bmRlZFJlY3Q6OmlzUmVuZGVyYWJsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlp
LnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkuYm90
dG9tTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA8PSBtX3Jl
Y3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS5i
b3R0b21MZWZ0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0LmhlaWdodCgpCisgICAgJiYgbV9yYWRpaS50
b3BSaWdodCgpLmhlaWdodCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1f
cmVjdC5oZWlnaHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZi
ZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRlM2Y5YzIyMTNiOTJkY2QuLjk1YmY1MjY3MTJmYWJhMDMw
MDU1OTA1NjQ3NTI4MWJiMDk4NjZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4cGxpY2l0IEZsb2F0Um91bmRlZFJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIEZsb2F0Um91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpOwogCkBAIC0xMTUsNiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gRmxvYXRSZWN0KG1fcmVjdC5tYXhYKCkgLSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSwgbV9yZWN0Lm1heFkoKSAtIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgbV9y
YWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCksIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQo
KSk7CiAgICAgfQogCisgICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKICAgICBib29sIHhJ
bnRlcmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WElu
dGVyY2VwdCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2YjRkN2E5YTNkNzJlZGMz
MjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzLi5lMTU3NzA4Y2EyYjA1NWFmZjk5YzlkNTI0ZTQ4Yzhh
NzUwYzlkNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC02ODEsMzQgKzY4MiwxNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGNsaXAoRmxvYXRSZWN0
KHJlY3QpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXJlY3QuaXNSb3VuZGVkKCkpIHsK
LSAgICAgICAgY2xpcChyZWN0LnJlY3QoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBjbGlwKHBh
dGgpOwogfQogCi0vLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEg
c3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXpl
IHJhZGlpLgotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodCwKLSAgICBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICBjbGlwKHBh
dGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc2OSwxOCArNzUzLDE4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0
b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHJl
Y3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0
ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwotICAgICAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5y
ZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCBy
ZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29s
b3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChyZWN0LCBj
b2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgp
LCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9kZSk7CiB9
CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBhOWJmNWQwMDRj
ZTExYmFjYTcwNzE5NjIwNDZkOTgzNGNlMmUwZmU1Li40OTk2MDkyMWMyYWQyNzkzN2JiYTg0YjM2
YzYwYmYzOWZiNDUwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNzUsNiArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZl
cjsKKyAgICBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEdyYWRpZW50OwogICAg
IGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
ICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAg
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0g
ICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpOworICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIApAQCAtMzI3LDEzICszMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmKTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1z
IG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxv
YXRTaXplIHJhZGlpLgotICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdo
dCk7CisgICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
KTsKIAogICAgICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZv
aWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CisgICAgICAgIHZvaWQg
Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252
ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlh
bGlhcyA9IHRydWUpOwogICAgICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgY29uc3QgRmxvYXRSZWN0Jik7CkBAIC01NzAsNiArNTY3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgICAgIHZvaWQgcGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwog
CisgICAgICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGE7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5k
ZXggODhkNDUzYzNhNDM2OGY0MzkzZDkyNDkyN2Y2MjQwMjU1Nzc1MjEzZi4uMDkxNjhlNTg2ZmE2
NWY5ZjNkNTBkZWIzMmY1ZjY3ZWRhYTgwNmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC05MSwxMSArOTIsNiBAQCBmbG9hdCBQYXRoOjpu
b3JtYWxBbmdsZUF0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgYm9vbCYgb2spIGNvbnN0CiAgICAgcmV0
dXJuIHRyYXZlcnNhbFN0YXRlLm1fbm9ybWFsQW5nbGU7CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91
bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHIpCi17Ci0gICAgYWRkUm91bmRlZFJlY3Qoci5y
ZWN0KCksIHIucmFkaWkoKS50b3BMZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCByLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci19Ci0KIHZvaWQgUGF0
aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7CiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQpAQCAtMTA1LDcgKzEwMSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgRmxvYXRTaXplIGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0
KCkgLyAyKTsKIAogICAgIC8vIEFwcGx5IHRoZSBTVkcgY29ybmVyIHJhZGl1cyBjb25zdHJhaW50
cywgcGVyIHRoZSByZWN0IHNlY3Rpb24gb2YgdGhlIFNWRyBzaGFwZXMgc3BlYzogaWYKLSAgICAv
LyBvbmUgb2YgcngscnkgaXMgbmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMg
dmFsdWUgaXMgdXNlZC4gSWYgYm90aCB2YWx1ZXMgYXJlIAorICAgIC8vIG9uZSBvZiByeCxyeSBp
cyBuZWdhdGl2ZSwgdGhlbiB0aGUgb3RoZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJ
ZiBib3RoIHZhbHVlcyBhcmUKICAgICAvLyBuZWdhdGl2ZSB0aGVuIHJ4ID0gcnkgPSAwLiBJZiBy
eCBpcyBncmVhdGVyIHRoYW4gaGFsZiBvZiB0aGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZQogICAg
IC8vIHRoZW4gc2V0IHJ4IHRvIGhhbGYgb2YgdGhlIHdpZHRoOyByeSBpcyBoYW5kbGVkIHNpbWls
YXJseS4KIApAQCAtMTIxLDM2ICsxMTcsMzkgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAg
ICBpZiAocmFkaXVzLmhlaWdodCgpID4gaGFsZlNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJhZGl1
cy5zZXRIZWlnaHQoaGFsZlNpemUuaGVpZ2h0KCkpOwogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRS
ZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgc3RyYXRlZ3kpOworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSwgc3RyYXRlZ3kpOwogfQogCi12b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0
U3RyYXRlZ3kgc3RyYXRlZ3kpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHIsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7Ci0gICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHJlY3Qud2lkdGgoKSA8IHRvcExlZnRSYWRpdXMud2lkdGgoKSArIHRvcFJpZ2h0
UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8IHJlY3Qud2lkdGgoKSA8IGJvdHRvbUxlZnRS
YWRpdXMud2lkdGgoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8
IHJlY3QuaGVpZ2h0KCkgPCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpICsgYm90dG9tTGVmdFJhZGl1
cy5oZWlnaHQoKQotICAgICAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHRvcFJpZ2h0UmFkaXVz
LmhlaWdodCgpICsgYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpIHsKKyAgICBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByLnJhZGlpKCk7CisgICAgY29uc3QgRmxvYXRS
ZWN0JiByZWN0ID0gci5yZWN0KCk7CisKKyAgICBpZiAocmVjdC53aWR0aCgpIDwgcmFkaWkudG9w
TGVmdCgpLndpZHRoKCkgKyByYWRpaS50b3BSaWdodCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVj
dC53aWR0aCgpIDwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgKyByYWRpaS5ib3R0b21SaWdo
dCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHJhZGlpLnRvcExlZnQoKS5o
ZWlnaHQoKSArIHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKQorICAgICAgICB8fCByZWN0Lmhl
aWdodCgpIDwgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSArIHJhZGlpLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkpIHsKICAgICAgICAgLy8gSWYgYWxsIHRoZSByYWRpaSBjYW5ub3QgYmUgYWNjb21t
b2RhdGVkLCByZXR1cm4gYSByZWN0LgogICAgICAgICBhZGRSZWN0KHJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cywgc3RyYXRlZ3kpOwotfQotCi12b2lkIFBhdGg6OmFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFk
aXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3VuZGVkUmVjdFN0cmF0
ZWd5IHN0cmF0ZWd5KQotewogICAgIGlmIChzdHJhdGVneSA9PSBQcmVmZXJOYXRpdmVSb3VuZGVk
UmVjdCkgewogI2lmIFVTRShDRykKLSAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMs
IGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21M
ZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICB9CiAKLSAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50
b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworfQor
Cit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQoreworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocikpOwogfQogCiAvLyBBcHByb3hpbWF0
aW9uIG9mIGNvbnRyb2wgcG9pbnQgcG9zaXRpb25zIG9uIGEgYmV6aWVyIHRvIHNpbXVsYXRlIGEg
cXVhcnRlciBvZiBhIGNpcmNsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAppbmRleCA1NWYwZjZlMmVhYjc1NDgwNjJjMmUzZTFiY2JhMTQ3ZTQ2ZWM3OWE2Li4zZDNmYTE3
YWNlMDQ1M2Y4MzliNDM2MDBjNTQwNDZiZjkyZWUyN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBj
bGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBG
bG9hdFNpemU7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIFJvdW5kZWRS
ZWN0OwpAQCAtMTI5LDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfTsK
IAogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2
ZVJvdW5kZWRSZWN0KTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5h
dGl2ZVJvdW5kZWRSZWN0KTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRS
ZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwog
CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTQzLDcgKzE0
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseSh2b2lkKiBpbmZv
LCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAgICAgICAgdm9pZCBhZGRQYXRoRm9yUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3Ry
YXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CiAgICAgICAgIHZvaWQgYWRkQmV6aWVy
c0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsK
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAppbmRleCBkNzI3MzI0ZTc3NGY2MGY5ZTNhZTlmZDYxOTk2Y2M2M2IyZjg4
ZTYxLi4wZGJhNDhjNDk4MWViNTA3ODdjNzI4NzY4OWU0YjVkOWJkZTFjOWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIK
IAorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogCkBAIC0yMzYsNCArMjM3LDkgQEAgYm9vbCBSb3Vu
ZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCitGbG9hdFJvdW5kZWRSZWN0IFJvdW5kZWRSZWN0OjpwaXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25z
dAoreworICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KHJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByYWRpaSgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmgKaW5kZXggNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5MDVlZjgwNS4uM2U2
MmQzODJiZGUxYzk4NzUyN2MxYTBkMmY2YTNiYTVhNTU3YjgyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC0zMyw2ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIExh
eW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGZvciBjb252ZXggcXVhZHMuCiAgICAgYm9vbCBp
bnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKIAorICAgIEZsb2F0Um91bmRl
ZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiAgICAg
UmFkaWkgbV9yYWRpaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKaW5kZXggZDY3NTIyOGJiYmViZDlhYWQyZmM3NjJkZDRmMjMyM2NlODJhZTA4
MS4uMTFhNWY5ZjAyZDY0ZDUzNTJmZjliMGZhZTg2MjM5MzIyYzBiOWQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTUwOSw5ICs1
MDksOSBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBy
YWRpdXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZQogICAgICAgICAgICAgICAgICAgIHRlbXBs
YXRlU2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2UpOwogfQogCi12b2lkIFNoYWRv
d0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0
KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGdyYXBoaWNzQ29udGV4dC0+Y2xpcEJvdW5k
cygpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LnJlY3QoKSwgZ3JhcGhpY3NDb250ZXh0LT5j
bGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTUyMCwyMyArNTIwLDI0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAgICAg
Ly8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQyCiAg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQo
KSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCBsYXllclJlY3Qp
OworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBz
aGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJ
bnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0
ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHJhZGlpKTsKKyAgICBJbnRTaXpl
IHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0
KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBzaGFkb3dlZFJlY3Qud2lkdGgo
KSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBzaGFkb3dlZFJlY3QuaGVpZ2h0KCkKKyAgICBp
ZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiByZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhl
aWdodCgpID4gcmVjdC5oZWlnaHQoKQogICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkg
KiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX3NvdXJjZVJlY3Qud2lkdGgoKSAqIG1fc291cmNl
UmVjdC5oZWlnaHQoKSkpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdy
YXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5ZXJSZWN0KTsKKyAgICAgICAg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0
LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgdGVtcGxh
dGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgc2hhZG93ZWRSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSkKK3ZvaWQgU2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewog
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhp
Y3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYg
KGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NDcsMzMgKzU0OCwzNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgIC8vIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcgZG9lcyBub3Qgd29y
ayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCkucHJlc2Vy
dmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hhZG93KSB7Ci0gICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0
VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VT
aXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRn
ZVNpemUsIGhvbGVSYWRpaSk7CisgICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1w
bGF0ZVNpemUoZWRnZVNpemUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVj
dCYgaFJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRo
KCkgPiBob2xlUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhvbGVSZWN0
LmhlaWdodCgpCi0gICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6
ZS5oZWlnaHQoKSA+IGhvbGVSZWN0LndpZHRoKCkgKiBob2xlUmVjdC5oZWlnaHQoKSkpIHsKLSAg
ICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7CisgICAgaWYgKHRlbXBsYXRlU2l6ZS53
aWR0aCgpID4gaFJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBoUmVjdC5o
ZWlnaHQoKQorICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgPiBoUmVjdC53aWR0aCgpICogaFJlY3QuaGVpZ2h0KCkpKSB7CisgICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRyYXdJbnNldFNo
YWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlp
LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUp
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJl
Y3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0
LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCA9IHNoYWRvd2VkUmVjdDsKKyAg
ICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QgPSBzaGFkb3dlZFJlY3QucmVj
dCgpOwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0Lm1vdmUobV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIg
aWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJl
ZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVl
cyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVy
UmVsYXRpdmVTaGFkb3dlZFJlY3QsIHJhZGlpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
bV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJl
bGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwog
ICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC01ODIsMTEgKzU4NCwx
MSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgaWYgKHJhZGlp
LmlzWmVybygpKQotICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRS
ZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQorICAgICAg
ICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRSZWN0LnJlY3QoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICAgICAgcGF0aC5hZGRS
b3VuZGVkUmVjdChzaGFkb3dlZFJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQo
KSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0KTsKICAgICAgICAgICAgIHNoYWRvd0Nv
bnRleHQtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAgLTU5OCw3ICs2MDAsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVk
dWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
Cit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAg
ICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVy
KGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjA3LDExICs2
MDksMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIEZsb2F0UmVjdCBidWZmZXJSZWxh
dGl2ZVJlY3QgPSByZWN0OwogICAgIGJ1ZmZlclJlbGF0aXZlUmVjdC5tb3ZlKG1fbGF5ZXJDb250
ZXh0VHJhbnNsYXRpb24pOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3Qg
PSBob2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCA9IGhvbGVS
ZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0Lm1vdmUobV9sYXllckNvbnRl
eHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZm
ZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hh
ZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSYWRpaSk7
CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBo
b2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OwpAQCAtNjIyLDEwICs2MjQsMTAgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgICAg
IFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICBpZiAoaG9s
ZVJhZGlpLmlzWmVybygpKQotICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGhvbGVSZWN0KTsKKyAg
ICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisgICAgICAgICAgICBwYXRoLmFk
ZFJlY3QoaG9sZVJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgaG9sZVJhZGlpLnRvcExlZnQoKSwgaG9sZVJhZGlpLnRv
cFJpZ2h0KCksIGhvbGVSYWRpaS5ib3R0b21MZWZ0KCksIGhvbGVSYWRpaS5ib3R0b21SaWdodCgp
KTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QpOwogCiAgICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtNjcxLDcgKzY3Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgdGhlIHNo
YWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VT
aXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1f
bGF5ZXJJbWFnZSkKQEAgLTY4Miw3ICs2ODQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwg
ZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndp
ZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAK
ICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBj
b250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNj
cmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCByYWRpaSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29s
b3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQg
PSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTY5MywxMCArNjk1LDEwIEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJl
Y3QodGVtcGxhdGVCb3VuZHMpOwotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAg
IGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlSG9sZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QodGVtcGxhdGVIb2xlLCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJh
ZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVIb2xlLCBob2xlUmVjdC5y
YWRpaSgpKSk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAKQEAg
LTcxMSw3ICs3MTMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCBi
b3VuZGluZ1JlY3QgPSByZWN0OwogICAgIGJvdW5kaW5nUmVjdC5tb3ZlKG9mZnNldCk7CiAKLSAg
ICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3Q7CisgICAgRmxvYXRSZWN0IGRlc3RI
b2xlUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsKICAgICBkZXN0SG9sZVJlY3QubW92ZShvZmZzZXQp
OwogICAgIEZsb2F0UmVjdCBkZXN0SG9sZUJvdW5kcyA9IGRlc3RIb2xlUmVjdDsKICAgICBkZXN0
SG9sZUJvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53aWR0aCgpKTsKQEAgLTczMCwxMyArNzMyLDEz
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Zmls
bFBhdGgoZXh0ZXJpb3JQYXRoKTsKICAgICB9CiAgICAgCi0gICAgZHJhd0xheWVyUGllY2VzKGdy
YXBoaWNzQ29udGV4dCwgZGVzdEhvbGVCb3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVT
aXplLCBJbm5lclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwg
ZGVzdEhvbGVCb3VuZHMsIGhvbGVSZWN0LnJhZGlpKCksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUs
IElubmVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IElu
dFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNo
YXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1fbGF5ZXJJ
bWFnZSkKQEAgLTc0NSw3ICs3NDcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIEZs
b2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdl
U2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgo
KSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAg
IC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRl
bnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRj
aEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgcmFkaWksIG1fbGF5ZXJTaXplKTsK
KyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxh
dGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgaWYgKHJl
ZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRoZSBJbWFnZUJ1ZmZl
ci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdl
LT5jb250ZXh0KCk7CkBAIC03NTQsMTEgKzc1NiwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
cwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBs
YXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgc2hhZG93
Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIAotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAgIGlmIChzaGFk
b3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZp
bGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRo
IHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHRlbXBsYXRlU2hhZG93LCBy
YWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFk
aWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpKSk7CiAgICAg
ICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCkBAIC03
NzAsMTIgKzc3MiwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgICAgICBvZmZzZXQu
c2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7CiAg
ICAgfQogCi0gICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd2VkUmVjdDsKKyAgICBG
bG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93ZWRSZWN0LnJlY3QoKTsKICAgICBzaGFkb3dC
b3VuZHMubW92ZShvZmZzZXQpOwogICAgIHNoYWRvd0JvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53
aWR0aCgpKTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVkoZWRnZVNpemUuaGVpZ2h0KCkpOwog
Ci0gICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCByYWRp
aSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOworICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5kcywgc2hhZG93ZWRSZWN0LnJhZGlpKCks
IGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFn
ZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVy
UHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aAppbmRleCA5NTllMTdlODliNjhjMjgwMjAzMmU1YTljMWY5NDk0OTBmMGI3YzUyLi44MTgwMzU1
Zjc0ODliODJmNGVhOWViYzFhMWQxZjU5M2U1ZGExZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoK
ICAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0Kik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJik7Ci0g
ICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29u
c3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToK
ICAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAg
ICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUp
OworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0
IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lk
IGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJs
dXJyZWRFZGdlU2l6ZSk7CiAgICAgCiAgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IDFkZGY2MGYyNTc1NGQxNTI4YWIwY2Q0Yjk1OWNmZDNlNTJlNGVk
NjMuLjdlNDcyODMxYmVjMDAxOWM1NzI0MDZjN2U3OGNkZmE2ZThmZDNhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJEcmF3RXJy
b3JVbmRlcmxpbmUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NjAs
NyArNDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1
cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LCBjb2xvcik7CiB9CkBAIC0xMDI4LDMxICsxMDI4LDMx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAg
ICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEZs
b2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQoY3IsIHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yKTsK
ICAgICBjYWlyb19maWxsKGNyKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodGhpcy0+bXVzdFVzZVNoYWRvd0JsdXIoKSkKLSAgICAgICAgcGxhdGZvcm1D
b250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAyNGQxMWY5MDUyMzc1NjQ4NWJlZjM3NTUzNzc2ZmQ4
ZDEyMTk2ZTllLi4xMmRlNTVhNjhmZWVhMjhlMGFmZDczMzJiZGUyODk3MDdkYmQ1MWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCkBAIC04MDYsNyArODA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRT
aGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwor
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJl
Y3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3Qp
OwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0
OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBG
bG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChj
b250ZXh0LCByZWN0KTsKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
UwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTg2NSwxNyArODY1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkp
OworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwogICAg
IH0KIAotICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdC53aWR0aCgpID09IHRvcFJpZ2h0
LndpZHRoKCkgJiYgdG9wUmlnaHQud2lkdGgoKSA9PSBib3R0b21MZWZ0LndpZHRoKCkgJiYgYm90
dG9tTGVmdC53aWR0aCgpID09IGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAgIGJvb2wgZXF1YWxI
ZWlnaHRzID0gKHRvcExlZnQuaGVpZ2h0KCkgPT0gYm90dG9tTGVmdC5oZWlnaHQoKSAmJiBib3R0
b21MZWZ0LmhlaWdodCgpID09IHRvcFJpZ2h0LmhlaWdodCgpICYmIHRvcFJpZ2h0LmhlaWdodCgp
ID09IGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0
LnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0
LnJhZGlpKCk7CisgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgo
KSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgp
ID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0
aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgYm9vbCBlcXVhbEhlaWdo
dHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5o
ZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkpOwogICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRp
ZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVx
dWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiB0b3BMZWZ0LndpZHRoKCkgKiAyID09IHJlY3Qu
d2lkdGgoKSAmJiB0b3BMZWZ0LmhlaWdodCgpICogMiA9PSByZWN0LmhlaWdodCgpKQotICAgICAg
ICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByZWN0KTsKKyAgICBpZiAoIWhh
c0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExl
ZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgp
ICogMiA9PSByLmhlaWdodCgpKQorICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChj
b250ZXh0LCByKTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7CiAgICAgICAgIGZp
bGxQYXRoKHBhdGgpOwogICAgIH0KIApAQCAtODg2LDcgKzg4OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRvCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwg
b2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3Vu
ZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmQKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBs
YXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVj
dC5yYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywg
cmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAKICAgICBmaWxsUGF0aChwYXRoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA4Mjk5ZDYzNGFlYjJkZGRjYWFlOTMxZTYx
MWMzZDA2ODY2OWE2ODY2Li5lMGQzMjkxNjQwMjMxNjk5ZGE1MDdmMDY1OGE2NzkzMzVkMjZkMDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFw
aGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkdESUV4dHJhcy5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0xMTUwLDcgKzEx
NTEsOCBAQCBzdGF0aWMgaW5saW5lIEludFBvaW50IHJlY3RDZW50ZXJQb2ludChjb25zdCBSRUNU
JiByZWN0KQogewogICAgIHJldHVybiBJbnRQb2ludChyZWN0LmxlZnQgKyAocmVjdC5yaWdodCAt
IHJlY3QubGVmdCkgLyAyLCByZWN0LnRvcCArIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIDIp
OwogfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKwordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgYywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIFNj
b3BlRENQcm92aWRlciBkY1Byb3ZpZGVyKG1fZGF0YSk7CiAgICAgaWYgKCFtX2RhdGEtPm1fZGMp
CkBAIC0xMTYzLDE2ICsxMTY1LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAgICAg
IAogICAgIGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKICAgICAKKyAgICBjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0ID0g
cmVjdC5yZWN0KCk7CiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCiAgICAg
ZHN0UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNoYWRvd09mZnNldC53aWR0aCgpKSwgc3RhYmxlUm91
bmQoc2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7CiAgICAgZHN0UmVjdC5pbmZsYXRlKHN0YWJsZVJv
dW5kKHNoYWRvd0JsdXIpKTsKICAgICBkc3RSZWN0ID0gbV9kYXRhLT5tYXBSZWN0KGRzdFJlY3Qp
OwogICAKLSAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUodG9wTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNpemUodG9wUmlnaHQpKTsK
LSAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1hcFNpemUoYm90dG9tTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUoYm90dG9tUmln
aHQpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRp
aSgpLnRvcExlZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNp
emUocmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKKyAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVm
dChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSkpOworICAgIEZsb2F0
U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbVJp
Z2h0KCkpKTsKIAogICAgIFRyYW5zcGFyZW50TGF5ZXJEQyB0cmFuc3BhcmVudERjKG1fZGF0YSwg
ZHN0UmVjdCwgJmZpbGxSZWN0KTsKICAgICBIREMgZGMgPSB0cmFuc3BhcmVudERjLmhkYygpOwpA
QCAtMTIyMyw3ICsxMjI2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUKICAgICBTZWxlY3RP
YmplY3QoZGMsIG9sZEJydXNoKTsKIH0KIAotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Jv
dW5kQ29ybmVyKGJvb2wgbmVlZHNOZXdDbGlwLCBSRUNUIGNsaXBSZWN0LCBSRUNUIHJlY3RXaW4s
IEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICghZGMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBjNDY5ZTQy
MDZkNjhmYjFlNzczZWI0OTZiZTk5YTFhYzQxOWZiYjZlLi4xODlhN2U1YzU1YTU1ZWY1ZTFkMjVk
Y2I2MTdkZWQxZTI5MDg5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTU3MCw5ICs1NzAsOSBAQCBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYgogfQogI2VuZGlmCiAKLXN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpIGJvcmRlclJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAorICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSgKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCku
aW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKS5pbnRWYWx1
ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0
aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpLmlu
dFZhbHVlKCkpLAogICAgICAgICBJbnRTaXplKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhl
aWdodCgpLmludFZhbHVlKCkpLApAQCAtNjA1LDcgKzYwNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpCiAgICAgICAgIHJhbmdlUmVjdC5zZXRXaWR0aChsZW5ndGhSYXRpbyAqIHRvdGFsVHJh
Y2tXaWR0aCk7CiAgICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIHJhbmdlUmVjdC5tb3Zl
KHN0YXJ0UmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgsIDApOwotICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoUm91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShz
dHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29s
b3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CkBAIC02MTUsNyAr
NjE1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWkKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9ICZv
LT5zdHlsZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoUm91bmRl
ZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHIsIGJv
cmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uCiAgICAg
dm9sdW1lUmVjdC5tb3ZlKDAsIHJlY3RIZWlnaHQgLSB0cmFja0hlaWdodCk7CiAgICAgdm9sdW1l
UmVjdC5zZXRIZWlnaHQoY2VpbCh0cmFja0hlaWdodCkpOwogCi0gICAgY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0
eWxlKSksCisgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9s
dW1lUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDMxYTMyZTRjM2MwMjUzZTgxNTdlODQ4NWJkMTNi
NWExMWNlZWE0N2UuLmQwZDAyMGUyMTcwYmFiZTU3NzRjZTZiMTY4ZjU5ZjE1M2UzYWQyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgpAQCAtMTk1LDcg
KzE5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9y
IGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwgMTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6
ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCBy
ZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNv
bnRleHQuZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpLCBi
YWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFk
aWkpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogIAogICAgIC8vIERy
YXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1
KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJlZTVhZmJhZWJhODkxMzQxNDU0NGNlNDAuLjJh
ZGEwZmZkMjEzNjgxOGRlMWJiOGVhYjc0NTY1ZDljMGNhMWJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTEyMTEs
NyArMTIxMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgICAgIC8vIGJlZ2lubmlu
ZyB0aGUgbGF5ZXIpLgogICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLmdldFJv
dW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpKTsKICAgICAgICAgc3RhdGVTYXZlci5z
YXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm9yZGVy
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlcikpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKICAgICB9CiAKQEAgLTE2NDgsNyArMTY0OSw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
aXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCkgOiBvdmVy
Zmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKTsK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQsIHNpemUoKSkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91
dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWEwYzJkYzkx
ZWFkZGI2OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMDcwMzNlZjViMDk2ZDA0NmRhOGVkNjg1
ZTYxN2EyNWNiMzE3ODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0
Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTAwLDMxICs1MDEsMzEgQEAgUm91
bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBib3IKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoY2xpcFJlY3Qu
aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChjbGlwUmVj
dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQgcmVj
dCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1cmUg
d2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBSZWN0
LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21S
aWdodCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlwUmVj
dC5yZWN0KCkueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3QoKS55KCkpOwotICAgICAg
ICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOworICAgICAgICAgICAgRmxv
YXRSZWN0IHRvcENvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgp
LCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJl
Y3QucmVjdCgpLnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJl
Y3QucmFkaWkoKS50b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9w
Q29ybmVyUmFkaWkpKTsKIAotICAgICAgICAgICAgSW50UmVjdCBib3R0b21Db3JuZXIocmVjdC54
KCksIHJlY3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0
LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFk
aWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAgICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVy
KHJlY3QueCgpLCByZWN0LnkoKSwgY2xpcFJlY3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCBj
bGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOworICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICBib3R0b21Db3Ju
ZXJSYWRpaS5zZXRCb3R0b21SaWdodChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNv
cm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkp
KTsKICAgICAgICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQo
KS5pc0VtcHR5KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNsaXBSZWN0LnJlY3Qo
KS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBj
bGlwUmVjdC5yZWN0KCkueSgpKTsKLSAgICAgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNs
aXBSZWN0LnJlY3QoKS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVj
dC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsKKyAgICAgICAgICAgIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwogICAgICAgICAgICAgdG9wQ29ybmVyUmFkaWku
c2V0VG9wUmlnaHQoY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJh
ZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKLSAgICAgICAgICAgIEludFJlY3Qg
Ym90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QueSgpLCByZWN0Lm1heFgoKSAt
IGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7
Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAg
ICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3Qu
eSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5t
YXhZKCkgLSByZWN0LnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBi
b3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRv
bUxlZnQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTY1Myw3ICs2NTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3JvdW5kQmxl
ZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVy
ID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgqY29udGV4
dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRFZGdlLCBp
bmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGlmIChib3JkZXIuaXNSZW5kZXJhYmxlKCkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwgYmdDb2xv
ciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciksIGJnQ29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBy
ZWN0LCBib3JkZXIpOwpAQCAtMTk1NiwxMSArMTk1NywxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJl
Y3QmCiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNl
ICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIpOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckJv
cmRlcikpOwogICAgICAgICAvLyBpc1JlbmRlcmFibGUoKSBjaGVjayBhdm9pZHMgaXNzdWUgZGVz
Y3JpYmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODc4Nwog
ICAgICAgICAvLyBUaGUgaW5zaWRlIHdpbGwgYmUgY2xpcHBlZCBvdXQgbGF0ZXIgKGluIGNsaXBC
b3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aCkKICAgICAgICAgaWYgKGlubmVyQm9yZGVyLmlz
UmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRl
ZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckJvcmRlcikpOwogICAgIH0KIAogICAg
IC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9lc24ndCBjcmVhdGUg
c2VhbXMKQEAgLTIwNTMsNyArMjA1NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRy
YXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwg
aW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KGlubmVyQ2xpcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGlubmVyQ2xpcCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0
aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09MSUQsIGJsZWVk
QXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgICAgIH0KIApAQCAtMjA3Miw3ICsyMDczLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xpcCA9IHN0eWxlLT5nZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91dGVyQm9yZGVy
VG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBv
dXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKSk7
CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyUGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwg
c3R5bGUsIGNvbG9yLCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CkBAIC0yMTA0LDcgKzIxMDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94
U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAg
ICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsCiAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBz
aWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjM1Myw3ICsyMzU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCogZ3IKICAgICBCb3hTaWRl
IHNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2UgZWRnZXNbXSkKIHsKICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXAoY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihvdXRlckJvcmRlciwg
ZWRnZXMsIHNpZGUpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChj
YWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxh
dGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOwogfQogCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlSW5mbyhCb3JkZXJFZGdlIGVkZ2VzW10s
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdApAQCAtMjU1Miw3ICsyNTUzLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3RU
b0NsaXBPdXQpKTsKIAogICAgICAgICAgICAgICAgIFJvdW5kZWRSZWN0IGluZmx1ZW5jZVJlY3Qo
c2hhZG93UmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogICAgICAgICAgICAgICAgIGluZmx1ZW5jZVJl
Y3QuZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsK
QEAgLTI1NjIsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAg
ICAgICAgICAgIGZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoZmlsbFJlY3QpLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwpAQCAtMjU5MCw3ICsyNTkx
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgaWYgKGhvbGVSZWN0
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIHNoYWRvd0Nv
bG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpLCBzaGFkb3dDb2xvciwgcy0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGJvcmRlci5yZWN0KCksIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjYzNSw3ICsyNjM2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9y
LCBzLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShvdXRlclJlY3QsIHJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHMtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShvdXRl
clJlY3QsIEZsb2F0Um91bmRlZFJlY3Qocm91bmRlZEhvbGUpLCBmaWxsQ29sb3IsIHMtPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAppbmRleCA5NzJmZjM2MzFiYjVlNjVjZWRlYzQ5OWQ2MzRlODEzYzYyY2Yw
NDM3Li41MDNkNzYxNDY4MTIxNGJkOGU0NDBiNzgxZTI5ZWIzNzNiZDAyM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYwOSw3ICszNjEwLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGMKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
ICYmIGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgaW5Db250
YWluaW5nQmxvY2tDaGFpbih0aGlzLCBsYXllcikpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQ
b2ludCBkZWx0YTsKICAgICAgICAgICAgICAgICBsYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMo
cm9vdExheWVyLCBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExh
eW91dFJlY3QoZGVsdGEsIGxheWVyLT5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChkZWx0YSwgbGF5ZXItPnNp
emUoKSkpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5ZXIgPT0gcm9vdExheWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGZhOTRiOGI3
YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLmVlYzYzMGRiZDA0OThjMWEyODcxY2Ux
NDI4OGU3NjdhZTNmNjAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9y
dCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRm9udENh
Y2hlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtNDUwLDcgKzQ1MSw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKICAgICB9
CiAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkgKyBjbGlwLndpZHRoKCkgLyAy
LjAsIGNsaXAubWF4WSgpKTsKICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRp
ZW50V2l0aE5hbWUoU2hhZGVHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChj
bGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKQEAgLTQ2NSw3ICs0
NjYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKFJl
bmRlck9iamVjdCogYm94LCBjb25zdCBQYWludEluZgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QpKSk7CiAKICAgICAvLyBUaGlzIGdyYWRp
ZW50IGdldHMgZHJhd24gYmxhY2sgd2hlbiBwcmludGluZy4KICAgICAvLyBEbyBub3QgZHJhdyB0
aGUgZ3JhZGllbnQgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0b3AgYm9yZGVyLgpAQCAtNTg1LDkg
KzU4Niw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdCh0aXRsZUNsaXAsIAorICAgICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVD
bGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAs
IDApLAotICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVm
dFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxv
YXRTaXplKDAsIDApKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgdGl0bGVDbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwgdGl0bGVDbGlwLm1heFkoKSksIExpbmVh
ckludGVycG9sYXRpb24pOwogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoU2hpbmVHcmFkaWVudCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwg
dGl0bGVDbGlwLm1heFkoKSksIHRpdGxlQ2xpcC5sb2NhdGlvbigpLCBFeHBvbmVudGlhbEludGVy
cG9sYXRpb24pOwpAQCAtNjA1LDkgKzYwNiw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJ1dHRvbkNsaXAsIAorICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgw
LCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKLSAgICAgICAgICAgIEZsb2F0U2l6
ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSk7CisgICAgICAg
ICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3Jk
ZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgo
KSkpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoYnV0dG9uQ2xpcCwg
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwogCkBAIC03MTYsNyArNzE3LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAKICAgICAgICAgSW50U2l6ZSBjb3JuZXJTaXplKGNvcm5lcldp
ZHRoLCBjb3JuZXJIZWlnaHQpOwotICAgICAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlcih0cmFj
a0NsaXAsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpOwor
ICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6
ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoaW5uZXJCb3JkZXIpOwogCiAgICAgICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CkBAIC04MzIsNyArODMzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jh
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHAKIAogICAgIC8vIDEu
MikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYuIEl0IGlzIHN1cHBvc2VkIHRv
IG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBhbmQgZGFya2VyIHRoZSBzdHJv
a2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0LngoKSwgcmVjdC55KCkgKyB2ZXJ0
aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0JhckhlaWdodCk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJS
YWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0
IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwogICAgIFJlZlB0
cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0g
MS41KSk7CkBAIC05ODYsNyArOTg3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxl
VXBsb2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKIAogICAg
ICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGlj
b24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJh
Y2tncm91bmRJbWFnZUNvbG9yID0gYnV0dG9uUmVuZGVyZXIgPyBDb2xvcihidXR0b25SZW5kZXJl
ci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLnJnYigpKSA6IENvbG9yKDIwNi4wZiwgMjA2LjBmLCAyMDYuMGYpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3Qs
IGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIHBpY3R1cmVG
cmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFt
ZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBw
aWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsKQEAgLTEwMDcs
NyArMTAwOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNv
cmF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgLy8gRm9y
ZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplLCBjb3JuZXJTaXplKSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCB0
aHVtYm5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmYWQzMWM2YjY1MGY0NTcwYjM3MThiZmIzNGQ1
ZmNjZTBlNzEyZTU5Li5kYWQxMmI5ZmU3ODQxMjQ0ZWI2MWE0ZGQxY2I1YTA1Y2Q0OWY4Y2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuaCIKICNpbXBvcnQgIkZpbGVMaXN0LmgiCisjaW1wb3J0ICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRDRy5oIgpAQCAtMTE0Myw3ICsxMTQ0LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW4KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOwogCi0gICAgUm91bmRlZFJlY3QgYm9yZGVyID0gby0+c3R5bGUoKS5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHIsICZvLT52aWV3KCkpOworICAgIEZsb2F0Um91bmRlZFJlY3Qg
Ym9yZGVyID0gRmxvYXRSb3VuZGVkUmVjdChvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Io
ciwgJm8tPnZpZXcoKSkpOwogICAgIGludCByYWRpdXMgPSBib3JkZXIucmFkaWkoKS50b3BMZWZ0
KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CkBAIC0xMTc3LDcgKzExNzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpw
YWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bgogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
dG9wR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWko
KS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6
ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9yZGVyLnJhZGlpKCku
dG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUo
KSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAg
ICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAg
ICAgfQpAQCAtMTE4NSw3ICsxMTg2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBp
ZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKICAgICAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChi
b3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0
b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAg
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKICAgICB9CkBAIC0x
NDE0LDcgKzE0MTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgogICAgICAgICBtYWluU2hh
ZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShi
b3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5t
YXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6
ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CiAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKaW5kZXggMjVjOTY2ODc1Y2U2MjgxZTdj
ZGNiMzUzZTEyNjY5YmI4ZDA0MjcxYS4uNTY4N2VjODAxZmQ0NzZiZmE4ODVkMjU5MTViNjBmODM1
MGI1YmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hT
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5j
cHAKQEAgLTE1NiwxOCArMTU2LDExIEBAIGJvb2wgQm94U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRl
cnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFJvdW5kZWRSZWN0KFBhdGgmIHBhdGgsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
KQotewotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRp
aS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCksIFBh
dGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKLX0KLQogdm9pZCBCb3hTaGFwZTo6YnVpbGRE
aXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QKIHsKLSAgICBhZGRSb3VuZGVk
UmVjdChwYXRocy5zaGFwZSwgbV9ib3VuZHMucmVjdCgpLCBtX2JvdW5kcy5yYWRpaSgpKTsKLSAg
ICBpZiAoc2hhcGVNYXJnaW4oKSkgewotICAgICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBt
YXJnaW5Cb3VuZHMgPSBzaGFwZU1hcmdpbkJvdW5kcygpOwotICAgICAgICBhZGRSb3VuZGVkUmVj
dChwYXRocy5tYXJnaW5TaGFwZSwgbWFyZ2luQm91bmRzLnJlY3QoKSwgbWFyZ2luQm91bmRzLnJh
ZGlpKCkpOwotICAgIH0KKyAgICBwYXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywg
UGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIGlmIChzaGFwZU1hcmdpbigpKQor
ICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVjdChzaGFwZU1hcmdpbkJvdW5k
cygpLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwCmluZGV4IGRhODg3ZTQ3MmM1MWZkY2Q4NDAzMjRjYmY5NmEzNDkxYjM0NWI2M2MuLmQ1MmRj
YmE4ZDYxNTUwZTI0YzhhMzAzOTZjOTA3YTQ0NjQyNDkwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNs
dWRlICJSZW5kZXJCb3guaCIKQEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEJhc2ljU2hhcGVJbnNl
dDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgbGVmdCA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9sZWZ0LCBib3VuZGluZ0JveC53aWR0aCgpKTsKICAgICBmbG9hdCB0b3AgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1fdG9wLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgcGF0aC5hZGRS
b3VuZGVkUmVjdCgKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHIgPSBGbG9hdFJvdW5kZWRSZWN0KAog
ICAgICAgICBGbG9hdFJlY3QoCiAgICAgICAgICAgICBsZWZ0ICsgYm91bmRpbmdCb3gueCgpLAog
ICAgICAgICAgICAgdG9wICsgYm91bmRpbmdCb3gueSgpLApAQCAtMzY3LDYgKzM2OCw3IEBAIHZv
aWQgQmFzaWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0b21MZWZ0UmFk
aXVzLCBib3VuZGluZ0JveCksCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0
b21SaWdodFJhZGl1cywgYm91bmRpbmdCb3gpCiAgICAgKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KHIpOwogfQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNTY2
MjY0ZTgxZmM4NDU1MDI4MTAzZjY4YjAxZWYzMzNlNjEyNTZlYS4uMGM1NTExZWM2ODFkZTVkNDc2
YWI3NGU3YWYxMGVhOTBmYWZkYTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxBcHBs
aWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSb3VuZGVkUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRHJhdyBndXR0ZXIKICAgICBJbnRTaXpl
IHJhZGl1cyhtX3JlY3QuaGVpZ2h0KCkgLyAyLCBtX3JlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChtX3JlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVz
LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSwgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgYnV0dG9uCiAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtMTc2LDcgKzE3Nyw4IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50
JiBwb2ludCwgYm9vbCBzdGFydCkKICAgICBtX2J1dHRvblBvc2l0aW9uID0gbWF4KDAsIG1pbiht
X3JlY3Qud2lkdGgoKSAtIG1fYnV0dG9uU2l6ZSwgcG9pbnQueCgpIC0gbV9kcmFnU3RhcnRPZmZz
ZXQpKTsKIH0KIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKK2NsYXNzIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVibGljIAorUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KIApAQCAtNDkxLDkgKzQ5Myw5IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdygpCiAgICAgSW50U2l6ZSBpbm5l
clJhZGl1cyhib3JkZXJSYWRpdXMgLSBib3JkZXJUaGlja25lc3MsIGJvcmRlclJhZGl1cyAtIGJv
cmRlclRoaWNrbmVzcyk7CiAgICAgSW50UmVjdCBpbm5lclJlY3QoYm9yZGVyVGhpY2tuZXNzLCBi
b3JkZXJUaGlja25lc3MsIHdpbmRvd1dpZHRoIC0gYm9yZGVyVGhpY2tuZXNzICogMiwgd2luZG93
SGVpZ2h0IC0gYm9yZGVyVGhpY2tuZXNzICogMik7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChvdXRlclJlY3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91
dGVyUmFkaXVzLCBDb2xvcihib3JkZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJSZWN0LCBvdXRl
clJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cyksIENvbG9yKGJv
cmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qo
aW5uZXJSZWN0LCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJh
ZGl1cywgQ29sb3IoYmFja2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVy
UmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzKSwgQ29sb3IoYmFj
a2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IHRoZSB3
aWRnZXRzCiAgICAgbV9wbGF5UGF1c2VCdXR0b24uZHJhdyhjb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225658</attachid>
            <date>2014-03-03 08:52:56 -0800</date>
            <delta_ts>2014-03-03 12:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140303085253.patch</filename>
            <type>text/plain</type>
            <size>80757</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMGI4YmQ2MGZiNWZjZTEwZDBiOTA3NDkyMjRlMWUy
YzEzYTMzZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVk
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmFkaWlGcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzMzRlODIxNThjNjhjNmM2YzBmMTUx
YTEzOWRjYjBkMjY5NzAwYWMuLjI5YzdjMDVhMmI4NTFmMGI5MjE0ZmY2MDIyZGEyOTFhMDZlNDI5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0wMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzog
TWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9hdFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBj
bGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3KToKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorCiAyMDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0
ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApp
bmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4MmM5NDM0N2QzLi5jZGZjZTA3OGYy
ZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTI0Miw3ICsx
MjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSB0aHVtYlJlY3QoMywgMyk7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRodW1iQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0KSwg
bV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNmNTAyYjRlNGM0OTk5MjQ2MjhiNGI0
MThiZmY2Li44ODQ5YTgxMzdkZGU4MTQzYjI5NTMzZjI5NzhjZDEwNjYyMzA3ZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGbG9hdFJv
dW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQorICAg
IDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRpaShyZWN0LnJhZGlpKCkpCit7Cit9
CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KQogewpAQCAtMTM3LDQgKzE0MywxMiBAQCBib29sIEZsb2F0Um91bmRlZFJlY3Q6OnhJbnRl
cmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WAogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIEZsb2F0Um91bmRlZFJlY3Q6OmlzUmVuZGVyYWJsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlp
LnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkuYm90
dG9tTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA8PSBtX3Jl
Y3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS5i
b3R0b21MZWZ0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0LmhlaWdodCgpCisgICAgJiYgbV9yYWRpaS50
b3BSaWdodCgpLmhlaWdodCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1f
cmVjdC5oZWlnaHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZi
ZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRlM2Y5YzIyMTNiOTJkY2QuLjk1YmY1MjY3MTJmYWJhMDMw
MDU1OTA1NjQ3NTI4MWJiMDk4NjZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4cGxpY2l0IEZsb2F0Um91bmRlZFJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIEZsb2F0Um91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpOwogCkBAIC0xMTUsNiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gRmxvYXRSZWN0KG1fcmVjdC5tYXhYKCkgLSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSwgbV9yZWN0Lm1heFkoKSAtIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgbV9y
YWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCksIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQo
KSk7CiAgICAgfQogCisgICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKICAgICBib29sIHhJ
bnRlcmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WElu
dGVyY2VwdCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2YjRkN2E5YTNkNzJlZGMz
MjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzLi5lMTU3NzA4Y2EyYjA1NWFmZjk5YzlkNTI0ZTQ4Yzhh
NzUwYzlkNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC02ODEsMzQgKzY4MiwxNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGNsaXAoRmxvYXRSZWN0
KHJlY3QpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXJlY3QuaXNSb3VuZGVkKCkpIHsK
LSAgICAgICAgY2xpcChyZWN0LnJlY3QoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBjbGlwKHBh
dGgpOwogfQogCi0vLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEg
c3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXpl
IHJhZGlpLgotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodCwKLSAgICBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICBjbGlwKHBh
dGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc2OSwxOCArNzUzLDE4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0
b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHJl
Y3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0
ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwotICAgICAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5y
ZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCBy
ZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29s
b3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChyZWN0LCBj
b2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgp
LCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9kZSk7CiB9
CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBhOWJmNWQwMDRj
ZTExYmFjYTcwNzE5NjIwNDZkOTgzNGNlMmUwZmU1Li40OTk2MDkyMWMyYWQyNzkzN2JiYTg0YjM2
YzYwYmYzOWZiNDUwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNzUsNiArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZl
cjsKKyAgICBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEdyYWRpZW50OwogICAg
IGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
ICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAg
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0g
ICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpOworICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIApAQCAtMzI3LDEzICszMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmKTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1z
IG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxv
YXRTaXplIHJhZGlpLgotICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdo
dCk7CisgICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
KTsKIAogICAgICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZv
aWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CisgICAgICAgIHZvaWQg
Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252
ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlh
bGlhcyA9IHRydWUpOwogICAgICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgY29uc3QgRmxvYXRSZWN0Jik7CkBAIC01NzAsNiArNTY3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgICAgIHZvaWQgcGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwog
CisgICAgICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGE7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5k
ZXggODhkNDUzYzNhNDM2OGY0MzkzZDkyNDkyN2Y2MjQwMjU1Nzc1MjEzZi4uMDkxNjhlNTg2ZmE2
NWY5ZjNkNTBkZWIzMmY1ZjY3ZWRhYTgwNmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC05MSwxMSArOTIsNiBAQCBmbG9hdCBQYXRoOjpu
b3JtYWxBbmdsZUF0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgYm9vbCYgb2spIGNvbnN0CiAgICAgcmV0
dXJuIHRyYXZlcnNhbFN0YXRlLm1fbm9ybWFsQW5nbGU7CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91
bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHIpCi17Ci0gICAgYWRkUm91bmRlZFJlY3Qoci5y
ZWN0KCksIHIucmFkaWkoKS50b3BMZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCByLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci19Ci0KIHZvaWQgUGF0
aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7CiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQpAQCAtMTA1LDcgKzEwMSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgRmxvYXRTaXplIGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0
KCkgLyAyKTsKIAogICAgIC8vIEFwcGx5IHRoZSBTVkcgY29ybmVyIHJhZGl1cyBjb25zdHJhaW50
cywgcGVyIHRoZSByZWN0IHNlY3Rpb24gb2YgdGhlIFNWRyBzaGFwZXMgc3BlYzogaWYKLSAgICAv
LyBvbmUgb2YgcngscnkgaXMgbmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMg
dmFsdWUgaXMgdXNlZC4gSWYgYm90aCB2YWx1ZXMgYXJlIAorICAgIC8vIG9uZSBvZiByeCxyeSBp
cyBuZWdhdGl2ZSwgdGhlbiB0aGUgb3RoZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJ
ZiBib3RoIHZhbHVlcyBhcmUKICAgICAvLyBuZWdhdGl2ZSB0aGVuIHJ4ID0gcnkgPSAwLiBJZiBy
eCBpcyBncmVhdGVyIHRoYW4gaGFsZiBvZiB0aGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZQogICAg
IC8vIHRoZW4gc2V0IHJ4IHRvIGhhbGYgb2YgdGhlIHdpZHRoOyByeSBpcyBoYW5kbGVkIHNpbWls
YXJseS4KIApAQCAtMTIxLDM2ICsxMTcsMzkgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAg
ICBpZiAocmFkaXVzLmhlaWdodCgpID4gaGFsZlNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJhZGl1
cy5zZXRIZWlnaHQoaGFsZlNpemUuaGVpZ2h0KCkpOwogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRS
ZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgc3RyYXRlZ3kpOworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSwgc3RyYXRlZ3kpOwogfQogCi12b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0
U3RyYXRlZ3kgc3RyYXRlZ3kpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHIsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7Ci0gICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHJlY3Qud2lkdGgoKSA8IHRvcExlZnRSYWRpdXMud2lkdGgoKSArIHRvcFJpZ2h0
UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8IHJlY3Qud2lkdGgoKSA8IGJvdHRvbUxlZnRS
YWRpdXMud2lkdGgoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8
IHJlY3QuaGVpZ2h0KCkgPCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpICsgYm90dG9tTGVmdFJhZGl1
cy5oZWlnaHQoKQotICAgICAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHRvcFJpZ2h0UmFkaXVz
LmhlaWdodCgpICsgYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpIHsKKyAgICBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByLnJhZGlpKCk7CisgICAgY29uc3QgRmxvYXRS
ZWN0JiByZWN0ID0gci5yZWN0KCk7CisKKyAgICBpZiAocmVjdC53aWR0aCgpIDwgcmFkaWkudG9w
TGVmdCgpLndpZHRoKCkgKyByYWRpaS50b3BSaWdodCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVj
dC53aWR0aCgpIDwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgKyByYWRpaS5ib3R0b21SaWdo
dCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHJhZGlpLnRvcExlZnQoKS5o
ZWlnaHQoKSArIHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKQorICAgICAgICB8fCByZWN0Lmhl
aWdodCgpIDwgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSArIHJhZGlpLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkpIHsKICAgICAgICAgLy8gSWYgYWxsIHRoZSByYWRpaSBjYW5ub3QgYmUgYWNjb21t
b2RhdGVkLCByZXR1cm4gYSByZWN0LgogICAgICAgICBhZGRSZWN0KHJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cywgc3RyYXRlZ3kpOwotfQotCi12b2lkIFBhdGg6OmFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFk
aXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3VuZGVkUmVjdFN0cmF0
ZWd5IHN0cmF0ZWd5KQotewogICAgIGlmIChzdHJhdGVneSA9PSBQcmVmZXJOYXRpdmVSb3VuZGVk
UmVjdCkgewogI2lmIFVTRShDRykKLSAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMs
IGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21M
ZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICB9CiAKLSAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50
b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworfQor
Cit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQoreworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocikpOwogfQogCiAvLyBBcHByb3hpbWF0
aW9uIG9mIGNvbnRyb2wgcG9pbnQgcG9zaXRpb25zIG9uIGEgYmV6aWVyIHRvIHNpbXVsYXRlIGEg
cXVhcnRlciBvZiBhIGNpcmNsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAppbmRleCA1NWYwZjZlMmVhYjc1NDgwNjJjMmUzZTFiY2JhMTQ3ZTQ2ZWM3OWE2Li4zZDNmYTE3
YWNlMDQ1M2Y4MzliNDM2MDBjNTQwNDZiZjkyZWUyN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBj
bGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBG
bG9hdFNpemU7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIFJvdW5kZWRS
ZWN0OwpAQCAtMTI5LDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfTsK
IAogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2
ZVJvdW5kZWRSZWN0KTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5h
dGl2ZVJvdW5kZWRSZWN0KTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRS
ZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwog
CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTQzLDcgKzE0
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseSh2b2lkKiBpbmZv
LCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAgICAgICAgdm9pZCBhZGRQYXRoRm9yUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3Ry
YXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CiAgICAgICAgIHZvaWQgYWRkQmV6aWVy
c0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsK
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAppbmRleCBkNzI3MzI0ZTc3NGY2MGY5ZTNhZTlmZDYxOTk2Y2M2M2IyZjg4
ZTYxLi4wZGJhNDhjNDk4MWViNTA3ODdjNzI4NzY4OWU0YjVkOWJkZTFjOWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIK
IAorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogCkBAIC0yMzYsNCArMjM3LDkgQEAgYm9vbCBSb3Vu
ZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCitGbG9hdFJvdW5kZWRSZWN0IFJvdW5kZWRSZWN0OjpwaXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25z
dAoreworICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KHJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByYWRpaSgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmgKaW5kZXggNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5MDVlZjgwNS4uM2U2
MmQzODJiZGUxYzk4NzUyN2MxYTBkMmY2YTNiYTVhNTU3YjgyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC0zMyw2ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIExh
eW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGZvciBjb252ZXggcXVhZHMuCiAgICAgYm9vbCBp
bnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKIAorICAgIEZsb2F0Um91bmRl
ZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiAgICAg
UmFkaWkgbV9yYWRpaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKaW5kZXggZDY3NTIyOGJiYmViZDlhYWQyZmM3NjJkZDRmMjMyM2NlODJhZTA4
MS4uMTFhNWY5ZjAyZDY0ZDUzNTJmZjliMGZhZTg2MjM5MzIyYzBiOWQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTUwOSw5ICs1
MDksOSBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBy
YWRpdXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZQogICAgICAgICAgICAgICAgICAgIHRlbXBs
YXRlU2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2UpOwogfQogCi12b2lkIFNoYWRv
d0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0
KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGdyYXBoaWNzQ29udGV4dC0+Y2xpcEJvdW5k
cygpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LnJlY3QoKSwgZ3JhcGhpY3NDb250ZXh0LT5j
bGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTUyMCwyMyArNTIwLDI0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAgICAg
Ly8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQyCiAg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQo
KSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCBsYXllclJlY3Qp
OworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBz
aGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJ
bnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0
ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHJhZGlpKTsKKyAgICBJbnRTaXpl
IHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0
KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBzaGFkb3dlZFJlY3Qud2lkdGgo
KSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBzaGFkb3dlZFJlY3QuaGVpZ2h0KCkKKyAgICBp
ZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiByZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhl
aWdodCgpID4gcmVjdC5oZWlnaHQoKQogICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkg
KiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX3NvdXJjZVJlY3Qud2lkdGgoKSAqIG1fc291cmNl
UmVjdC5oZWlnaHQoKSkpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdy
YXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5ZXJSZWN0KTsKKyAgICAgICAg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0
LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgdGVtcGxh
dGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgc2hhZG93ZWRSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSkKK3ZvaWQgU2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewog
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhp
Y3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYg
KGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NDcsMzMgKzU0OCwzNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgIC8vIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcgZG9lcyBub3Qgd29y
ayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCkucHJlc2Vy
dmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hhZG93KSB7Ci0gICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0
VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VT
aXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRn
ZVNpemUsIGhvbGVSYWRpaSk7CisgICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1w
bGF0ZVNpemUoZWRnZVNpemUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVj
dCYgaFJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRo
KCkgPiBob2xlUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhvbGVSZWN0
LmhlaWdodCgpCi0gICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6
ZS5oZWlnaHQoKSA+IGhvbGVSZWN0LndpZHRoKCkgKiBob2xlUmVjdC5oZWlnaHQoKSkpIHsKLSAg
ICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7CisgICAgaWYgKHRlbXBsYXRlU2l6ZS53
aWR0aCgpID4gaFJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBoUmVjdC5o
ZWlnaHQoKQorICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgPiBoUmVjdC53aWR0aCgpICogaFJlY3QuaGVpZ2h0KCkpKSB7CisgICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRyYXdJbnNldFNo
YWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlp
LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUp
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJl
Y3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0
LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCA9IHNoYWRvd2VkUmVjdDsKKyAg
ICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QgPSBzaGFkb3dlZFJlY3QucmVj
dCgpOwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0Lm1vdmUobV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIg
aWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJl
ZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVl
cyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVy
UmVsYXRpdmVTaGFkb3dlZFJlY3QsIHJhZGlpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
bV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJl
bGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwog
ICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC01ODIsMTEgKzU4NCwx
MSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgaWYgKHJhZGlp
LmlzWmVybygpKQotICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRS
ZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQorICAgICAg
ICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRSZWN0LnJlY3QoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICAgICAgcGF0aC5hZGRS
b3VuZGVkUmVjdChzaGFkb3dlZFJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQo
KSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0KTsKICAgICAgICAgICAgIHNoYWRvd0Nv
bnRleHQtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAgLTU5OCw3ICs2MDAsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVk
dWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
Cit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAg
ICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVy
KGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjA3LDExICs2
MDksMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIEZsb2F0UmVjdCBidWZmZXJSZWxh
dGl2ZVJlY3QgPSByZWN0OwogICAgIGJ1ZmZlclJlbGF0aXZlUmVjdC5tb3ZlKG1fbGF5ZXJDb250
ZXh0VHJhbnNsYXRpb24pOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3Qg
PSBob2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCA9IGhvbGVS
ZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0Lm1vdmUobV9sYXllckNvbnRl
eHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZm
ZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hh
ZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSYWRpaSk7
CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBo
b2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OwpAQCAtNjIyLDEwICs2MjQsMTAgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgICAg
IFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICBpZiAoaG9s
ZVJhZGlpLmlzWmVybygpKQotICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGhvbGVSZWN0KTsKKyAg
ICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisgICAgICAgICAgICBwYXRoLmFk
ZFJlY3QoaG9sZVJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgaG9sZVJhZGlpLnRvcExlZnQoKSwgaG9sZVJhZGlpLnRv
cFJpZ2h0KCksIGhvbGVSYWRpaS5ib3R0b21MZWZ0KCksIGhvbGVSYWRpaS5ib3R0b21SaWdodCgp
KTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QpOwogCiAgICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtNjcxLDcgKzY3Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgdGhlIHNo
YWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VT
aXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1f
bGF5ZXJJbWFnZSkKQEAgLTY4Miw3ICs2ODQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwg
ZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndp
ZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAK
ICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBj
b250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNj
cmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCByYWRpaSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29s
b3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQg
PSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTY5MywxMCArNjk1LDEwIEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJl
Y3QodGVtcGxhdGVCb3VuZHMpOwotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAg
IGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlSG9sZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QodGVtcGxhdGVIb2xlLCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJh
ZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVIb2xlLCBob2xlUmVjdC5y
YWRpaSgpKSk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAKQEAg
LTcxMSw3ICs3MTMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCBi
b3VuZGluZ1JlY3QgPSByZWN0OwogICAgIGJvdW5kaW5nUmVjdC5tb3ZlKG9mZnNldCk7CiAKLSAg
ICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3Q7CisgICAgRmxvYXRSZWN0IGRlc3RI
b2xlUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsKICAgICBkZXN0SG9sZVJlY3QubW92ZShvZmZzZXQp
OwogICAgIEZsb2F0UmVjdCBkZXN0SG9sZUJvdW5kcyA9IGRlc3RIb2xlUmVjdDsKICAgICBkZXN0
SG9sZUJvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53aWR0aCgpKTsKQEAgLTczMCwxMyArNzMyLDEz
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Zmls
bFBhdGgoZXh0ZXJpb3JQYXRoKTsKICAgICB9CiAgICAgCi0gICAgZHJhd0xheWVyUGllY2VzKGdy
YXBoaWNzQ29udGV4dCwgZGVzdEhvbGVCb3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVT
aXplLCBJbm5lclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwg
ZGVzdEhvbGVCb3VuZHMsIGhvbGVSZWN0LnJhZGlpKCksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUs
IElubmVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IElu
dFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNo
YXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1fbGF5ZXJJ
bWFnZSkKQEAgLTc0NSw3ICs3NDcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIEZs
b2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdl
U2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgo
KSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAg
IC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRl
bnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRj
aEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgcmFkaWksIG1fbGF5ZXJTaXplKTsK
KyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxh
dGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgaWYgKHJl
ZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRoZSBJbWFnZUJ1ZmZl
ci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdl
LT5jb250ZXh0KCk7CkBAIC03NTQsMTEgKzc1NiwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
cwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBs
YXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgc2hhZG93
Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIAotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAgIGlmIChzaGFk
b3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZp
bGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRo
IHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHRlbXBsYXRlU2hhZG93LCBy
YWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFk
aWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpKSk7CiAgICAg
ICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCkBAIC03
NzAsMTIgKzc3MiwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgICAgICBvZmZzZXQu
c2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7CiAg
ICAgfQogCi0gICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd2VkUmVjdDsKKyAgICBG
bG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93ZWRSZWN0LnJlY3QoKTsKICAgICBzaGFkb3dC
b3VuZHMubW92ZShvZmZzZXQpOwogICAgIHNoYWRvd0JvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53
aWR0aCgpKTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVkoZWRnZVNpemUuaGVpZ2h0KCkpOwog
Ci0gICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCByYWRp
aSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOworICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5kcywgc2hhZG93ZWRSZWN0LnJhZGlpKCks
IGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFn
ZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVy
UHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aAppbmRleCA5NTllMTdlODliNjhjMjgwMjAzMmU1YTljMWY5NDk0OTBmMGI3YzUyLi44MTgwMzU1
Zjc0ODliODJmNGVhOWViYzFhMWQxZjU5M2U1ZGExZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoK
ICAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0Kik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJik7Ci0g
ICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29u
c3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToK
ICAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAg
ICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUp
OworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0
IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lk
IGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJs
dXJyZWRFZGdlU2l6ZSk7CiAgICAgCiAgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IDFkZGY2MGYyNTc1NGQxNTI4YWIwY2Q0Yjk1OWNmZDNlNTJlNGVk
NjMuLjdlNDcyODMxYmVjMDAxOWM1NzI0MDZjN2U3OGNkZmE2ZThmZDNhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJEcmF3RXJy
b3JVbmRlcmxpbmUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NjAs
NyArNDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1
cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LCBjb2xvcik7CiB9CkBAIC0xMDI4LDMxICsxMDI4LDMx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAg
ICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEZs
b2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQoY3IsIHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yKTsK
ICAgICBjYWlyb19maWxsKGNyKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodGhpcy0+bXVzdFVzZVNoYWRvd0JsdXIoKSkKLSAgICAgICAgcGxhdGZvcm1D
b250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAyNGQxMWY5MDUyMzc1NjQ4NWJlZjM3NTUzNzc2ZmQ4
ZDEyMTk2ZTllLi4xMmRlNTVhNjhmZWVhMjhlMGFmZDczMzJiZGUyODk3MDdkYmQ1MWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCkBAIC04MDYsNyArODA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRT
aGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwor
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJl
Y3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3Qp
OwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0
OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBG
bG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChj
b250ZXh0LCByZWN0KTsKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
UwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTg2NSwxNyArODY1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkp
OworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwogICAg
IH0KIAotICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdC53aWR0aCgpID09IHRvcFJpZ2h0
LndpZHRoKCkgJiYgdG9wUmlnaHQud2lkdGgoKSA9PSBib3R0b21MZWZ0LndpZHRoKCkgJiYgYm90
dG9tTGVmdC53aWR0aCgpID09IGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAgIGJvb2wgZXF1YWxI
ZWlnaHRzID0gKHRvcExlZnQuaGVpZ2h0KCkgPT0gYm90dG9tTGVmdC5oZWlnaHQoKSAmJiBib3R0
b21MZWZ0LmhlaWdodCgpID09IHRvcFJpZ2h0LmhlaWdodCgpICYmIHRvcFJpZ2h0LmhlaWdodCgp
ID09IGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0
LnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0
LnJhZGlpKCk7CisgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgo
KSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgp
ID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0
aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgYm9vbCBlcXVhbEhlaWdo
dHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5o
ZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkpOwogICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRp
ZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVx
dWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiB0b3BMZWZ0LndpZHRoKCkgKiAyID09IHJlY3Qu
d2lkdGgoKSAmJiB0b3BMZWZ0LmhlaWdodCgpICogMiA9PSByZWN0LmhlaWdodCgpKQotICAgICAg
ICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByZWN0KTsKKyAgICBpZiAoIWhh
c0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExl
ZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgp
ICogMiA9PSByLmhlaWdodCgpKQorICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChj
b250ZXh0LCByKTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7CiAgICAgICAgIGZp
bGxQYXRoKHBhdGgpOwogICAgIH0KIApAQCAtODg2LDcgKzg4OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRvCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwg
b2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3Vu
ZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmQKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBs
YXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVj
dC5yYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywg
cmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAKICAgICBmaWxsUGF0aChwYXRoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA4Mjk5ZDYzNGFlYjJkZGRjYWFlOTMxZTYx
MWMzZDA2ODY2OWE2ODY2Li5lMGQzMjkxNjQwMjMxNjk5ZGE1MDdmMDY1OGE2NzkzMzVkMjZkMDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFw
aGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkdESUV4dHJhcy5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0xMTUwLDcgKzEx
NTEsOCBAQCBzdGF0aWMgaW5saW5lIEludFBvaW50IHJlY3RDZW50ZXJQb2ludChjb25zdCBSRUNU
JiByZWN0KQogewogICAgIHJldHVybiBJbnRQb2ludChyZWN0LmxlZnQgKyAocmVjdC5yaWdodCAt
IHJlY3QubGVmdCkgLyAyLCByZWN0LnRvcCArIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIDIp
OwogfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKwordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgYywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIFNj
b3BlRENQcm92aWRlciBkY1Byb3ZpZGVyKG1fZGF0YSk7CiAgICAgaWYgKCFtX2RhdGEtPm1fZGMp
CkBAIC0xMTYzLDE2ICsxMTY1LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAgICAg
IAogICAgIGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKICAgICAKKyAgICBjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0ID0g
cmVjdC5yZWN0KCk7CiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCiAgICAg
ZHN0UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNoYWRvd09mZnNldC53aWR0aCgpKSwgc3RhYmxlUm91
bmQoc2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7CiAgICAgZHN0UmVjdC5pbmZsYXRlKHN0YWJsZVJv
dW5kKHNoYWRvd0JsdXIpKTsKICAgICBkc3RSZWN0ID0gbV9kYXRhLT5tYXBSZWN0KGRzdFJlY3Qp
OwogICAKLSAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUodG9wTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNpemUodG9wUmlnaHQpKTsK
LSAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1hcFNpemUoYm90dG9tTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUoYm90dG9tUmln
aHQpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRp
aSgpLnRvcExlZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNp
emUocmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKKyAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVm
dChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSkpOworICAgIEZsb2F0
U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbVJp
Z2h0KCkpKTsKIAogICAgIFRyYW5zcGFyZW50TGF5ZXJEQyB0cmFuc3BhcmVudERjKG1fZGF0YSwg
ZHN0UmVjdCwgJmZpbGxSZWN0KTsKICAgICBIREMgZGMgPSB0cmFuc3BhcmVudERjLmhkYygpOwpA
QCAtMTIyMyw3ICsxMjI2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUKICAgICBTZWxlY3RP
YmplY3QoZGMsIG9sZEJydXNoKTsKIH0KIAotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Jv
dW5kQ29ybmVyKGJvb2wgbmVlZHNOZXdDbGlwLCBSRUNUIGNsaXBSZWN0LCBSRUNUIHJlY3RXaW4s
IEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICghZGMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBjNDY5ZTQy
MDZkNjhmYjFlNzczZWI0OTZiZTk5YTFhYzQxOWZiYjZlLi4xODlhN2U1YzU1YTU1ZWY1ZTFkMjVk
Y2I2MTdkZWQxZTI5MDg5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTU3MCw5ICs1NzAsOSBAQCBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYgogfQogI2VuZGlmCiAKLXN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpIGJvcmRlclJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAorICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSgKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCku
aW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKS5pbnRWYWx1
ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0
aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpLmlu
dFZhbHVlKCkpLAogICAgICAgICBJbnRTaXplKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhl
aWdodCgpLmludFZhbHVlKCkpLApAQCAtNjA1LDcgKzYwNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpCiAgICAgICAgIHJhbmdlUmVjdC5zZXRXaWR0aChsZW5ndGhSYXRpbyAqIHRvdGFsVHJh
Y2tXaWR0aCk7CiAgICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIHJhbmdlUmVjdC5tb3Zl
KHN0YXJ0UmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgsIDApOwotICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoUm91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShz
dHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29s
b3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CkBAIC02MTUsNyAr
NjE1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWkKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9ICZv
LT5zdHlsZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoUm91bmRl
ZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHIsIGJv
cmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uCiAgICAg
dm9sdW1lUmVjdC5tb3ZlKDAsIHJlY3RIZWlnaHQgLSB0cmFja0hlaWdodCk7CiAgICAgdm9sdW1l
UmVjdC5zZXRIZWlnaHQoY2VpbCh0cmFja0hlaWdodCkpOwogCi0gICAgY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0
eWxlKSksCisgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9s
dW1lUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDMxYTMyZTRjM2MwMjUzZTgxNTdlODQ4NWJkMTNi
NWExMWNlZWE0N2UuLmQwZDAyMGUyMTcwYmFiZTU3NzRjZTZiMTY4ZjU5ZjE1M2UzYWQyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgpAQCAtMTk1LDcg
KzE5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9y
IGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwgMTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6
ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCBy
ZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNv
bnRleHQuZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpLCBi
YWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFk
aWkpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogIAogICAgIC8vIERy
YXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1
KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJlZTVhZmJhZWJhODkxMzQxNDU0NGNlNDAuLjJh
ZGEwZmZkMjEzNjgxOGRlMWJiOGVhYjc0NTY1ZDljMGNhMWJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTEyMTEs
NyArMTIxMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgICAgIC8vIGJlZ2lubmlu
ZyB0aGUgbGF5ZXIpLgogICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLmdldFJv
dW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpKTsKICAgICAgICAgc3RhdGVTYXZlci5z
YXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm9yZGVy
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlcikpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKICAgICB9CiAKQEAgLTE2NDgsNyArMTY0OSw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
aXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCkgOiBvdmVy
Zmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKTsK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQsIHNpemUoKSkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91
dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWEwYzJkYzkx
ZWFkZGI2OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMDcwMzNlZjViMDk2ZDA0NmRhOGVkNjg1
ZTYxN2EyNWNiMzE3ODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0
Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTAwLDMxICs1MDEsMzEgQEAgUm91
bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBib3IKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoY2xpcFJlY3Qu
aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChjbGlwUmVj
dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQgcmVj
dCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1cmUg
d2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBSZWN0
LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21S
aWdodCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlwUmVj
dC5yZWN0KCkueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3QoKS55KCkpOwotICAgICAg
ICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOworICAgICAgICAgICAgRmxv
YXRSZWN0IHRvcENvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgp
LCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJl
Y3QucmVjdCgpLnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJl
Y3QucmFkaWkoKS50b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9w
Q29ybmVyUmFkaWkpKTsKIAotICAgICAgICAgICAgSW50UmVjdCBib3R0b21Db3JuZXIocmVjdC54
KCksIHJlY3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0
LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFk
aWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAgICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVy
KHJlY3QueCgpLCByZWN0LnkoKSwgY2xpcFJlY3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCBj
bGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOworICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICBib3R0b21Db3Ju
ZXJSYWRpaS5zZXRCb3R0b21SaWdodChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNv
cm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkp
KTsKICAgICAgICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQo
KS5pc0VtcHR5KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNsaXBSZWN0LnJlY3Qo
KS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBj
bGlwUmVjdC5yZWN0KCkueSgpKTsKLSAgICAgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNs
aXBSZWN0LnJlY3QoKS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVj
dC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsKKyAgICAgICAgICAgIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwogICAgICAgICAgICAgdG9wQ29ybmVyUmFkaWku
c2V0VG9wUmlnaHQoY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJh
ZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKLSAgICAgICAgICAgIEludFJlY3Qg
Ym90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QueSgpLCByZWN0Lm1heFgoKSAt
IGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7
Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAg
ICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3Qu
eSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5t
YXhZKCkgLSByZWN0LnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBi
b3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRv
bUxlZnQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTY1Myw3ICs2NTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3JvdW5kQmxl
ZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVy
ID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgqY29udGV4
dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRFZGdlLCBp
bmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGlmIChib3JkZXIuaXNSZW5kZXJhYmxlKCkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwgYmdDb2xv
ciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciksIGJnQ29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBy
ZWN0LCBib3JkZXIpOwpAQCAtMTk1NiwxMSArMTk1NywxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJl
Y3QmCiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNl
ICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIpOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckJv
cmRlcikpOwogICAgICAgICAvLyBpc1JlbmRlcmFibGUoKSBjaGVjayBhdm9pZHMgaXNzdWUgZGVz
Y3JpYmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODc4Nwog
ICAgICAgICAvLyBUaGUgaW5zaWRlIHdpbGwgYmUgY2xpcHBlZCBvdXQgbGF0ZXIgKGluIGNsaXBC
b3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aCkKICAgICAgICAgaWYgKGlubmVyQm9yZGVyLmlz
UmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRl
ZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckJvcmRlcikpOwogICAgIH0KIAogICAg
IC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9lc24ndCBjcmVhdGUg
c2VhbXMKQEAgLTIwNTMsNyArMjA1NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRy
YXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwg
aW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KGlubmVyQ2xpcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGlubmVyQ2xpcCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0
aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09MSUQsIGJsZWVk
QXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgICAgIH0KIApAQCAtMjA3Miw3ICsyMDczLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xpcCA9IHN0eWxlLT5nZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91dGVyQm9yZGVy
VG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBv
dXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKSk7
CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyUGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwg
c3R5bGUsIGNvbG9yLCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CkBAIC0yMTA0LDcgKzIxMDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94
U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAg
ICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsCiAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBz
aWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjM1Myw3ICsyMzU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCogZ3IKICAgICBCb3hTaWRl
IHNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2UgZWRnZXNbXSkKIHsKICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXAoY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihvdXRlckJvcmRlciwg
ZWRnZXMsIHNpZGUpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChj
YWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxh
dGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOwogfQogCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlSW5mbyhCb3JkZXJFZGdlIGVkZ2VzW10s
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdApAQCAtMjU1Miw3ICsyNTUzLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3RU
b0NsaXBPdXQpKTsKIAogICAgICAgICAgICAgICAgIFJvdW5kZWRSZWN0IGluZmx1ZW5jZVJlY3Qo
c2hhZG93UmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogICAgICAgICAgICAgICAgIGluZmx1ZW5jZVJl
Y3QuZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsK
QEAgLTI1NjIsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAg
ICAgICAgICAgIGZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoZmlsbFJlY3QpLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwpAQCAtMjU5MCw3ICsyNTkx
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgaWYgKGhvbGVSZWN0
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIHNoYWRvd0Nv
bG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpLCBzaGFkb3dDb2xvciwgcy0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGJvcmRlci5yZWN0KCksIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjYzNSw3ICsyNjM2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9y
LCBzLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShvdXRlclJlY3QsIHJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHMtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShvdXRl
clJlY3QsIEZsb2F0Um91bmRlZFJlY3Qocm91bmRlZEhvbGUpLCBmaWxsQ29sb3IsIHMtPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAppbmRleCA5NzJmZjM2MzFiYjVlNjVjZWRlYzQ5OWQ2MzRlODEzYzYyY2Yw
NDM3Li41MDNkNzYxNDY4MTIxNGJkOGU0NDBiNzgxZTI5ZWIzNzNiZDAyM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYwOSw3ICszNjEwLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGMKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
ICYmIGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgaW5Db250
YWluaW5nQmxvY2tDaGFpbih0aGlzLCBsYXllcikpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQ
b2ludCBkZWx0YTsKICAgICAgICAgICAgICAgICBsYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMo
cm9vdExheWVyLCBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExh
eW91dFJlY3QoZGVsdGEsIGxheWVyLT5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChkZWx0YSwgbGF5ZXItPnNp
emUoKSkpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5ZXIgPT0gcm9vdExheWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGZhOTRiOGI3
YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLmVlYzYzMGRiZDA0OThjMWEyODcxY2Ux
NDI4OGU3NjdhZTNmNjAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9y
dCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRm9udENh
Y2hlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtNDUwLDcgKzQ1MSw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKICAgICB9
CiAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkgKyBjbGlwLndpZHRoKCkgLyAy
LjAsIGNsaXAubWF4WSgpKTsKICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRp
ZW50V2l0aE5hbWUoU2hhZGVHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChj
bGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKQEAgLTQ2NSw3ICs0
NjYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKFJl
bmRlck9iamVjdCogYm94LCBjb25zdCBQYWludEluZgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QpKSk7CiAKICAgICAvLyBUaGlzIGdyYWRp
ZW50IGdldHMgZHJhd24gYmxhY2sgd2hlbiBwcmludGluZy4KICAgICAvLyBEbyBub3QgZHJhdyB0
aGUgZ3JhZGllbnQgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0b3AgYm9yZGVyLgpAQCAtNTg1LDkg
KzU4Niw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdCh0aXRsZUNsaXAsIAorICAgICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVD
bGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAs
IDApLAotICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVm
dFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxv
YXRTaXplKDAsIDApKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgdGl0bGVDbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwgdGl0bGVDbGlwLm1heFkoKSksIExpbmVh
ckludGVycG9sYXRpb24pOwogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoU2hpbmVHcmFkaWVudCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwg
dGl0bGVDbGlwLm1heFkoKSksIHRpdGxlQ2xpcC5sb2NhdGlvbigpLCBFeHBvbmVudGlhbEludGVy
cG9sYXRpb24pOwpAQCAtNjA1LDkgKzYwNiw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJ1dHRvbkNsaXAsIAorICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgw
LCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKLSAgICAgICAgICAgIEZsb2F0U2l6
ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSk7CisgICAgICAg
ICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3Jk
ZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgo
KSkpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoYnV0dG9uQ2xpcCwg
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwogCkBAIC03MTYsNyArNzE3LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAKICAgICAgICAgSW50U2l6ZSBjb3JuZXJTaXplKGNvcm5lcldp
ZHRoLCBjb3JuZXJIZWlnaHQpOwotICAgICAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlcih0cmFj
a0NsaXAsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpOwor
ICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6
ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoaW5uZXJCb3JkZXIpOwogCiAgICAgICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CkBAIC04MzIsNyArODMzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jh
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHAKIAogICAgIC8vIDEu
MikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYuIEl0IGlzIHN1cHBvc2VkIHRv
IG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBhbmQgZGFya2VyIHRoZSBzdHJv
a2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0LngoKSwgcmVjdC55KCkgKyB2ZXJ0
aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0JhckhlaWdodCk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJS
YWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0
IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwogICAgIFJlZlB0
cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0g
MS41KSk7CkBAIC05ODYsNyArOTg3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxl
VXBsb2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKIAogICAg
ICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGlj
b24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJh
Y2tncm91bmRJbWFnZUNvbG9yID0gYnV0dG9uUmVuZGVyZXIgPyBDb2xvcihidXR0b25SZW5kZXJl
ci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLnJnYigpKSA6IENvbG9yKDIwNi4wZiwgMjA2LjBmLCAyMDYuMGYpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3Qs
IGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIHBpY3R1cmVG
cmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFt
ZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBw
aWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsKQEAgLTEwMDcs
NyArMTAwOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNv
cmF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgLy8gRm9y
ZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplLCBjb3JuZXJTaXplKSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCB0
aHVtYm5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmYWQzMWM2YjY1MGY0NTcwYjM3MThiZmIzNGQ1
ZmNjZTBlNzEyZTU5Li5kYWQxMmI5ZmU3ODQxMjQ0ZWI2MWE0ZGQxY2I1YTA1Y2Q0OWY4Y2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuaCIKICNpbXBvcnQgIkZpbGVMaXN0LmgiCisjaW1wb3J0ICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRDRy5oIgpAQCAtMTE0Myw3ICsxMTQ0LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW4KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOwogCi0gICAgUm91bmRlZFJlY3QgYm9yZGVyID0gby0+c3R5bGUoKS5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHIsICZvLT52aWV3KCkpOworICAgIEZsb2F0Um91bmRlZFJlY3Qg
Ym9yZGVyID0gRmxvYXRSb3VuZGVkUmVjdChvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Io
ciwgJm8tPnZpZXcoKSkpOwogICAgIGludCByYWRpdXMgPSBib3JkZXIucmFkaWkoKS50b3BMZWZ0
KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CkBAIC0xMTc3LDcgKzExNzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpw
YWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bgogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
dG9wR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWko
KS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6
ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9yZGVyLnJhZGlpKCku
dG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUo
KSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAg
ICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAg
ICAgfQpAQCAtMTE4NSw3ICsxMTg2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBp
ZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKICAgICAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChi
b3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0
b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAg
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKICAgICB9CkBAIC0x
NDE0LDcgKzE0MTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgogICAgICAgICBtYWluU2hh
ZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShi
b3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5t
YXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6
ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CiAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDA4ZGMxMDg3ZWQzMzQ5
NjQ0NWJjNTZlZmVhNzU5MjRmOWRjNDQwZTkuLmZlM2JhNjY1YjMyOWQ5ZWQ3M2MwYWIzOTNiODBh
MDhmNmYzOTdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgpAQCAtNzU1LDcgKzc1Niw3
IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOwogCi0gICAgUm91bmRlZFJlY3QgYm91bmQgPSBvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3Jk
ZXJGb3Iocik7CisgICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZCA9IEZsb2F0Um91bmRlZFJlY3Qo
by0+c3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm91
bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3Bh
Y2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CkBAIC03ODUsMTQgKzc4NiwxNCBAQCB2b2lk
IFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
dG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BS
aWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRp
ZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5kLnJhZGlpKCkudG9wUmlnaHQoKSwg
SW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0
LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwog
CiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBi
b3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUo
KSwgSW50U2l6ZSgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm91bmQucmFkaWkoKS5i
b3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50
U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CiAgICAgfQpAQCAtOTU2LDcgKzk1Nyw3IEBAIGNvbnN0IGludCB0cmFja1JhZGl1cyA9
IDI7CiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAg
ICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBSb3VuZGVk
UmVjdCBib3VuZHMociwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKKyAgICBGbG9h
dFJvdW5kZWRSZWN0IGJvdW5kcyhyLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpOwog
CiAgICAgaWYgKG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpID09ICBTbGlkZXJIb3Jpem9udGFsUGFy
dCkKICAgICAgICAgYm91bmRzLnNldFJlY3QoSW50UmVjdChyLngoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKaW5kZXggMjVjOTY2ODc1Y2U2MjgxZTdj
ZGNiMzUzZTEyNjY5YmI4ZDA0MjcxYS4uNTY4N2VjODAxZmQ0NzZiZmE4ODVkMjU5MTViNjBmODM1
MGI1YmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hT
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5j
cHAKQEAgLTE1NiwxOCArMTU2LDExIEBAIGJvb2wgQm94U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRl
cnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFJvdW5kZWRSZWN0KFBhdGgmIHBhdGgsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
KQotewotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRp
aS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCksIFBh
dGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKLX0KLQogdm9pZCBCb3hTaGFwZTo6YnVpbGRE
aXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QKIHsKLSAgICBhZGRSb3VuZGVk
UmVjdChwYXRocy5zaGFwZSwgbV9ib3VuZHMucmVjdCgpLCBtX2JvdW5kcy5yYWRpaSgpKTsKLSAg
ICBpZiAoc2hhcGVNYXJnaW4oKSkgewotICAgICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBt
YXJnaW5Cb3VuZHMgPSBzaGFwZU1hcmdpbkJvdW5kcygpOwotICAgICAgICBhZGRSb3VuZGVkUmVj
dChwYXRocy5tYXJnaW5TaGFwZSwgbWFyZ2luQm91bmRzLnJlY3QoKSwgbWFyZ2luQm91bmRzLnJh
ZGlpKCkpOwotICAgIH0KKyAgICBwYXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywg
UGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIGlmIChzaGFwZU1hcmdpbigpKQor
ICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVjdChzaGFwZU1hcmdpbkJvdW5k
cygpLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwCmluZGV4IGRhODg3ZTQ3MmM1MWZkY2Q4NDAzMjRjYmY5NmEzNDkxYjM0NWI2M2MuLmQ1MmRj
YmE4ZDYxNTUwZTI0YzhhMzAzOTZjOTA3YTQ0NjQyNDkwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNs
dWRlICJSZW5kZXJCb3guaCIKQEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEJhc2ljU2hhcGVJbnNl
dDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgbGVmdCA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9sZWZ0LCBib3VuZGluZ0JveC53aWR0aCgpKTsKICAgICBmbG9hdCB0b3AgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1fdG9wLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgcGF0aC5hZGRS
b3VuZGVkUmVjdCgKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHIgPSBGbG9hdFJvdW5kZWRSZWN0KAog
ICAgICAgICBGbG9hdFJlY3QoCiAgICAgICAgICAgICBsZWZ0ICsgYm91bmRpbmdCb3gueCgpLAog
ICAgICAgICAgICAgdG9wICsgYm91bmRpbmdCb3gueSgpLApAQCAtMzY3LDYgKzM2OCw3IEBAIHZv
aWQgQmFzaWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0b21MZWZ0UmFk
aXVzLCBib3VuZGluZ0JveCksCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0
b21SaWdodFJhZGl1cywgYm91bmRpbmdCb3gpCiAgICAgKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KHIpOwogfQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNTY2
MjY0ZTgxZmM4NDU1MDI4MTAzZjY4YjAxZWYzMzNlNjEyNTZlYS4uMGM1NTExZWM2ODFkZTVkNDc2
YWI3NGU3YWYxMGVhOTBmYWZkYTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxBcHBs
aWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSb3VuZGVkUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRHJhdyBndXR0ZXIKICAgICBJbnRTaXpl
IHJhZGl1cyhtX3JlY3QuaGVpZ2h0KCkgLyAyLCBtX3JlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChtX3JlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVz
LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSwgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgYnV0dG9uCiAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtMTc2LDcgKzE3Nyw4IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50
JiBwb2ludCwgYm9vbCBzdGFydCkKICAgICBtX2J1dHRvblBvc2l0aW9uID0gbWF4KDAsIG1pbiht
X3JlY3Qud2lkdGgoKSAtIG1fYnV0dG9uU2l6ZSwgcG9pbnQueCgpIC0gbV9kcmFnU3RhcnRPZmZz
ZXQpKTsKIH0KIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKK2NsYXNzIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVibGljIAorUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KIApAQCAtNDkxLDkgKzQ5Myw5IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdygpCiAgICAgSW50U2l6ZSBpbm5l
clJhZGl1cyhib3JkZXJSYWRpdXMgLSBib3JkZXJUaGlja25lc3MsIGJvcmRlclJhZGl1cyAtIGJv
cmRlclRoaWNrbmVzcyk7CiAgICAgSW50UmVjdCBpbm5lclJlY3QoYm9yZGVyVGhpY2tuZXNzLCBi
b3JkZXJUaGlja25lc3MsIHdpbmRvd1dpZHRoIC0gYm9yZGVyVGhpY2tuZXNzICogMiwgd2luZG93
SGVpZ2h0IC0gYm9yZGVyVGhpY2tuZXNzICogMik7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChvdXRlclJlY3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91
dGVyUmFkaXVzLCBDb2xvcihib3JkZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJSZWN0LCBvdXRl
clJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cyksIENvbG9yKGJv
cmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qo
aW5uZXJSZWN0LCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJh
ZGl1cywgQ29sb3IoYmFja2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVy
UmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzKSwgQ29sb3IoYmFj
a2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IHRoZSB3
aWRnZXRzCiAgICAgbV9wbGF5UGF1c2VCdXR0b24uZHJhdyhjb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225682</attachid>
            <date>2014-03-03 12:15:40 -0800</date>
            <delta_ts>2014-03-04 07:38:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140303121534.patch</filename>
            <type>text/plain</type>
            <size>81270</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0YWI1M2MyMjljYmQy
ZDEzMmUwYzg4NWVlM2M4Y2RkZDIwZDkxMy4uMGI4YmQ2MGZiNWZjZTEwZDBiOTA3NDkyMjRlMWUy
YzEzYTMzZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHNuYXBwaW5nIHJvdW5k
ZWQgcmVjdHMgdG8gZGV2aWNlIHBpeGVsIHBvc2l0aW9uLiBJdCBlbmFibGVzCisgICAgICAgIGRl
dmljZSBwaXhlbCBhd2FyZSBib3JkZXItcmFkaXVzIHBhaW50aW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6RmxvYXRSb3VuZGVk
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmFkaWlGcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVw
bG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OnBhdGgpOgorCiAyMDE0LTAzLTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTY0OTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzMzRlODIxNThjNjhjNmM2YzBmMTUx
YTEzOWRjYjBkMjY5NzAwYWMuLjI5YzdjMDVhMmI4NTFmMGI5MjE0ZmY2MDIyZGEyOTFhMDZlNDI5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0wMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzog
TWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9hdFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBj
bGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3KToKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorCiAyMDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0
ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApp
bmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4MmM5NDM0N2QzLi5jZGZjZTA3OGYy
ZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTI0Miw3ICsx
MjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSB0aHVtYlJlY3QoMywgMyk7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRodW1iQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0KSwg
bV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNmNTAyYjRlNGM0OTk5MjQ2MjhiNGI0
MThiZmY2Li44ODQ5YTgxMzdkZGU4MTQzYjI5NTMzZjI5NzhjZDEwNjYyMzA3ZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGbG9hdFJv
dW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQorICAg
IDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRpaShyZWN0LnJhZGlpKCkpCit7Cit9
CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KQogewpAQCAtMTM3LDQgKzE0MywxMiBAQCBib29sIEZsb2F0Um91bmRlZFJlY3Q6OnhJbnRl
cmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WAogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIEZsb2F0Um91bmRlZFJlY3Q6OmlzUmVuZGVyYWJsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlp
LnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkuYm90
dG9tTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA8PSBtX3Jl
Y3Qud2lkdGgoKQorICAgICYmIG1fcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS5i
b3R0b21MZWZ0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0LmhlaWdodCgpCisgICAgJiYgbV9yYWRpaS50
b3BSaWdodCgpLmhlaWdodCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1f
cmVjdC5oZWlnaHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZi
ZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRlM2Y5YzIyMTNiOTJkY2QuLjk1YmY1MjY3MTJmYWJhMDMw
MDU1OTA1NjQ3NTI4MWJiMDk4NjZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4cGxpY2l0IEZsb2F0Um91bmRlZFJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIEZsb2F0Um91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpOwogCkBAIC0xMTUsNiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gRmxvYXRSZWN0KG1fcmVjdC5tYXhYKCkgLSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSwgbV9yZWN0Lm1heFkoKSAtIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgbV9y
YWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCksIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQo
KSk7CiAgICAgfQogCisgICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKICAgICBib29sIHhJ
bnRlcmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WElu
dGVyY2VwdCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2YjRkN2E5YTNkNzJlZGMz
MjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzLi5lMTU3NzA4Y2EyYjA1NWFmZjk5YzlkNTI0ZTQ4Yzhh
NzUwYzlkNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC02ODEsMzQgKzY4MiwxNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGNsaXAoRmxvYXRSZWN0
KHJlY3QpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXJlY3QuaXNSb3VuZGVkKCkpIHsK
LSAgICAgICAgY2xpcChyZWN0LnJlY3QoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBjbGlwKHBh
dGgpOwogfQogCi0vLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEg
c3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXpl
IHJhZGlpLgotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodCwKLSAgICBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICBjbGlwKHBh
dGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc2OSwxOCArNzUzLDE4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0
b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHJl
Y3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0
ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwotICAgICAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5y
ZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCBy
ZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29s
b3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChyZWN0LCBj
b2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgp
LCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9kZSk7CiB9
CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBhOWJmNWQwMDRj
ZTExYmFjYTcwNzE5NjIwNDZkOTgzNGNlMmUwZmU1Li40OTk2MDkyMWMyYWQyNzkzN2JiYTg0YjM2
YzYwYmYzOWZiNDUwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNzUsNiArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZl
cjsKKyAgICBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogICAgIGNsYXNzIEdyYWRpZW50OwogICAg
IGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
ICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAg
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0g
ICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpOworICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIApAQCAtMzI3LDEzICszMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmKTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1z
IG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxv
YXRTaXplIHJhZGlpLgotICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdo
dCk7CisgICAgICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
KTsKIAogICAgICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZv
aWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CisgICAgICAgIHZvaWQg
Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252
ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlh
bGlhcyA9IHRydWUpOwogICAgICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgY29uc3QgRmxvYXRSZWN0Jik7CkBAIC01NzAsNiArNTY3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgICAgIHZvaWQgcGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwog
CisgICAgICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGE7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5k
ZXggODhkNDUzYzNhNDM2OGY0MzkzZDkyNDkyN2Y2MjQwMjU1Nzc1MjEzZi4uMDkxNjhlNTg2ZmE2
NWY5ZjNkNTBkZWIzMmY1ZjY3ZWRhYTgwNmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC05MSwxMSArOTIsNiBAQCBmbG9hdCBQYXRoOjpu
b3JtYWxBbmdsZUF0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgYm9vbCYgb2spIGNvbnN0CiAgICAgcmV0
dXJuIHRyYXZlcnNhbFN0YXRlLm1fbm9ybWFsQW5nbGU7CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91
bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHIpCi17Ci0gICAgYWRkUm91bmRlZFJlY3Qoci5y
ZWN0KCksIHIucmFkaWkoKS50b3BMZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCByLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci19Ci0KIHZvaWQgUGF0
aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7CiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQpAQCAtMTA1LDcgKzEwMSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgRmxvYXRTaXplIGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0
KCkgLyAyKTsKIAogICAgIC8vIEFwcGx5IHRoZSBTVkcgY29ybmVyIHJhZGl1cyBjb25zdHJhaW50
cywgcGVyIHRoZSByZWN0IHNlY3Rpb24gb2YgdGhlIFNWRyBzaGFwZXMgc3BlYzogaWYKLSAgICAv
LyBvbmUgb2YgcngscnkgaXMgbmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMg
dmFsdWUgaXMgdXNlZC4gSWYgYm90aCB2YWx1ZXMgYXJlIAorICAgIC8vIG9uZSBvZiByeCxyeSBp
cyBuZWdhdGl2ZSwgdGhlbiB0aGUgb3RoZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJ
ZiBib3RoIHZhbHVlcyBhcmUKICAgICAvLyBuZWdhdGl2ZSB0aGVuIHJ4ID0gcnkgPSAwLiBJZiBy
eCBpcyBncmVhdGVyIHRoYW4gaGFsZiBvZiB0aGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZQogICAg
IC8vIHRoZW4gc2V0IHJ4IHRvIGhhbGYgb2YgdGhlIHdpZHRoOyByeSBpcyBoYW5kbGVkIHNpbWls
YXJseS4KIApAQCAtMTIxLDM2ICsxMTcsMzkgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAg
ICBpZiAocmFkaXVzLmhlaWdodCgpID4gaGFsZlNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJhZGl1
cy5zZXRIZWlnaHQoaGFsZlNpemUuaGVpZ2h0KCkpOwogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRS
ZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgc3RyYXRlZ3kpOworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSwgc3RyYXRlZ3kpOwogfQogCi12b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0
U3RyYXRlZ3kgc3RyYXRlZ3kpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHIsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7Ci0gICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHJlY3Qud2lkdGgoKSA8IHRvcExlZnRSYWRpdXMud2lkdGgoKSArIHRvcFJpZ2h0
UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8IHJlY3Qud2lkdGgoKSA8IGJvdHRvbUxlZnRS
YWRpdXMud2lkdGgoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8
IHJlY3QuaGVpZ2h0KCkgPCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpICsgYm90dG9tTGVmdFJhZGl1
cy5oZWlnaHQoKQotICAgICAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHRvcFJpZ2h0UmFkaXVz
LmhlaWdodCgpICsgYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpIHsKKyAgICBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByLnJhZGlpKCk7CisgICAgY29uc3QgRmxvYXRS
ZWN0JiByZWN0ID0gci5yZWN0KCk7CisKKyAgICBpZiAocmVjdC53aWR0aCgpIDwgcmFkaWkudG9w
TGVmdCgpLndpZHRoKCkgKyByYWRpaS50b3BSaWdodCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVj
dC53aWR0aCgpIDwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgKyByYWRpaS5ib3R0b21SaWdo
dCgpLndpZHRoKCkKKyAgICAgICAgfHwgcmVjdC5oZWlnaHQoKSA8IHJhZGlpLnRvcExlZnQoKS5o
ZWlnaHQoKSArIHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKQorICAgICAgICB8fCByZWN0Lmhl
aWdodCgpIDwgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSArIHJhZGlpLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkpIHsKICAgICAgICAgLy8gSWYgYWxsIHRoZSByYWRpaSBjYW5ub3QgYmUgYWNjb21t
b2RhdGVkLCByZXR1cm4gYSByZWN0LgogICAgICAgICBhZGRSZWN0KHJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cywgc3RyYXRlZ3kpOwotfQotCi12b2lkIFBhdGg6OmFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFk
aXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBSb3VuZGVkUmVjdFN0cmF0
ZWd5IHN0cmF0ZWd5KQotewogICAgIGlmIChzdHJhdGVneSA9PSBQcmVmZXJOYXRpdmVSb3VuZGVk
UmVjdCkgewogI2lmIFVTRShDRykKLSAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMs
IGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJl
Y3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21M
ZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICB9CiAKLSAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50
b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOworfQor
Cit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQoreworICAg
IGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocikpOwogfQogCiAvLyBBcHByb3hpbWF0
aW9uIG9mIGNvbnRyb2wgcG9pbnQgcG9zaXRpb25zIG9uIGEgYmV6aWVyIHRvIHNpbXVsYXRlIGEg
cXVhcnRlciBvZiBhIGNpcmNsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAppbmRleCA1NWYwZjZlMmVhYjc1NDgwNjJjMmUzZTFiY2JhMTQ3ZTQ2ZWM3OWE2Li4zZDNmYTE3
YWNlMDQ1M2Y4MzliNDM2MDBjNTQwNDZiZjkyZWUyN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBj
bGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBG
bG9hdFNpemU7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIFJvdW5kZWRS
ZWN0OwpAQCAtMTI5LDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfTsK
IAogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2
ZVJvdW5kZWRSZWN0KTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5h
dGl2ZVJvdW5kZWRSZWN0KTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRS
ZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwog
CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTQzLDcgKzE0
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseSh2b2lkKiBpbmZv
LCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAgICAgICAgdm9pZCBhZGRQYXRoRm9yUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3Ry
YXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CiAgICAgICAgIHZvaWQgYWRkQmV6aWVy
c0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsK
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAppbmRleCBkNzI3MzI0ZTc3NGY2MGY5ZTNhZTlmZDYxOTk2Y2M2M2IyZjg4
ZTYxLi4wZGJhNDhjNDk4MWViNTA3ODdjNzI4NzY4OWU0YjVkOWJkZTFjOWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIK
IAorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogCkBAIC0yMzYsNCArMjM3LDkgQEAgYm9vbCBSb3Vu
ZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCitGbG9hdFJvdW5kZWRSZWN0IFJvdW5kZWRSZWN0OjpwaXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25z
dAoreworICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KHJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByYWRpaSgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmgKaW5kZXggNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5MDVlZjgwNS4uM2U2
MmQzODJiZGUxYzk4NzUyN2MxYTBkMmY2YTNiYTVhNTU3YjgyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC0zMyw2ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIExh
eW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGZvciBjb252ZXggcXVhZHMuCiAgICAgYm9vbCBp
bnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKIAorICAgIEZsb2F0Um91bmRl
ZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiAgICAg
UmFkaWkgbV9yYWRpaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKaW5kZXggZDY3NTIyOGJiYmViZDlhYWQyZmM3NjJkZDRmMjMyM2NlODJhZTA4
MS4uMTFhNWY5ZjAyZDY0ZDUzNTJmZjliMGZhZTg2MjM5MzIyYzBiOWQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTUwOSw5ICs1
MDksOSBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBy
YWRpdXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZQogICAgICAgICAgICAgICAgICAgIHRlbXBs
YXRlU2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2UpOwogfQogCi12b2lkIFNoYWRv
d0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0
KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGdyYXBoaWNzQ29udGV4dC0+Y2xpcEJvdW5k
cygpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LnJlY3QoKSwgZ3JhcGhpY3NDb250ZXh0LT5j
bGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTUyMCwyMyArNTIwLDI0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAgICAg
Ly8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQyCiAg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQo
KSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCBsYXllclJlY3Qp
OworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBz
aGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJ
bnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0
ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHJhZGlpKTsKKyAgICBJbnRTaXpl
IHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdlU2l6ZSwgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCA9IHNoYWRvd2VkUmVjdC5yZWN0
KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBzaGFkb3dlZFJlY3Qud2lkdGgo
KSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBzaGFkb3dlZFJlY3QuaGVpZ2h0KCkKKyAgICBp
ZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiByZWN0LndpZHRoKCkgfHwgdGVtcGxhdGVTaXplLmhl
aWdodCgpID4gcmVjdC5oZWlnaHQoKQogICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkg
KiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX3NvdXJjZVJlY3Qud2lkdGgoKSAqIG1fc291cmNl
UmVjdC5oZWlnaHQoKSkpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdy
YXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5ZXJSZWN0KTsKKyAgICAgICAg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0
LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgdGVtcGxh
dGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNz
Q29udGV4dCwgc2hhZG93ZWRSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSkKK3ZvaWQgU2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewog
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhp
Y3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYg
KGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NDcsMzMgKzU0OCwzNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgIC8vIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcgZG9lcyBub3Qgd29y
ayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCkucHJlc2Vy
dmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hhZG93KSB7Ci0gICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRob3V0
VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGxheWVyUmVjdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VT
aXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRn
ZVNpemUsIGhvbGVSYWRpaSk7CisgICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1w
bGF0ZVNpemUoZWRnZVNpemUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVj
dCYgaFJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRo
KCkgPiBob2xlUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhvbGVSZWN0
LmhlaWdodCgpCi0gICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHRlbXBsYXRlU2l6
ZS5oZWlnaHQoKSA+IGhvbGVSZWN0LndpZHRoKCkgKiBob2xlUmVjdC5oZWlnaHQoKSkpIHsKLSAg
ICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7CisgICAgaWYgKHRlbXBsYXRlU2l6ZS53
aWR0aCgpID4gaFJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBoUmVjdC5o
ZWlnaHQoKQorICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgPiBoUmVjdC53aWR0aCgpICogaFJlY3QuaGVpZ2h0KCkpKSB7CisgICAgICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVj
dCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRyYXdJbnNldFNo
YWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlp
LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUp
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJl
Y3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0
LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCA9IHNoYWRvd2VkUmVjdDsKKyAg
ICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QgPSBzaGFkb3dlZFJlY3QucmVj
dCgpOwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0Lm1vdmUobV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIg
aWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJl
ZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVl
cyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVy
UmVsYXRpdmVTaGFkb3dlZFJlY3QsIHJhZGlpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
bV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJl
bGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwog
ICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC01ODIsMTEgKzU4NCwx
MSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgaWYgKHJhZGlp
LmlzWmVybygpKQotICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRS
ZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQorICAgICAg
ICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRSZWN0LnJlY3QoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICAgICAgcGF0aC5hZGRS
b3VuZGVkUmVjdChzaGFkb3dlZFJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQo
KSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0KTsKICAgICAgICAgICAgIHNoYWRvd0Nv
bnRleHQtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAgLTU5OCw3ICs2MDAsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVk
dWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
Cit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAg
ICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVy
KGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjA3LDExICs2
MDksMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIEZsb2F0UmVjdCBidWZmZXJSZWxh
dGl2ZVJlY3QgPSByZWN0OwogICAgIGJ1ZmZlclJlbGF0aXZlUmVjdC5tb3ZlKG1fbGF5ZXJDb250
ZXh0VHJhbnNsYXRpb24pOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3Qg
PSBob2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCA9IGhvbGVS
ZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0Lm1vdmUobV9sYXllckNvbnRl
eHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZm
ZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hh
ZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSYWRpaSk7
CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBo
b2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OwpAQCAtNjIyLDEwICs2MjQsMTAgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgICAg
IFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICBpZiAoaG9s
ZVJhZGlpLmlzWmVybygpKQotICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGhvbGVSZWN0KTsKKyAg
ICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisgICAgICAgICAgICBwYXRoLmFk
ZFJlY3QoaG9sZVJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgaG9sZVJhZGlpLnRvcExlZnQoKSwgaG9sZVJhZGlpLnRv
cFJpZ2h0KCksIGhvbGVSYWRpaS5ib3R0b21MZWZ0KCksIGhvbGVSYWRpaS5ib3R0b21SaWdodCgp
KTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QpOwogCiAgICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtNjcxLDcgKzY3Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgdGhlIHNo
YWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VT
aXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1f
bGF5ZXJJbWFnZSkKQEAgLTY4Miw3ICs2ODQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwg
ZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndp
ZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAK
ICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBj
b250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNj
cmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCByYWRpaSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29s
b3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQg
PSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTY5MywxMCArNjk1LDEwIEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJl
Y3QodGVtcGxhdGVCb3VuZHMpOwotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAg
IGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlSG9sZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QodGVtcGxhdGVIb2xlLCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJh
ZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVIb2xlLCBob2xlUmVjdC5y
YWRpaSgpKSk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAKQEAg
LTcxMSw3ICs3MTMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCBi
b3VuZGluZ1JlY3QgPSByZWN0OwogICAgIGJvdW5kaW5nUmVjdC5tb3ZlKG9mZnNldCk7CiAKLSAg
ICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3Q7CisgICAgRmxvYXRSZWN0IGRlc3RI
b2xlUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsKICAgICBkZXN0SG9sZVJlY3QubW92ZShvZmZzZXQp
OwogICAgIEZsb2F0UmVjdCBkZXN0SG9sZUJvdW5kcyA9IGRlc3RIb2xlUmVjdDsKICAgICBkZXN0
SG9sZUJvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53aWR0aCgpKTsKQEAgLTczMCwxMyArNzMyLDEz
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Zmls
bFBhdGgoZXh0ZXJpb3JQYXRoKTsKICAgICB9CiAgICAgCi0gICAgZHJhd0xheWVyUGllY2VzKGdy
YXBoaWNzQ29udGV4dCwgZGVzdEhvbGVCb3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVT
aXplLCBJbm5lclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwg
ZGVzdEhvbGVCb3VuZHMsIGhvbGVSZWN0LnJhZGlpKCksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUs
IElubmVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IElu
dFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNo
YXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1fbGF5ZXJJ
bWFnZSkKQEAgLTc0NSw3ICs3NDcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIEZs
b2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdl
U2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgo
KSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAg
IC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRl
bnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRj
aEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgcmFkaWksIG1fbGF5ZXJTaXplKTsK
KyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxh
dGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgaWYgKHJl
ZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRoZSBJbWFnZUJ1ZmZl
ci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdl
LT5jb250ZXh0KCk7CkBAIC03NTQsMTEgKzc1NiwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
cwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBs
YXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgc2hhZG93
Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIAotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkpCisgICAgICAgIGlmIChzaGFk
b3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZp
bGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRo
IHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHRlbXBsYXRlU2hhZG93LCBy
YWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFk
aWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpKSk7CiAgICAg
ICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCkBAIC03
NzAsMTIgKzc3MiwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgICAgICBvZmZzZXQu
c2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7CiAg
ICAgfQogCi0gICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd2VkUmVjdDsKKyAgICBG
bG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93ZWRSZWN0LnJlY3QoKTsKICAgICBzaGFkb3dC
b3VuZHMubW92ZShvZmZzZXQpOwogICAgIHNoYWRvd0JvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53
aWR0aCgpKTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVkoZWRnZVNpemUuaGVpZ2h0KCkpOwog
Ci0gICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCByYWRp
aSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOworICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5kcywgc2hhZG93ZWRSZWN0LnJhZGlpKCks
IGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFn
ZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVy
UHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aAppbmRleCA5NTllMTdlODliNjhjMjgwMjAzMmU1YTljMWY5NDk0OTBmMGI3YzUyLi44MTgwMzU1
Zjc0ODliODJmNGVhOWViYzFhMWQxZjU5M2U1ZGExZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoK
ICAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0Kik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJik7Ci0g
ICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29u
c3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToK
ICAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAg
ICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUp
OworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0
IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lk
IGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJs
dXJyZWRFZGdlU2l6ZSk7CiAgICAgCiAgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IDFkZGY2MGYyNTc1NGQxNTI4YWIwY2Q0Yjk1OWNmZDNlNTJlNGVk
NjMuLjdlNDcyODMxYmVjMDAxOWM1NzI0MDZjN2U3OGNkZmE2ZThmZDNhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJEcmF3RXJy
b3JVbmRlcmxpbmUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NjAs
NyArNDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1
cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LCBjb2xvcik7CiB9CkBAIC0xMDI4LDMxICsxMDI4LDMx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAg
ICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEZs
b2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQoY3IsIHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yKTsK
ICAgICBjYWlyb19maWxsKGNyKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodGhpcy0+bXVzdFVzZVNoYWRvd0JsdXIoKSkKLSAgICAgICAgcGxhdGZvcm1D
b250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAyNGQxMWY5MDUyMzc1NjQ4NWJlZjM3NTUzNzc2ZmQ4
ZDEyMTk2ZTllLi4xMmRlNTVhNjhmZWVhMjhlMGFmZDczMzJiZGUyODk3MDdkYmQ1MWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCkBAIC04MDYsNyArODA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRT
aGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwor
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIEZsb2F0Um91bmRlZFJl
Y3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3Qp
OwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0
OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBG
bG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChj
b250ZXh0LCByZWN0KTsKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
UwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTg2NSwxNyArODY1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkp
OworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwogICAg
IH0KIAotICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdC53aWR0aCgpID09IHRvcFJpZ2h0
LndpZHRoKCkgJiYgdG9wUmlnaHQud2lkdGgoKSA9PSBib3R0b21MZWZ0LndpZHRoKCkgJiYgYm90
dG9tTGVmdC53aWR0aCgpID09IGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAgIGJvb2wgZXF1YWxI
ZWlnaHRzID0gKHRvcExlZnQuaGVpZ2h0KCkgPT0gYm90dG9tTGVmdC5oZWlnaHQoKSAmJiBib3R0
b21MZWZ0LmhlaWdodCgpID09IHRvcFJpZ2h0LmhlaWdodCgpICYmIHRvcFJpZ2h0LmhlaWdodCgp
ID09IGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0
LnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0
LnJhZGlpKCk7CisgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgo
KSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgp
ID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0
aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgYm9vbCBlcXVhbEhlaWdo
dHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5o
ZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkpOwogICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRp
ZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVx
dWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiB0b3BMZWZ0LndpZHRoKCkgKiAyID09IHJlY3Qu
d2lkdGgoKSAmJiB0b3BMZWZ0LmhlaWdodCgpICogMiA9PSByZWN0LmhlaWdodCgpKQotICAgICAg
ICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByZWN0KTsKKyAgICBpZiAoIWhh
c0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExl
ZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgp
ICogMiA9PSByLmhlaWdodCgpKQorICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChj
b250ZXh0LCByKTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCk7CiAgICAgICAgIGZp
bGxQYXRoKHBhdGgpOwogICAgIH0KIApAQCAtODg2LDcgKzg4OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRvCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwg
b2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3Vu
ZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgUm91bmQKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBs
YXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVj
dC5yYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywg
cmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAKICAgICBmaWxsUGF0aChwYXRoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA4Mjk5ZDYzNGFlYjJkZGRjYWFlOTMxZTYx
MWMzZDA2ODY2OWE2ODY2Li5lMGQzMjkxNjQwMjMxNjk5ZGE1MDdmMDY1OGE2NzkzMzVkMjZkMDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFw
aGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkdESUV4dHJhcy5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0xMTUwLDcgKzEx
NTEsOCBAQCBzdGF0aWMgaW5saW5lIEludFBvaW50IHJlY3RDZW50ZXJQb2ludChjb25zdCBSRUNU
JiByZWN0KQogewogICAgIHJldHVybiBJbnRQb2ludChyZWN0LmxlZnQgKyAocmVjdC5yaWdodCAt
IHJlY3QubGVmdCkgLyAyLCByZWN0LnRvcCArIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIDIp
OwogfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKwordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgYywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIFNj
b3BlRENQcm92aWRlciBkY1Byb3ZpZGVyKG1fZGF0YSk7CiAgICAgaWYgKCFtX2RhdGEtPm1fZGMp
CkBAIC0xMTYzLDE2ICsxMTY1LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplCiAgICAgICAg
IAogICAgIGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKICAgICAKKyAgICBjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0ID0g
cmVjdC5yZWN0KCk7CiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCiAgICAg
ZHN0UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNoYWRvd09mZnNldC53aWR0aCgpKSwgc3RhYmxlUm91
bmQoc2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7CiAgICAgZHN0UmVjdC5pbmZsYXRlKHN0YWJsZVJv
dW5kKHNoYWRvd0JsdXIpKTsKICAgICBkc3RSZWN0ID0gbV9kYXRhLT5tYXBSZWN0KGRzdFJlY3Qp
OwogICAKLSAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUodG9wTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNpemUodG9wUmlnaHQpKTsK
LSAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1hcFNpemUoYm90dG9tTGVmdCkp
OwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUoYm90dG9tUmln
aHQpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRp
aSgpLnRvcExlZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1hcFNp
emUocmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKKyAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVm
dChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSkpOworICAgIEZsb2F0
U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbVJp
Z2h0KCkpKTsKIAogICAgIFRyYW5zcGFyZW50TGF5ZXJEQyB0cmFuc3BhcmVudERjKG1fZGF0YSwg
ZHN0UmVjdCwgJmZpbGxSZWN0KTsKICAgICBIREMgZGMgPSB0cmFuc3BhcmVudERjLmhkYygpOwpA
QCAtMTIyMyw3ICsxMjI2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUKICAgICBTZWxlY3RP
YmplY3QoZGMsIG9sZEJydXNoKTsKIH0KIAotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Jv
dW5kQ29ybmVyKGJvb2wgbmVlZHNOZXdDbGlwLCBSRUNUIGNsaXBSZWN0LCBSRUNUIHJlY3RXaW4s
IEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICghZGMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBjNDY5ZTQy
MDZkNjhmYjFlNzczZWI0OTZiZTk5YTFhYzQxOWZiYjZlLi4xODlhN2U1YzU1YTU1ZWY1ZTFkMjVk
Y2I2MTdkZWQxZTI5MDg5YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTU3MCw5ICs1NzAsOSBAQCBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYgogfQogI2VuZGlmCiAKLXN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpIGJvcmRlclJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAorICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSgKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCku
aW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKS5pbnRWYWx1
ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0
aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpLmlu
dFZhbHVlKCkpLAogICAgICAgICBJbnRTaXplKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhl
aWdodCgpLmludFZhbHVlKCkpLApAQCAtNjA1LDcgKzYwNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpCiAgICAgICAgIHJhbmdlUmVjdC5zZXRXaWR0aChsZW5ndGhSYXRpbyAqIHRvdGFsVHJh
Y2tXaWR0aCk7CiAgICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIHJhbmdlUmVjdC5tb3Zl
KHN0YXJ0UmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgsIDApOwotICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoUm91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShz
dHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29s
b3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CkBAIC02MTUsNyAr
NjE1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWkKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9ICZv
LT5zdHlsZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoUm91bmRl
ZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHIsIGJv
cmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uCiAgICAg
dm9sdW1lUmVjdC5tb3ZlKDAsIHJlY3RIZWlnaHQgLSB0cmFja0hlaWdodCk7CiAgICAgdm9sdW1l
UmVjdC5zZXRIZWlnaHQoY2VpbCh0cmFja0hlaWdodCkpOwogCi0gICAgY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0
eWxlKSksCisgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9s
dW1lUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDMxYTMyZTRjM2MwMjUzZTgxNTdlODQ4NWJkMTNi
NWExMWNlZWE0N2UuLmQwZDAyMGUyMTcwYmFiZTU3NzRjZTZiMTY4ZjU5ZjE1M2UzYWQyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgpAQCAtMTk1LDcg
KzE5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9y
IGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwgMTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6
ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCBy
ZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNv
bnRleHQuZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpLCBi
YWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFk
aWkpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogIAogICAgIC8vIERy
YXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1
KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJlZTVhZmJhZWJhODkxMzQxNDU0NGNlNDAuLjJh
ZGEwZmZkMjEzNjgxOGRlMWJiOGVhYjc0NTY1ZDljMGNhMWJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTEyMTEs
NyArMTIxMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgICAgIC8vIGJlZ2lubmlu
ZyB0aGUgbGF5ZXIpLgogICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLmdldFJv
dW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpKTsKICAgICAgICAgc3RhdGVTYXZlci5z
YXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm9yZGVy
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlcikpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKICAgICB9CiAKQEAgLTE2NDgsNyArMTY0OSw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
aXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCkgOiBvdmVy
Zmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKTsK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQsIHNpemUoKSkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91
dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWEwYzJkYzkx
ZWFkZGI2OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMDcwMzNlZjViMDk2ZDA0NmRhOGVkNjg1
ZTYxN2EyNWNiMzE3ODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0
Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTAwLDMxICs1MDEsMzEgQEAgUm91
bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBib3IKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoY2xpcFJlY3Qu
aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChjbGlwUmVj
dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQgcmVj
dCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1cmUg
d2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBSZWN0
LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21S
aWdodCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlwUmVj
dC5yZWN0KCkueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3QoKS55KCkpOwotICAgICAg
ICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOworICAgICAgICAgICAgRmxv
YXRSZWN0IHRvcENvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgp
LCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJl
Y3QucmVjdCgpLnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJl
Y3QucmFkaWkoKS50b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9w
Q29ybmVyUmFkaWkpKTsKIAotICAgICAgICAgICAgSW50UmVjdCBib3R0b21Db3JuZXIocmVjdC54
KCksIHJlY3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0
LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFk
aWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAgICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVy
KHJlY3QueCgpLCByZWN0LnkoKSwgY2xpcFJlY3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCBj
bGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOworICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICBib3R0b21Db3Ju
ZXJSYWRpaS5zZXRCb3R0b21SaWdodChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNv
cm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkp
KTsKICAgICAgICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQo
KS5pc0VtcHR5KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNsaXBSZWN0LnJlY3Qo
KS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBj
bGlwUmVjdC5yZWN0KCkueSgpKTsKLSAgICAgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BD
b3JuZXJSYWRpaTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCB0b3BDb3JuZXIocmVjdC54KCksIGNs
aXBSZWN0LnJlY3QoKS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgcmVj
dC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsKKyAgICAgICAgICAgIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwogICAgICAgICAgICAgdG9wQ29ybmVyUmFkaWku
c2V0VG9wUmlnaHQoY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJh
ZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKLSAgICAgICAgICAgIEludFJlY3Qg
Ym90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QueSgpLCByZWN0Lm1heFgoKSAt
IGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7
Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAg
ICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3Qu
eSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5t
YXhZKCkgLSByZWN0LnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBi
b3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRv
bUxlZnQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTY1Myw3ICs2NTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3JvdW5kQmxl
ZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVy
ID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgqY29udGV4
dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRFZGdlLCBp
bmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGlmIChib3JkZXIuaXNSZW5kZXJhYmxlKCkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwgYmdDb2xv
ciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciksIGJnQ29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBy
ZWN0LCBib3JkZXIpOwpAQCAtMTk1NiwxMSArMTk1NywxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJl
Y3QmCiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNl
ICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIpOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckJv
cmRlcikpOwogICAgICAgICAvLyBpc1JlbmRlcmFibGUoKSBjaGVjayBhdm9pZHMgaXNzdWUgZGVz
Y3JpYmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODc4Nwog
ICAgICAgICAvLyBUaGUgaW5zaWRlIHdpbGwgYmUgY2xpcHBlZCBvdXQgbGF0ZXIgKGluIGNsaXBC
b3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aCkKICAgICAgICAgaWYgKGlubmVyQm9yZGVyLmlz
UmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRl
ZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckJvcmRlcikpOwogICAgIH0KIAogICAg
IC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9lc24ndCBjcmVhdGUg
c2VhbXMKQEAgLTIwNTMsNyArMjA1NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRy
YXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwg
aW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KGlubmVyQ2xpcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGlubmVyQ2xpcCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0
aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09MSUQsIGJsZWVk
QXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgICAgIH0KIApAQCAtMjA3Miw3ICsyMDczLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xpcCA9IHN0eWxlLT5nZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91dGVyQm9yZGVy
VG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBv
dXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKSk7
CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyUGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwg
c3R5bGUsIGNvbG9yLCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CkBAIC0yMTA0LDcgKzIxMDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94
U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAg
ICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsCiAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBz
aWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjM1Myw3ICsyMzU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCogZ3IKICAgICBCb3hTaWRl
IHNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2UgZWRnZXNbXSkKIHsKICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXAoY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihvdXRlckJvcmRlciwg
ZWRnZXMsIHNpZGUpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChj
YWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxh
dGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOwogfQogCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlSW5mbyhCb3JkZXJFZGdlIGVkZ2VzW10s
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdApAQCAtMjU1Miw3ICsyNTUzLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3RU
b0NsaXBPdXQpKTsKIAogICAgICAgICAgICAgICAgIFJvdW5kZWRSZWN0IGluZmx1ZW5jZVJlY3Qo
c2hhZG93UmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogICAgICAgICAgICAgICAgIGluZmx1ZW5jZVJl
Y3QuZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsK
QEAgLTI1NjIsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAg
ICAgICAgICAgIGZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoZmlsbFJlY3QpLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwpAQCAtMjU5MCw3ICsyNTkx
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgaWYgKGhvbGVSZWN0
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIHNoYWRvd0Nv
bG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpLCBzaGFkb3dDb2xvciwgcy0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGJvcmRlci5yZWN0KCksIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjYzNSw3ICsyNjM2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9y
LCBzLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShvdXRlclJlY3QsIHJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHMtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShvdXRl
clJlY3QsIEZsb2F0Um91bmRlZFJlY3Qocm91bmRlZEhvbGUpLCBmaWxsQ29sb3IsIHMtPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAppbmRleCA5NzJmZjM2MzFiYjVlNjVjZWRlYzQ5OWQ2MzRlODEzYzYyY2Yw
NDM3Li41MDNkNzYxNDY4MTIxNGJkOGU0NDBiNzgxZTI5ZWIzNzNiZDAyM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYwOSw3ICszNjEwLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGMKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
ICYmIGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgaW5Db250
YWluaW5nQmxvY2tDaGFpbih0aGlzLCBsYXllcikpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQ
b2ludCBkZWx0YTsKICAgICAgICAgICAgICAgICBsYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMo
cm9vdExheWVyLCBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExh
eW91dFJlY3QoZGVsdGEsIGxheWVyLT5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChkZWx0YSwgbGF5ZXItPnNp
emUoKSkpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5ZXIgPT0gcm9vdExheWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGZhOTRiOGI3
YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLmVlYzYzMGRiZDA0OThjMWEyODcxY2Ux
NDI4OGU3NjdhZTNmNjAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9y
dCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRm9udENh
Y2hlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtNDUwLDcgKzQ1MSw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKICAgICB9
CiAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkgKyBjbGlwLndpZHRoKCkgLyAy
LjAsIGNsaXAubWF4WSgpKTsKICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRp
ZW50V2l0aE5hbWUoU2hhZGVHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChj
bGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKQEAgLTQ2NSw3ICs0
NjYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKFJl
bmRlck9iamVjdCogYm94LCBjb25zdCBQYWludEluZgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QpKSk7CiAKICAgICAvLyBUaGlzIGdyYWRp
ZW50IGdldHMgZHJhd24gYmxhY2sgd2hlbiBwcmludGluZy4KICAgICAvLyBEbyBub3QgZHJhdyB0
aGUgZ3JhZGllbnQgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0b3AgYm9yZGVyLgpAQCAtNTg1LDkg
KzU4Niw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdCh0aXRsZUNsaXAsIAorICAgICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVD
bGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAs
IDApLAotICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVm
dFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxv
YXRTaXplKDAsIDApKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgdGl0bGVDbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwgdGl0bGVDbGlwLm1heFkoKSksIExpbmVh
ckludGVycG9sYXRpb24pOwogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoU2hpbmVHcmFkaWVudCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwg
dGl0bGVDbGlwLm1heFkoKSksIHRpdGxlQ2xpcC5sb2NhdGlvbigpLCBFeHBvbmVudGlhbEludGVy
cG9sYXRpb24pOwpAQCAtNjA1LDkgKzYwNiw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJ1dHRvbkNsaXAsIAorICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgw
LCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKLSAgICAgICAgICAgIEZsb2F0U2l6
ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSk7CisgICAgICAg
ICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3Jk
ZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgo
KSkpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoYnV0dG9uQ2xpcCwg
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwogCkBAIC03MTYsNyArNzE3LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAKICAgICAgICAgSW50U2l6ZSBjb3JuZXJTaXplKGNvcm5lcldp
ZHRoLCBjb3JuZXJIZWlnaHQpOwotICAgICAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlcih0cmFj
a0NsaXAsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpOwor
ICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6
ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoaW5uZXJCb3JkZXIpOwogCiAgICAgICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CkBAIC04MzIsNyArODMzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jh
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHAKIAogICAgIC8vIDEu
MikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYuIEl0IGlzIHN1cHBvc2VkIHRv
IG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBhbmQgZGFya2VyIHRoZSBzdHJv
a2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0LngoKSwgcmVjdC55KCkgKyB2ZXJ0
aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0JhckhlaWdodCk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJS
YWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0
IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwogICAgIFJlZlB0
cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0g
MS41KSk7CkBAIC05ODYsNyArOTg3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxl
VXBsb2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCoKIAogICAg
ICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGlj
b24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJh
Y2tncm91bmRJbWFnZUNvbG9yID0gYnV0dG9uUmVuZGVyZXIgPyBDb2xvcihidXR0b25SZW5kZXJl
ci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLnJnYigpKSA6IENvbG9yKDIwNi4wZiwgMjA2LjBmLCAyMDYuMGYpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3Qs
IGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIHBpY3R1cmVG
cmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFt
ZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBw
aWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsKQEAgLTEwMDcs
NyArMTAwOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNv
cmF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgLy8gRm9y
ZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplLCBjb3JuZXJTaXplKSwgY29ybmVyU2l6ZSwgcGljdHVyZUZyYW1lQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCB0
aHVtYm5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmYWQzMWM2YjY1MGY0NTcwYjM3MThiZmIzNGQ1
ZmNjZTBlNzEyZTU5Li5kYWQxMmI5ZmU3ODQxMjQ0ZWI2MWE0ZGQxY2I1YTA1Y2Q0OWY4Y2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuaCIKICNpbXBvcnQgIkZpbGVMaXN0LmgiCisjaW1wb3J0ICJGbG9hdFJvdW5kZWRSZWN0
LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRDRy5oIgpAQCAtMTE0Myw3ICsxMTQ0LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW4KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOwogCi0gICAgUm91bmRlZFJlY3QgYm9yZGVyID0gby0+c3R5bGUoKS5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHIsICZvLT52aWV3KCkpOworICAgIEZsb2F0Um91bmRlZFJlY3Qg
Ym9yZGVyID0gRmxvYXRSb3VuZGVkUmVjdChvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Io
ciwgJm8tPnZpZXcoKSkpOwogICAgIGludCByYWRpdXMgPSBib3JkZXIucmFkaWkoKS50b3BMZWZ0
KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CkBAIC0xMTc3LDcgKzExNzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpw
YWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bgogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
dG9wR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWko
KS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6
ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9yZGVyLnJhZGlpKCku
dG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUo
KSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAg
ICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAg
ICAgfQpAQCAtMTE4NSw3ICsxMTg2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBp
ZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKICAgICAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChi
b3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0
b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAg
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKICAgICB9CkBAIC0x
NDE0LDcgKzE0MTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgogICAgICAgICBtYWluU2hh
ZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShi
b3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5t
YXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6
ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CiAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDA4ZGMxMDg3ZWQzMzQ5
NjQ0NWJjNTZlZmVhNzU5MjRmOWRjNDQwZTkuLjIzZGFjYmNiYWI3ZTVjZTA3M2U1NTkyODJjYWNj
MjI5OGE3YWQ0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgpAQCAtNzU1LDcgKzc1Niw3
IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOwogCi0gICAgUm91bmRlZFJlY3QgYm91bmQgPSBvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3Jk
ZXJGb3Iocik7CisgICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZCA9IEZsb2F0Um91bmRlZFJlY3Qo
by0+c3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm91
bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3Bh
Y2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CkBAIC03ODUsMTQgKzc4NiwxNCBAQCB2b2lk
IFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
dG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BS
aWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRp
ZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5kLnJhZGlpKCkudG9wUmlnaHQoKSwg
SW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0
LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwog
CiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBi
b3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUo
KSwgSW50U2l6ZSgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm91bmQucmFkaWkoKS5i
b3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50
U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CiAgICAgfQpAQCAtOTU2LDcgKzk1Nyw3IEBAIGNvbnN0IGludCB0cmFja1JhZGl1cyA9
IDI7CiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAg
ICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBSb3VuZGVk
UmVjdCBib3VuZHMociwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKKyAgICBGbG9h
dFJvdW5kZWRSZWN0IGJvdW5kcyhyLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpOwog
CiAgICAgaWYgKG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpID09ICBTbGlkZXJIb3Jpem9udGFsUGFy
dCkKICAgICAgICAgYm91bmRzLnNldFJlY3QoSW50UmVjdChyLngoKSwKQEAgLTk3Myw3ICs5NzQs
NyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2Ug
PSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVj
dChib3VuZHMucmVjdCgpKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3Vu
ZHMucmVjdCgpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFj
a3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0
cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUo
TlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKaW5kZXggMjVjOTY2ODc1Y2U2MjgxZTdj
ZGNiMzUzZTEyNjY5YmI4ZDA0MjcxYS4uNTY4N2VjODAxZmQ0NzZiZmE4ODVkMjU5MTViNjBmODM1
MGI1YmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hT
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5j
cHAKQEAgLTE1NiwxOCArMTU2LDExIEBAIGJvb2wgQm94U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRl
cnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFJvdW5kZWRSZWN0KFBhdGgmIHBhdGgsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
KQotewotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRp
aS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCksIFBh
dGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKLX0KLQogdm9pZCBCb3hTaGFwZTo6YnVpbGRE
aXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QKIHsKLSAgICBhZGRSb3VuZGVk
UmVjdChwYXRocy5zaGFwZSwgbV9ib3VuZHMucmVjdCgpLCBtX2JvdW5kcy5yYWRpaSgpKTsKLSAg
ICBpZiAoc2hhcGVNYXJnaW4oKSkgewotICAgICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBt
YXJnaW5Cb3VuZHMgPSBzaGFwZU1hcmdpbkJvdW5kcygpOwotICAgICAgICBhZGRSb3VuZGVkUmVj
dChwYXRocy5tYXJnaW5TaGFwZSwgbWFyZ2luQm91bmRzLnJlY3QoKSwgbWFyZ2luQm91bmRzLnJh
ZGlpKCkpOwotICAgIH0KKyAgICBwYXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywg
UGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIGlmIChzaGFwZU1hcmdpbigpKQor
ICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVjdChzaGFwZU1hcmdpbkJvdW5k
cygpLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwCmluZGV4IGRhODg3ZTQ3MmM1MWZkY2Q4NDAzMjRjYmY5NmEzNDkxYjM0NWI2M2MuLmQ1MmRj
YmE4ZDYxNTUwZTI0YzhhMzAzOTZjOTA3YTQ0NjQyNDkwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNs
dWRlICJSZW5kZXJCb3guaCIKQEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEJhc2ljU2hhcGVJbnNl
dDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgbGVmdCA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9sZWZ0LCBib3VuZGluZ0JveC53aWR0aCgpKTsKICAgICBmbG9hdCB0b3AgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1fdG9wLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgcGF0aC5hZGRS
b3VuZGVkUmVjdCgKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHIgPSBGbG9hdFJvdW5kZWRSZWN0KAog
ICAgICAgICBGbG9hdFJlY3QoCiAgICAgICAgICAgICBsZWZ0ICsgYm91bmRpbmdCb3gueCgpLAog
ICAgICAgICAgICAgdG9wICsgYm91bmRpbmdCb3gueSgpLApAQCAtMzY3LDYgKzM2OCw3IEBAIHZv
aWQgQmFzaWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0b21MZWZ0UmFk
aXVzLCBib3VuZGluZ0JveCksCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUobV9ib3R0
b21SaWdodFJhZGl1cywgYm91bmRpbmdCb3gpCiAgICAgKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KHIpOwogfQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNTY2
MjY0ZTgxZmM4NDU1MDI4MTAzZjY4YjAxZWYzMzNlNjEyNTZlYS4uMGM1NTExZWM2ODFkZTVkNDc2
YWI3NGU3YWYxMGVhOTBmYWZkYTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxBcHBs
aWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSb3VuZGVkUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRHJhdyBndXR0ZXIKICAgICBJbnRTaXpl
IHJhZGl1cyhtX3JlY3QuaGVpZ2h0KCkgLyAyLCBtX3JlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChtX3JlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVz
LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSwgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgYnV0dG9uCiAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtMTc2LDcgKzE3Nyw4IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50
JiBwb2ludCwgYm9vbCBzdGFydCkKICAgICBtX2J1dHRvblBvc2l0aW9uID0gbWF4KDAsIG1pbiht
X3JlY3Qud2lkdGgoKSAtIG1fYnV0dG9uU2l6ZSwgcG9pbnQueCgpIC0gbV9kcmFnU3RhcnRPZmZz
ZXQpKTsKIH0KIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKK2NsYXNzIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVibGljIAorUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KIApAQCAtNDkxLDkgKzQ5Myw5IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdygpCiAgICAgSW50U2l6ZSBpbm5l
clJhZGl1cyhib3JkZXJSYWRpdXMgLSBib3JkZXJUaGlja25lc3MsIGJvcmRlclJhZGl1cyAtIGJv
cmRlclRoaWNrbmVzcyk7CiAgICAgSW50UmVjdCBpbm5lclJlY3QoYm9yZGVyVGhpY2tuZXNzLCBi
b3JkZXJUaGlja25lc3MsIHdpbmRvd1dpZHRoIC0gYm9yZGVyVGhpY2tuZXNzICogMiwgd2luZG93
SGVpZ2h0IC0gYm9yZGVyVGhpY2tuZXNzICogMik7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChvdXRlclJlY3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91
dGVyUmFkaXVzLCBDb2xvcihib3JkZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJSZWN0LCBvdXRl
clJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cyksIENvbG9yKGJv
cmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qo
aW5uZXJSZWN0LCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJh
ZGl1cywgQ29sb3IoYmFja2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVy
UmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzKSwgQ29sb3IoYmFj
a2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IHRoZSB3
aWRnZXRzCiAgICAgbV9wbGF5UGF1c2VCdXR0b24uZHJhdyhjb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225777</attachid>
            <date>2014-03-04 07:38:23 -0800</date>
            <delta_ts>2014-03-04 09:01:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129557-20140304073823.patch</filename>
            <type>text/plain</type>
            <size>81993</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwYzlhNDdhZWQ1ZjM4
MTUwMGMzNGU5NDE0YjFlNTk2YWFlZWYzNC4uY2U3YWIwNjI1Y2VhMDJhMTBkMTg3ZTIxN2Q5MDgx
NDQwZmJiZjE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTAzLTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIEdyYXBoaWNzTGF5ZXI6OmZpbGxSZWN0IEZsb2F0Um91bmRlZFJlY3QgYmFzZWQgYW5k
IGNsZWFudXAgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIFRoaXMgaXMgdGhlIHByZXBhcmF0aW9uIGZvciBzbmFwcGluZyByb3VuZGVk
IHJlY3RzIHRvIGRldmljZSBwaXhlbCBwb3NpdGlvbi4gSXQgZW5hYmxlcworICAgICAgICBkZXZp
Y2UgcGl4ZWwgYXdhcmUgYm9yZGVyLXJhZGl1cyBwYWludGluZy4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNs
aWRlclRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdDo6aXNSZW5kZXJhYmxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUm91bmRlZFJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6
cGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpib3JkZXJSYWRpaUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0
azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL0RyYWdJbWFnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcFJvdW5kZWRJbm5lclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50
VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2FmYXJpOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL0Jv
eFNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJveFNoYXBlOjpidWlsZERpc3BsYXlQYXRo
cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2ljU2hhcGVJbnNldDo6cGF0aCk6CisKIDIwMTQtMDMtMDQgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVt
YmVyIHZhcmlhYmxlIG9mIE5ldHdvcmtJbmZvQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IDY2NmMwYjY1ZjJkMTk4MjRhMmE2MWZhMDMwNTU4OTdmMjVjNjAxOGQuLjg0NDQzODgxZjg0MDY2
NWE2ODZjYjdjMDU0ZDI0OTk3MTc5NzRiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxNC0wMy0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN1YnBpeGVsIHJlbmRlcmluZzogTWFrZSBHcmFwaGljc0xheWVyOjpmaWxsUmVjdCBGbG9h
dFJvdW5kZWRSZWN0IGJhc2VkIGFuZCBjbGVhbnVwIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGlzIGlzIHRoZSBwcmVwYXJhdGlv
biBmb3Igc25hcHBpbmcgcm91bmRlZCByZWN0cyB0byBkZXZpY2UgcGl4ZWwgcG9zaXRpb24uIEl0
IGVuYWJsZXMKKyAgICAgICAgZGV2aWNlIHBpeGVsIGF3YXJlIGJvcmRlci1yYWRpdXMgcGFpbnRp
bmcuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KToKKwogMjAxNC0wMy0w
MiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyZWFtbGluZSB1
c2Ugb2YgVGV4dEl0ZXJhdG9yLCBjdXR0aW5nIGRvd24gaW5jbHVkZXMgYW5kIHVzZSBvZiBzb29u
LXRvLWJlLWRlbGV0ZWQgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCA4NzA1M2NkYTY3Njg4MTBjNGQ5NGM4OGMxMDNkNGI4
MmM5NDM0N2QzLi5jZGZjZTA3OGYyZWNjYzhkODZlNmU4YzBiNWM2NWI0MmI2YmRkNjRkIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fp
cm9VdGlsaXRpZXNFZmwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIK
KyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9u
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgpAQCAtMTI0Miw3ICsxMjQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRN
ZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8KIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6
ZSB0aHVtYlJlY3QoMywgMyk7Ci0gICAgaW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVj
dCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRodW1iUmVjdCwgdGh1bWJSZWN0LCBtX3NsaWRlclRo
dW1iQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgdGh1bWJSZWN0LCB0aHVtYlJlY3QsIHRo
dW1iUmVjdCwgdGh1bWJSZWN0KSwgbV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcAppbmRleCAxOWFjOTMxODZiZTNm
NTAyYjRlNGM0OTk5MjQ2MjhiNGI0MThiZmY2Li4xOGQ1ZTQ1NmUwYmUwMjZmYzczN2VhNjA4MDA1
ZTFkZGY0ODZkYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJvdW5kZWRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcApAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitGbG9hdFJvdW5kZWRSZWN0OjpGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0JiByZWN0KQorICAgIDogbV9yZWN0KHJlY3QucmVjdCgpKQorICAgICwgbV9yYWRp
aShyZWN0LnJhZGlpKCkpCit7Cit9CisKIEZsb2F0Um91bmRlZFJlY3Q6OkZsb2F0Um91bmRlZFJl
Y3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICA6IG1f
cmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQogewpAQCAtMTM3LDQgKzE0MywxMiBAQCBib29sIEZs
b2F0Um91bmRlZFJlY3Q6OnhJbnRlcmNlcHRzQXRZKGZsb2F0IHksIGZsb2F0JiBtaW5YSW50ZXJj
ZXB0LCBmbG9hdCYgbWF4WAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEZsb2F0Um91bmRl
ZFJlY3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9wTGVm
dCgpLndpZHRoKCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgo
KQorICAgICAgICAmJiBtX3JhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICsgbV9yYWRpaS5ib3R0
b21SaWdodCgpLndpZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkKKyAgICAgICAgJiYgbV9yYWRpaS50
b3BMZWZ0KCkuaGVpZ2h0KCkgKyBtX3JhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSA8PSBtX3Jl
Y3QuaGVpZ2h0KCkKKyAgICAgICAgJiYgbV9yYWRpaS50b3BSaWdodCgpLmhlaWdodCgpICsgbV9y
YWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZiZDQ0OWJlOGUzMGMyMDM2OGNjZmY0OGRl
M2Y5YzIyMTNiOTJkY2QuLjk1YmY1MjY3MTJmYWJhMDMwMDU1OTA1NjQ3NTI4MWJiMDk4NjZjYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRl
ZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5k
ZWRSZWN0LmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBleHBsaWNp
dCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlp
KCkpOworICAgIGV4cGxpY2l0IEZsb2F0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsK
ICAgICBGbG9hdFJvdW5kZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpOwogICAgIEZsb2F0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOwogCkBAIC0x
MTUsNiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KG1fcmVjdC5t
YXhYKCkgLSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgbV9yZWN0Lm1heFkoKSAtIG1f
cmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgbV9yYWRpaS5ib3R0b21SaWdodCgpLndpZHRo
KCksIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSk7CiAgICAgfQogCisgICAgYm9vbCBp
c1JlbmRlcmFibGUoKSBjb25zdDsKICAgICBib29sIHhJbnRlcmNlcHRzQXRZKGZsb2F0IHksIGZs
b2F0JiBtaW5YSW50ZXJjZXB0LCBmbG9hdCYgbWF4WEludGVyY2VwdCkgY29uc3Q7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCA2YjRkN2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEz
Li5lMTU3NzA4Y2EyYjA1NWFmZjk5YzlkNTI0ZTQ4YzhhNzUwYzlkNjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdy
YWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CkBAIC02ODEsMzQgKzY4MiwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJ
bnRSZWN0JiByZWN0KQogICAgIGNsaXAoRmxvYXRSZWN0KHJlY3QpKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIXJlY3QuaXNSb3VuZGVkKCkpIHsKLSAgICAgICAgY2xpcChyZWN0LnJlY3Qo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyZWN0KTsKICAgICBjbGlwKHBhdGgpOwogfQogCi0vLyBGSVhNRTogQ29u
c2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3Qg
dGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwKLSAgICBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUGF0aCBwYXRo
OwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICBjbGlwKHBhdGgpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTc2OSwxOCArNzUzLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHJlY3QuaXNSb3VuZGVkKCkpIHsKICAgICAg
ICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUp
OwotICAgICAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50b3BM
ZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgp
LCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAg
ICBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChyZWN0LCBjb2xvciwgY29sb3JTcGFjZSk7CiAgICAg
ICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29t
cG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNF
KENBSVJPKQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAppbmRleCBhYjc5YTM0YTg1MzgxNzYxZmIxNDA0ZjNmNjM2ZWQ3ZmFh
NGIzMTgyLi5kMGMyNDJiYTA3Y2RiYTI3NDU1NWNlYmQ0OTNhY2MyNWUwNDkyNmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtNzUsNiArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZlcjsKKyAgICBjbGFzcyBGbG9hdFJvdW5k
ZWRSZWN0OwogICAgIGNsYXNzIEdyYWRpZW50OwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZTsKICAgICBjbGFzcyBJbWFnZUJ1ZmZlcjsKQEAgLTI5NCw5ICsyOTUsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxv
YXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICB2
b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYg
cm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lk
IGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAg
ICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzI3LDEzICszMjcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBJbnRS
ZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9p
ZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKLQotICAgICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRl
ZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgotICAgICAgICB2
b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRv
cExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCk7CisgICAgICAgIHZvaWQgY2xpcFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKIAogICAgICAgICB2b2lkIGNsaXBP
dXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNv
bnN0IFJvdW5kZWRSZWN0Jik7CisgICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwg
V2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2lu
dHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgICAgICB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRSZWN0Jik7CkBA
IC01NzAsNiArNTY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBsYXRm
b3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1T
dHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogCisgICAgICAgIHZvaWQgcGxhdGZvcm1G
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSk7CisKICAgICAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2Rh
dGE7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5kZXggODhkNDUzYzNhNDM2OGY0MzkzZDky
NDkyN2Y2MjQwMjU1Nzc1MjEzZi4uYTdjYjg2MzNlNjhkNjA1YmI1MjI0ZDVmMDVkN2MxYmY2ZjU4
NDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZl
cnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+
CkBAIC05MSwxMSArOTIsNiBAQCBmbG9hdCBQYXRoOjpub3JtYWxBbmdsZUF0TGVuZ3RoKGZsb2F0
IGxlbmd0aCwgYm9vbCYgb2spIGNvbnN0CiAgICAgcmV0dXJuIHRyYXZlcnNhbFN0YXRlLm1fbm9y
bWFsQW5nbGU7CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmIHIpCi17Ci0gICAgYWRkUm91bmRlZFJlY3Qoci5yZWN0KCksIHIucmFkaWkoKS50b3BMZWZ0
KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlpKCkuYm90dG9tTGVmdCgpLCByLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSk7Ci19Ci0KIHZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWksIFJvdW5kZWRS
ZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQpAQCAtMTA1
LDcgKzEwMSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWksCiAgICAgRmxvYXRTaXplIGhhbGZT
aXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0KCkgLyAyKTsKIAogICAgIC8vIEFwcGx5
IHRoZSBTVkcgY29ybmVyIHJhZGl1cyBjb25zdHJhaW50cywgcGVyIHRoZSByZWN0IHNlY3Rpb24g
b2YgdGhlIFNWRyBzaGFwZXMgc3BlYzogaWYKLSAgICAvLyBvbmUgb2YgcngscnkgaXMgbmVnYXRp
dmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMgdmFsdWUgaXMgdXNlZC4gSWYgYm90aCB2
YWx1ZXMgYXJlIAorICAgIC8vIG9uZSBvZiByeCxyeSBpcyBuZWdhdGl2ZSwgdGhlbiB0aGUgb3Ro
ZXIgY29ybmVyIHJhZGl1cyB2YWx1ZSBpcyB1c2VkLiBJZiBib3RoIHZhbHVlcyBhcmUKICAgICAv
LyBuZWdhdGl2ZSB0aGVuIHJ4ID0gcnkgPSAwLiBJZiByeCBpcyBncmVhdGVyIHRoYW4gaGFsZiBv
ZiB0aGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZQogICAgIC8vIHRoZW4gc2V0IHJ4IHRvIGhhbGYg
b2YgdGhlIHdpZHRoOyByeSBpcyBoYW5kbGVkIHNpbWlsYXJseS4KIApAQCAtMTIxLDM2ICsxMTcs
MzYgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwKICAgICBpZiAocmFkaXVzLmhlaWdodCgpID4g
aGFsZlNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJhZGl1cy5zZXRIZWlnaHQoaGFsZlNpemUuaGVp
Z2h0KCkpOwogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVz
LCByYWRpdXMsIHJhZGl1cywgc3RyYXRlZ3kpOworICAgIGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSwgc3RyYXRlZ3kp
OwogfQogCi12b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0
UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHRSYWRpdXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCit2b2lk
IFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHIsIFJvdW5kZWRS
ZWN0U3RyYXRlZ3kgc3RyYXRlZ3kpCiB7Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgIGlm
IChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlY3Qud2lkdGgoKSA8
IHRvcExlZnRSYWRpdXMud2lkdGgoKSArIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCkKLSAgICAgICAg
ICAgIHx8IHJlY3Qud2lkdGgoKSA8IGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSArIGJvdHRvbVJp
Z2h0UmFkaXVzLndpZHRoKCkKLSAgICAgICAgICAgIHx8IHJlY3QuaGVpZ2h0KCkgPCB0b3BMZWZ0
UmFkaXVzLmhlaWdodCgpICsgYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKQotICAgICAgICAgICAg
fHwgcmVjdC5oZWlnaHQoKSA8IHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICsgYm90dG9tUmlnaHRS
YWRpdXMuaGVpZ2h0KCkpIHsKKyAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWkgPSByLnJhZGlpKCk7CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0ID0gci5yZWN0KCk7CisK
KyAgICBpZiAoIXIuaXNSZW5kZXJhYmxlKCkpIHsKICAgICAgICAgLy8gSWYgYWxsIHRoZSByYWRp
aSBjYW5ub3QgYmUgYWNjb21tb2RhdGVkLCByZXR1cm4gYSByZWN0LgogICAgICAgICBhZGRSZWN0
KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYWRkUGF0aEZvclJvdW5kZWRS
ZWN0KHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVz
LCBib3R0b21SaWdodFJhZGl1cywgc3RyYXRlZ3kpOwotfQotCi12b2lkIFBhdGg6OmFkZFBhdGhG
b3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
TGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBSb3VuZGVkUmVjdFN0cmF0ZWd5IHN0cmF0ZWd5KQotewogICAgIGlmIChzdHJhdGVneSA9PSBQ
cmVmZXJOYXRpdmVSb3VuZGVkUmVjdCkgewogI2lmIFVTRShDRykKLSAgICAgICAgcGxhdGZvcm1B
ZGRQYXRoRm9yUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMs
IGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGxhdGZvcm1B
ZGRQYXRoRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdo
dCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKICAgICB9CiAKLSAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVj
dCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRv
bVJpZ2h0UmFkaXVzKTsKKyAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaWku
dG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJv
dHRvbVJpZ2h0KCkpOworfQorCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5k
ZWRSZWN0JiByKQoreworICAgIGFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocikpOwog
fQogCiAvLyBBcHByb3hpbWF0aW9uIG9mIGNvbnRyb2wgcG9pbnQgcG9zaXRpb25zIG9uIGEgYmV6
aWVyIHRvIHNpbXVsYXRlIGEgcXVhcnRlciBvZiBhIGNpcmNsZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCA1NWYwZjZlMmVhYjc1NDgwNjJjMmUzZTFiY2JhMTQ3
ZTQ2ZWM3OWE2Li4zZDNmYTE3YWNlMDQ1M2Y4MzliNDM2MDBjNTQwNDZiZjkyZWUyN2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3Mg
RmxvYXRQb2ludDsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgRmxvYXRSb3VuZGVk
UmVjdDsKICAgICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
ICAgIGNsYXNzIFJvdW5kZWRSZWN0OwpAQCAtMTI5LDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfTsKIAogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RTdHJh
dGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0KTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVm
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cywgUm91bmRlZFJlY3RT
dHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0KTsKKyAgICAgICAgdm9pZCBhZGRSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFBy
ZWZlck5hdGl2ZVJvdW5kZWRSZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkUmVjdCYpOwogCiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6
ZSYpOwpAQCAtMTQzLDcgKzE0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBhcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAg
dm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAgICAgICAgdm9pZCBh
ZGRQYXRoRm9yUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRp
dXMsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7CiAgICAg
ICAgIHZvaWQgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJv
dHRvbVJpZ2h0UmFkaXVzKTsKIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAppbmRleCBkNzI3MzI0ZTc3NGY2MGY5ZTNh
ZTlmZDYxOTk2Y2M2M2IyZjg4ZTYxLi4wZGJhNDhjNDk4MWViNTA3ODdjNzI4NzY4OWU0YjVkOWJk
ZTFjOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZFJlY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUm91bmRlZFJlY3QuaCIKIAorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogCkBAIC0yMzYsNCAr
MjM3LDkgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFk
JiBxdWFkKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitGbG9hdFJvdW5kZWRSZWN0IFJv
dW5kZWRSZWN0OjpwaXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKSBjb25zdAoreworICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKHJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByYWRpaSgpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKaW5kZXggNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVh
ZmJhNzc5MDVlZjgwNS4uM2U2MmQzODJiZGUxYzk4NzUyN2MxYTBkMmY2YTNiYTVhNTU3YjgyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBA
IC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRSb3Vu
ZGVkUmVjdDsKIGNsYXNzIExheW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKQEAgLTEw
Myw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGZvciBjb252ZXgg
cXVhZHMuCiAgICAgYm9vbCBpbnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsK
IAorICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGlu
ZyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0
UmVjdCBtX3JlY3Q7CiAgICAgUmFkaWkgbV9yYWRpaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZDY3NTIyOGJiYmViZDlhYWQyZmM3
NjJkZDRmMjMyM2NlODJhZTA4MS4uMTFhNWY5ZjAyZDY0ZDUzNTJmZjliMGZhZTg2MjM5MzIyYzBi
OWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKQEAgLTUwOSw5ICs1MDksOSBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6
ZShjb25zdCBJbnRTaXplJiByYWRpdXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZQogICAgICAg
ICAgICAgICAgICAgIHRlbXBsYXRlU2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2Up
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgc2hhZG93ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRl
TGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcEJvdW5kcygpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0
ZUxheWVyQm91bmRpbmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LnJlY3QoKSwg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTUyMCwyMyArNTIwLDI0IEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmVjCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdv
cmsgd2l0aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MDQyCiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNl
cnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewotICAgICAgICBk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3Qs
IHJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7Ci0g
ICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHJh
ZGlpKTsKKyAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZSA9IHRoaXMtPnRlbXBsYXRlU2l6ZShlZGdl
U2l6ZSwgc2hhZG93ZWRSZWN0LnJhZGlpKCkpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCA9
IHNoYWRvd2VkUmVjdC5yZWN0KCk7CiAKLSAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiBz
aGFkb3dlZFJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBzaGFkb3dlZFJl
Y3QuaGVpZ2h0KCkKKyAgICBpZiAodGVtcGxhdGVTaXplLndpZHRoKCkgPiByZWN0LndpZHRoKCkg
fHwgdGVtcGxhdGVTaXplLmhlaWdodCgpID4gcmVjdC5oZWlnaHQoKQogICAgICAgICB8fCAodGVt
cGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX3NvdXJjZVJlY3Qu
d2lkdGgoKSAqIG1fc291cmNlUmVjdC5oZWlnaHQoKSkpIHsKLSAgICAgICAgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwgbGF5
ZXJSZWN0KTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29u
dGV4dCwgc2hhZG93ZWRSZWN0LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRS
ZWN0LCByYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CisgICAgZHJhd1JlY3RTaGFkb3dX
aXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCB0ZW1wbGF0ZVNpemUsIGVk
Z2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRp
aSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIGhvbGVSZWN0KQogewogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJC
b3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBC
b3VuZHMoKSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NDcsMzMgKzU0OCwz
NCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZQogICAgIC8vIGRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcgZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dC0+Z2V0Q1RNKCkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpIHx8IG1fdHlwZSAhPSBCbHVyU2hh
ZG93KSB7Ci0gICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlpLCBsYXllclJlY3QpOworICAgICAgICBkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3Qs
IGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRTaXplIGVkZ2VT
aXplID0gYmx1cnJlZEVkZ2VTaXplKCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlz
LT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIGhvbGVSYWRpaSk7CisgICAgSW50U2l6ZSB0ZW1wbGF0
ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIGhvbGVSZWN0LnJhZGlpKCkpOwor
ICAgIGNvbnN0IEZsb2F0UmVjdCYgaFJlY3QgPSBob2xlUmVjdC5yZWN0KCk7CiAKLSAgICBpZiAo
dGVtcGxhdGVTaXplLndpZHRoKCkgPiBob2xlUmVjdC53aWR0aCgpIHx8IHRlbXBsYXRlU2l6ZS5o
ZWlnaHQoKSA+IGhvbGVSZWN0LmhlaWdodCgpCi0gICAgICAgIHx8ICh0ZW1wbGF0ZVNpemUud2lk
dGgoKSAqIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IGhvbGVSZWN0LndpZHRoKCkgKiBob2xlUmVj
dC5oZWlnaHQoKSkpIHsKLSAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhncmFw
aGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIGxheWVyUmVjdCk7CisgICAg
aWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gaFJlY3Qud2lkdGgoKSB8fCB0ZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgPiBoUmVjdC5oZWlnaHQoKQorICAgICAgICB8fCAodGVtcGxhdGVTaXplLndpZHRo
KCkgKiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBoUmVjdC53aWR0aCgpICogaFJlY3QuaGVpZ2h0
KCkpKSB7CisgICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBob2xlUmVjdCwgbGF5ZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBo
b2xlUmVjdCwgaG9sZVJhZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKKyAgICBkcmF3SW5z
ZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0
Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCA9
IHNoYWRvd2VkUmVjdDsKKyAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3Qg
PSBzaGFkb3dlZFJlY3QucmVjdCgpOwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0Lm1v
dmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0
aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIg
bmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNl
dENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHJhZGlpLCBtX2xheWVyU2l6
ZSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRD
YWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWko
KSwgbV9sYXllclNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7
CkBAIC01ODIsMTEgKzU4NCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgICAgICBz
aGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRo
KCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hhZG93Q29udGV4
dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogICAgICAgICBzaGFkb3dD
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgaWYgKHJhZGlpLmlzWmVybygpKQotICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+
ZmlsbFJlY3Qoc2hhZG93ZWRSZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvd2VkUmVjdC5yYWRpaSgp
LmlzWmVybygpKQorICAgICAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93ZWRS
ZWN0LnJlY3QoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUGF0aCBwYXRoOwotICAg
ICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChzaGFkb3dlZFJlY3QsIHJhZGlpLnRvcExlZnQo
KSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdo
dCgpKTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3Qoc2hhZG93ZWRSZWN0KTsKICAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICB9CiAKQEAg
LTU5OCw3ICs2MDAsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhv
bGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQo
KS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllcklt
YWdlKQpAQCAtNjA3LDExICs2MDksMTEgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIEZs
b2F0UmVjdCBidWZmZXJSZWxhdGl2ZVJlY3QgPSByZWN0OwogICAgIGJ1ZmZlclJlbGF0aXZlUmVj
dC5tb3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCi0gICAgRmxvYXRSZWN0IGJ1ZmZl
clJlbGF0aXZlSG9sZVJlY3QgPSBob2xlUmVjdDsKKyAgICBGbG9hdFJlY3QgYnVmZmVyUmVsYXRp
dmVIb2xlUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsKICAgICBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0
Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBp
biB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBv
dXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgp
LnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QsIGhvbGVSYWRpaSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVy
OjpzaGFyZWQoKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJS
ZWxhdGl2ZUhvbGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVk
KSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFn
ZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnNoYWRvd0NvbnRleHQpOwpAQCAtNjIyLDEwICs2MjQsMTAgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3Qp
OwotICAgICAgICBpZiAoaG9sZVJhZGlpLmlzWmVybygpKQotICAgICAgICAgICAgcGF0aC5hZGRS
ZWN0KGhvbGVSZWN0KTsKKyAgICAgICAgaWYgKGhvbGVSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCisg
ICAgICAgICAgICBwYXRoLmFkZFJlY3QoaG9sZVJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgaG9sZVJhZGlpLnRvcExl
ZnQoKSwgaG9sZVJhZGlpLnRvcFJpZ2h0KCksIGhvbGVSYWRpaS5ib3R0b21MZWZ0KCksIGhvbGVS
YWRpaS5ib3R0b21SaWdodCgpKTsKKyAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9s
ZVJlY3QpOwogCiAgICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9E
RCk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtNjcxLDcgKzY3Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKICAgICAgdGhlIHNoYWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXpl
JiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVT
aXplKTsKICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4Miw3ICs2ODQsNyBAQCB2b2lkIFNo
YWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9hdFJlY3Qo
ZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgp
IC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdl
U2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZm
ZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZEluc2V0U2hh
ZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJv
dW5kcywgdGVtcGxhdGVIb2xlLCByYWRpaSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRp
dXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwg
aG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBE
cmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKQEAgLTY5MywxMCAr
Njk1LDEwIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAKICAgICAgICAgUGF0aCBwYXRoOwog
ICAgICAgICBwYXRoLmFkZFJlY3QodGVtcGxhdGVCb3VuZHMpOwotICAgICAgICBpZiAocmFkaWku
aXNaZXJvKCkpCisgICAgICAgIGlmIChob2xlUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAg
ICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlSG9sZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QodGVtcGxhdGVIb2xlLCByYWRpaS50b3BMZWZ0KCksIHJh
ZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7
CisgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxh
dGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKSk7CiAKICAgICAgICAgc2hhZG93Q29udGV4dC0+Zmls
bFBhdGgocGF0aCk7CiAKQEAgLTcxMSw3ICs3MTMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bgogICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSByZWN0OwogICAgIGJvdW5kaW5nUmVjdC5t
b3ZlKG9mZnNldCk7CiAKLSAgICBGbG9hdFJlY3QgZGVzdEhvbGVSZWN0ID0gaG9sZVJlY3Q7Cisg
ICAgRmxvYXRSZWN0IGRlc3RIb2xlUmVjdCA9IGhvbGVSZWN0LnJlY3QoKTsKICAgICBkZXN0SG9s
ZVJlY3QubW92ZShvZmZzZXQpOwogICAgIEZsb2F0UmVjdCBkZXN0SG9sZUJvdW5kcyA9IGRlc3RI
b2xlUmVjdDsKICAgICBkZXN0SG9sZUJvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53aWR0aCgpKTsK
QEAgLTczMCwxMyArNzMyLDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKICAgICB9CiAgICAgCi0gICAg
ZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgZGVzdEhvbGVCb3VuZHMsIHJhZGlpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2Vz
KGdyYXBoaWNzQ29udGV4dCwgZGVzdEhvbGVCb3VuZHMsIGhvbGVSZWN0LnJhZGlpKCksIGVkZ2VT
aXplLCB0ZW1wbGF0ZVNpemUsIElubmVyU2hhZG93KTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7
CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2Uo
KTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRl
bXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9
IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTc0NSw3ICs3NDcsNyBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29ucwogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdl
U2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAy
ICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXpl
LmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBp
ZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVk
cmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVz
KG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywgcmFk
aWksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6
OnNoYXJlZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1f
Y29sb3JTcGFjZSwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVy
U2l6ZSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIHRoZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250
ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CkBAIC03NTQsMTEgKzc1NiwxMSBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29ucwogICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxv
YXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkp
KTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIAotICAgICAgICBpZiAocmFkaWkuaXNaZXJvKCkp
CisgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAg
IHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBQYXRoIHBhdGg7Ci0gICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0
KHRlbXBsYXRlU2hhZG93LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlp
LmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CisgICAgICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVj
dC5yYWRpaSgpKSk7CiAgICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsK
ICAgICAgICAgfQogCkBAIC03NzAsMTIgKzc3MiwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
cwogICAgICAgICBvZmZzZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5z
Zm9ybS55U2NhbGUoKSk7CiAgICAgfQogCi0gICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNo
YWRvd2VkUmVjdDsKKyAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93ZWRSZWN0LnJl
Y3QoKTsKICAgICBzaGFkb3dCb3VuZHMubW92ZShvZmZzZXQpOwogICAgIHNoYWRvd0JvdW5kcy5p
bmZsYXRlWChlZGdlU2l6ZS53aWR0aCgpKTsKICAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVkoZWRn
ZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwg
c2hhZG93Qm91bmRzLCByYWRpaSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cp
OworICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIHNoYWRvd0JvdW5kcywgc2hh
ZG93ZWRSZWN0LnJhZGlpKCksIGVkZ2VTaXplLCB0ZW1wbGF0ZVNpemUsIE91dGVyU2hhZG93KTsK
IAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2No
ZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCA5NTllMTdlODliNjhjMjgwMjAzMmU1YTljMWY5NDk0
OTBmMGI3YzUyLi44MTgwMzU1Zjc0ODliODJmNGVhOWViYzFhMWQxZjU5M2U1ZGExZWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02Myw4
ICs2Myw4IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQg
ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0Kik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJik7Ci0gICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgdm9pZCBk
cmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1
bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NywxMSAr
ODcsMTEgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCk7CiAgICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYg
Ymx1cnJlZEVkZ2VTaXplLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0Owog
Ci0gICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dU
ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lk
IGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0
U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNv
bnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVk
Z2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUs
IGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAgCiAgICAgdm9pZCBkcmF3TGF5
ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJh
ZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDdhNjYwZDlkMzM5ZjIwMTU2OTc5
ZGQ1OTk5ZjBiMzNkY2ZkYmEyNDYuLmZiNmU2ZDM1ZGViOTIwYmI5YTQxZmM4NmQ5OThiYTQyNGY5
ODYxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlICJEcmF3RXJyb3JVbmRlcmxpbmUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGb250LmgiCisjaW5jbHVk
ZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRS
ZWN0OjpSYWRpaSgpKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5k
cmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKIAogICAgIGZpbGxS
ZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LCBjb2xvcik7CiB9CkBA
IC0xMDMyLDMxICsxMDMyLDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0
IEZsb2F0UmVjdCYgcikKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxl
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BS
aWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRv
bVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAg
ICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCBy
LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5k
cmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwotICAg
IHBhdGguYWRkUm91bmRlZFJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QpOwogICAgIGFwcGVuZFdl
YkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY3IsIHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9t
Q29sb3IoY3IsIGNvbG9yKTsKICAgICBjYWlyb19maWxsKGNyKTsKICAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGhpcy0+bXVzdFVzZVNoYWRvd0JsdXIoKSkK
LSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3co
dGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlp
KCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdJbnNldFNo
YWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAg
IHBhdGguYWRkUmVjdChyZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAyNmQyMWUxZjE2NGEx
MmIzYWQyYzIxYzk3MGE3YTQxYmNmM2NmOGUxLi4wMzg3NDlmZjVhNjNjM2I4N2JhYjk4ZjJjZDg5
OTBiYTk5NGQyZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC04MDYsNyArODA2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAg
ICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVa
ZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7
Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRl
ZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxS
ZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMs
IHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3
UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKICAgICBD
R0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yUwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRG
aWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTg2NSwxNyArODY1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNp
emUmIHRvCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMs
IHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21M
ZWZ0LCBib3R0b21SaWdodCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KHRoaXMsIHJlY3QpOwogICAgIH0KIAotICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdC53
aWR0aCgpID09IHRvcFJpZ2h0LndpZHRoKCkgJiYgdG9wUmlnaHQud2lkdGgoKSA9PSBib3R0b21M
ZWZ0LndpZHRoKCkgJiYgYm90dG9tTGVmdC53aWR0aCgpID09IGJvdHRvbVJpZ2h0LndpZHRoKCkp
OwotICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHRvcExlZnQuaGVpZ2h0KCkgPT0gYm90dG9tTGVm
dC5oZWlnaHQoKSAmJiBib3R0b21MZWZ0LmhlaWdodCgpID09IHRvcFJpZ2h0LmhlaWdodCgpICYm
IHRvcFJpZ2h0LmhlaWdodCgpID09IGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKKyAgICBjb25zdCBG
bG9hdFJlY3QmIHIgPSByZWN0LnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkgPSByZWN0LnJhZGlpKCk7CisgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRp
aS50b3BMZWZ0KCkud2lkdGgoKSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWku
dG9wUmlnaHQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlp
LmJvdHRvbUxlZnQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7Cisg
ICAgYm9vbCBlcXVhbEhlaWdodHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlp
LmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0g
cmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09
IHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOwogICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9
IG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgaWYgKCFo
YXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiB0b3BMZWZ0Lndp
ZHRoKCkgKiAyID09IHJlY3Qud2lkdGgoKSAmJiB0b3BMZWZ0LmhlaWdodCgpICogMiA9PSByZWN0
LmhlaWdodCgpKQotICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCBy
ZWN0KTsKKyAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWln
aHRzICYmIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWku
dG9wTGVmdCgpLmhlaWdodCgpICogMiA9PSByLmhlaWdodCgpKQorICAgICAgICBDR0NvbnRleHRG
aWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByKTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBw
YXRoOwotICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
cmVjdCk7CiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIApAQCAtODg2LDcgKzg4OCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYs
NyArOTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUm91bmQKICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAog
ICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRl
eHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0
KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3
SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAKICAgICBm
aWxsUGF0aChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5ZDBmNzE3
ZDcwYmQ5ODEwOTgwMjMzOTIzMTY2YzI3MGE3OWI4MTAxLi4yMWQ4OTlkNTgwZDBiOTA3Njg5YTE5
NGNlY2ZjNzUwNGYzZDNhODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkdESUV4dHJhcy5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVy
LmgiCkBAIC0xMTUyLDcgKzExNTMsOCBAQCBzdGF0aWMgaW5saW5lIEludFBvaW50IHJlY3RDZW50
ZXJQb2ludChjb25zdCBSRUNUJiByZWN0KQogewogICAgIHJldHVybiBJbnRQb2ludChyZWN0Lmxl
ZnQgKyAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgLyAyLCByZWN0LnRvcCArIChyZWN0LmJvdHRv
bSAtIHJlY3QudG9wKSAvIDIpOwogfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgYywgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIFNjb3BlRENQcm92aWRlciBkY1Byb3ZpZGVyKG1fZGF0YSk7CiAgICAg
aWYgKCFtX2RhdGEtPm1fZGMpCkBAIC0xMTY1LDE2ICsxMTY3LDE3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3Qg
RmxvYXRTaXplCiAgICAgICAgIAogICAgIGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAKKyAgICBjb25zdCBGbG9h
dFJlY3QmIGZpbGxSZWN0ID0gcmVjdC5yZWN0KCk7CiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmls
bFJlY3Q7CiAgICAgCiAgICAgZHN0UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNoYWRvd09mZnNldC53
aWR0aCgpKSwgc3RhYmxlUm91bmQoc2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7CiAgICAgZHN0UmVj
dC5pbmZsYXRlKHN0YWJsZVJvdW5kKHNoYWRvd0JsdXIpKTsKICAgICBkc3RSZWN0ID0gbV9kYXRh
LT5tYXBSZWN0KGRzdFJlY3QpOwogICAKLSAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEt
Pm1hcFNpemUodG9wTGVmdCkpOwotICAgIEZsb2F0U2l6ZSBuZXdUb3BSaWdodChtX2RhdGEtPm1h
cFNpemUodG9wUmlnaHQpKTsKLSAgICBGbG9hdFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1h
cFNpemUoYm90dG9tTGVmdCkpOwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEt
Pm1hcFNpemUoYm90dG9tUmlnaHQpKTsKKyAgICBGbG9hdFNpemUgbmV3VG9wTGVmdChtX2RhdGEt
Pm1hcFNpemUocmVjdC5yYWRpaSgpLnRvcExlZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdUb3BS
aWdodChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKKyAgICBGbG9h
dFNpemUgbmV3Qm90dG9tTGVmdChtX2RhdGEtPm1hcFNpemUocmVjdC5yYWRpaSgpLmJvdHRvbUxl
ZnQoKSkpOworICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21SaWdodChtX2RhdGEtPm1hcFNpemUocmVj
dC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKIAogICAgIFRyYW5zcGFyZW50TGF5ZXJEQyB0cmFu
c3BhcmVudERjKG1fZGF0YSwgZHN0UmVjdCwgJmZpbGxSZWN0KTsKICAgICBIREMgZGMgPSB0cmFu
c3BhcmVudERjLmhkYygpOwpAQCAtMTIyNSw3ICsxMjI4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbGxSZWN0LCBjb25zdCBGbG9h
dFNpemUKICAgICBTZWxlY3RPYmplY3QoZGMsIG9sZEJydXNoKTsKIH0KIAotCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JvdW5kQ29ybmVyKGJvb2wgbmVlZHNOZXdDbGlwLCBSRUNUIGNsaXBS
ZWN0LCBSRUNUIHJlY3RXaW4sIEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAg
IGlmICghZGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcAppbmRleCA5YzFlZWU4OTU0ZDE1OTM4YmE0OWMwYjE4NDgyNGM1MDdjNGVlY2FkLi45ZGNj
MDUyYzIzNzJiZDk2NjA3NmM0YzY1NWI2NDgzY2IwMGYwNDViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTU3OCw5ICs1NzgsOSBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24o
UmVuZGVyT2JqZWN0KiByZW5kZXJPYgogfQogI2VuZGlmCiAKLXN0YXRpYyBSb3VuZGVkUmVjdDo6
UmFkaWkgYm9yZGVyUmFkaWlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIGJvcmRlclJhZGlpRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBz
dHlsZSkKIHsKLSAgICByZXR1cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAorICAgIHJldHVybiBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSgKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9wTGVm
dFJhZGl1cygpLndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMo
KS5oZWlnaHQoKS5pbnRWYWx1ZSgpKSwKICAgICAgICAgSW50U2l6ZShzdHlsZS0+Ym9yZGVyVG9w
UmlnaHRSYWRpdXMoKS53aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLT5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLmhlaWdodCgpLmludFZhbHVlKCkpLAogICAgICAgICBJbnRTaXplKHN0eWxlLT5ib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS0+Ym9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLmludFZhbHVlKCkpLApAQCAtNjEzLDcgKzYxMyw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpCiAgICAgICAgIHJhbmdlUmVjdC5zZXRXaWR0aChsZW5n
dGhSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCk7CiAgICAgICAgIGlmIChpbmRleCkKICAgICAgICAg
ICAgIHJhbmdlUmVjdC5tb3ZlKHN0YXJ0UmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgsIDApOwotICAg
ICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoUm91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3Jk
ZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZy
b21TdHlsZShzdHlsZSkpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb250ZXh0LT5yZXN0
b3JlKCk7CkBAIC02MjMsNyArNjIzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWkKIGJvb2wg
UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRl
clN0eWxlKiBzdHlsZSA9ICZvLT5zdHlsZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoUm91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwg
c3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUtPmNv
bG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KHIsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksIHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLT5jb2xvclNwYWNlKCkp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIHJlbmRl
ck9iamVjdCwgY29uCiAgICAgdm9sdW1lUmVjdC5tb3ZlKDAsIHJlY3RIZWlnaHQgLSB0cmFja0hl
aWdodCk7CiAgICAgdm9sdW1lUmVjdC5zZXRIZWlnaHQoY2VpbCh0cmFja0hlaWdodCkpOwogCi0g
ICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRl
clJhZGlpRnJvbVN0eWxlKHN0eWxlKSksCisgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3Qodm9sdW1lUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwK
ICAgICAgICAgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
c3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDMxYTMyZTRjM2Mw
MjUzZTgxNTdlODQ4NWJkMTNiNWExMWNlZWE0N2UuLmQwZDAyMGUyMTcwYmFiZTU3NzRjZTZiMTY4
ZjU5ZjE1M2UzYWQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRHJhZ0ltYWdlLmgiCiAKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlw
dGlvbi5oIgpAQCAtMTk1LDcgKzE5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAg
c3RhdGljIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwgMTQwKTsKICAgICBz
dGF0aWMgY29uc3QgSW50U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1
cyk7CiAgICAgSW50UmVjdCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRp
aSwgcmFkaWksIHJhZGlpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWks
IHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgdG9w
Q29sb3IoMCwgMCwgMCwgMjU1KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJlZTVhZmJhZWJh
ODkxMzQxNDU0NGNlNDAuLjJhZGEwZmZkMjEzNjgxOGRlMWJiOGVhYjc0NTY1ZDljMGNhMWJmYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNs
dWRlICJGbG9hdFF1YWQuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKQEAgLTEyMTEsNyArMTIxMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAg
ICAgICAgIC8vIGJlZ2lubmluZyB0aGUgbGF5ZXIpLgogICAgICAgICBSb3VuZGVkUmVjdCBib3Jk
ZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpKTsKICAg
ICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoYm9yZGVyKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOwogICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICB9CiAKQEAgLTE2NDgsNyArMTY0
OSw3IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QoaXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVs
YXRlZE9mZnNldCkgOiBvdmVyZmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBwYWludElu
Zm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBw
YWludEluZm8ucGhhc2UpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIGlm
IChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
Y2xpcFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJl
Y3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKSk7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggNWEwYzJkYzkxZWFkZGI2OGUwMmUyNjMyYTY1Mzc1OTA1OGM2NzM5NS4uMDcwMzNl
ZjViMDk2ZDA0NmRhOGVkNjg1ZTYxN2EyNWNiMzE3ODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIK
IAorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTAw
LDMxICs1MDEsMzEgQEAgUm91bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tn
cm91bmRSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiBib3IKIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKIHsK
ICAgICBpZiAoY2xpcFJlY3QuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBS
b3VuZGVkUmVjdChjbGlwUmVjdCk7CisgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNy
ZWF0ZSBhIHJvdW5kZWQgcmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwg
d2hpbGUgbWFraW5nIHN1cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAg
ICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJl
Y3QucmFkaWkoKS5ib3R0b21SaWdodCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW50UmVj
dCB0b3BDb3JuZXIoY2xpcFJlY3QucmVjdCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgcmVj
dC5tYXhYKCkgLSBjbGlwUmVjdC5yZWN0KCkueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJl
Y3QoKS55KCkpOwotICAgICAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlp
OworICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBj
bGlwUmVjdC5yZWN0KCkueSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJl
Y3QubWF4WSgpIC0gY2xpcFJlY3QucmVjdCgpLnkoKSk7CisgICAgICAgICAgICBGbG9hdFJvdW5k
ZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlp
LnNldFRvcExlZnQoY2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFk
aWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFkaWkpKTsKIAotICAgICAgICAgICAgSW50UmVjdCBi
b3R0b21Db3JuZXIocmVjdC54KCksIHJlY3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0g
cmVjdC54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7Ci0gICAgICAgICAg
ICBSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CisgICAgICAgICAgICBGbG9h
dFJlY3QgYm90dG9tQ29ybmVyKHJlY3QueCgpLCByZWN0LnkoKSwgY2xpcFJlY3QucmVjdCgpLm1h
eFgoKSAtIHJlY3QueCgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOworICAg
ICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAg
ICAgICAgICBib3R0b21Db3JuZXJSYWRpaS5zZXRCb3R0b21SaWdodChjbGlwUmVjdC5yYWRpaSgp
LmJvdHRvbVJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJv
dW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwg
Ym90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0
LnJhZGlpKCkudG9wUmlnaHQoKS5pc0VtcHR5KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9t
TGVmdCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW50UmVjdCB0b3BDb3JuZXIocmVjdC54
KCksIGNsaXBSZWN0LnJlY3QoKS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0Lngo
KSwgcmVjdC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsKLSAgICAgICAgICAgIFJvdW5k
ZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCB0b3BD
b3JuZXIocmVjdC54KCksIGNsaXBSZWN0LnJlY3QoKS55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhY
KCkgLSByZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsKKyAgICAg
ICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwogICAgICAgICAg
ICAgdG9wQ29ybmVyUmFkaWkuc2V0VG9wUmlnaHQoY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChSb3VuZGVkUmVjdCh0b3BD
b3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKLSAg
ICAgICAgICAgIEludFJlY3QgYm90dG9tQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3Qu
eSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS5t
YXhZKCkgLSByZWN0LnkoKSk7Ci0gICAgICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9t
Q29ybmVyUmFkaWk7CisgICAgICAgICAgICBGbG9hdFJlY3QgYm90dG9tQ29ybmVyKGNsaXBSZWN0
LnJlY3QoKS54KCksIHJlY3QueSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCks
IGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7CisgICAgICAgICAgICBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSBib3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNv
cm5lclJhZGlpLnNldEJvdHRvbUxlZnQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdHRvbUNv
cm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTY1Myw3ICs2NTQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgICAgICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5j
ZSAhPSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAg
Um91bmRlZFJlY3QgYm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVl
ZEF2b2lkYW5jZSgqY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwg
aW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGlmIChib3Jk
ZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRS
ZWN0KGJvcmRlciwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciksIGJn
Q29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElu
bmVyUmVjdChjb250ZXh0LCByZWN0LCBib3JkZXIpOwpAQCAtMTk1NiwxMSArMTk1NywxMSBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAg
ICAgIC8vIENsaXAgdG8gdGhlIGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAg
aWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3Jk
ZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChvdXRlckJvcmRlcikpOwogICAgICAgICAvLyBpc1JlbmRlcmFibGUoKSBjaGVj
ayBhdm9pZHMgaXNzdWUgZGVzY3JpYmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODc4NwogICAgICAgICAvLyBUaGUgaW5zaWRlIHdpbGwgYmUgY2xpcHBlZCBv
dXQgbGF0ZXIgKGluIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aCkKICAgICAgICAg
aWYgKGlubmVyQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckJvcmRl
cikpOwogICAgIH0KIAogICAgIC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNp
bmcgZG9lc24ndCBjcmVhdGUgc2VhbXMKQEAgLTIwNTMsNyArMjA1NCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJC
b3JkZXJCb3R0b21XaWR0aCwgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRX
aWR0aCwKICAgICAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KGlubmVyQ2xpcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGlubmVyQ2xpcCkpOwogICAgICAg
ICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJv
cmRlclBhdGgsIGVkZ2VzLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBj
b2xvciwgU09MSUQsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgIH0KIApAQCAtMjA3Miw3ICsyMDczLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xp
cCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAg
ICAgICAgIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVy
Qm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKTsKKyAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3Qob3V0ZXJDbGlwKSk7CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBo
aWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJh
d1RoaWNrbmVzcywgc2lkZSwgc3R5bGUsIGNvbG9yLCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CkBAIC0yMTA0LDcgKzIxMDUsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJp
Z2h0V2lkdGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoY2xpcFJlY3QpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgo
Z3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNz
LCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2b2lkYW5jZSwg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjM1Myw3ICsyMzU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4
dCogZ3IKICAgICBCb3hTaWRlIHNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2UgZWRnZXNbXSkK
IHsKICAgICBncmFwaGljc0NvbnRleHQtPmNsaXAoY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJ
bm5lcihvdXRlckJvcmRlciwgZWRnZXMsIHNpZGUpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNs
aXBPdXRSb3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVy
LCBzaWRlKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRl
KSkpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlSW5mbyhC
b3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdApAQCAt
MjU1Miw3ICsyNTUzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91
dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpKTsKIAogICAgICAgICAgICAgICAgIFJvdW5kZWRS
ZWN0IGluZmx1ZW5jZVJlY3Qoc2hhZG93UmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogICAgICAgICAg
ICAgICAgIGluZmx1ZW5jZVJlY3QuZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50
ICsgc2hhZG93U3ByZWFkKTsKQEAgLTI1NjIsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIGZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1Nw
cmVhZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpi
bGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Zmls
bFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZmlsbFJlY3QpLCBDb2xvcjo6YmxhY2ssIHMt
PmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgp
OwpAQCAtMjU5MCw3ICsyNTkxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAg
ICAgICAgaWYgKGhvbGVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChoYXNC
b3JkZXJSYWRpdXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVj
dChib3JkZXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpLCBz
aGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRlci5yZWN0KCksIHNoYWRvd0Nv
bG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjYz
NSw3ICsyNjM2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShvdXRlclJlY3QsIHJvdW5kZWRIb2xlLCBmaWxs
Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShvdXRlclJlY3QsIEZsb2F0Um91bmRlZFJlY3Qocm91bmRlZEhvbGUpLCBm
aWxsQ29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2MGNmNjA3NTliMTgwNTlmNTNj
YmU5Y2E3NzE3ZjMyMTkwNjI4NmI3Li4zZTc1MzYwMjM0MzljOGJkZGI5OGNlODQzMjQzNGMyMTQ0
ZDNkYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1
LDYgKzU1LDcgQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJG
b2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYxNSw3ICszNjE2LDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigp
Lmhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVy
UmFkaXVzKCkgJiYgaW5Db250YWluaW5nQmxvY2tDaGFpbih0aGlzLCBsYXllcikpIHsKICAgICAg
ICAgICAgICAgICBMYXlvdXRQb2ludCBkZWx0YTsKICAgICAgICAgICAgICAgICBsYXllci0+Y29u
dmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRl
ZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoZGVsdGEsIGxheWVyLT5zaXplKCkpKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobGF5
ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVj
dChkZWx0YSwgbGF5ZXItPnNpemUoKSkpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5
ZXIgPT0gcm9vdExheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCmluZGV4IGZhOTRiOGI3YmI2OWYzMmFkMzAxN2MyZTk3Y2IyZmE3ZDM1YTkzZTUuLmVlYzYz
MGRiZDA0OThjMWEyODcxY2UxNDI4OGU3NjdhZTNmNjAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJE
b2N1bWVudC5oIgorI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udC5o
IgogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtNDUwLDcgKzQ1
MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhSZW5kZXJP
YmplY3QqIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3UmFpc2VkRWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHNoYWRvd0NvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0
U2l6ZSByYWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywg
cmFkaXVzLCByYWRpdXMsIHJhZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
LCByYWRpdXMpKTsKICAgICB9CiAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkg
KyBjbGlwLndpZHRoKCkgLyAyLjAsIGNsaXAubWF4WSgpKTsKICAgICBkcmF3QXhpYWxHcmFkaWVu
dChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoU2hhZGVHcmFkaWVudCksIGNsaXAubG9jYXRp
b24oKSwgRmxvYXRQb2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0
aW9uKTsKQEAgLTQ2NSw3ICs0NjYsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRG
aWVsZERlY29yYXRpb25zKFJlbmRlck9iamVjdCogYm94LCBjb25zdCBQYWludEluZgogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5k
ZWRCb3JkZXJGb3IocmVjdCkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QpKSk7CiAK
ICAgICAvLyBUaGlzIGdyYWRpZW50IGdldHMgZHJhd24gYmxhY2sgd2hlbiBwcmludGluZy4KICAg
ICAvLyBEbyBub3QgZHJhdyB0aGUgZ3JhZGllbnQgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0b3Ag
Ym9yZGVyLgpAQCAtNTg1LDkgKzU4Niw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIGJveCwgY29uc3QgUGFpCiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29u
dGV4dCk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdCh0aXRs
ZUNsaXAsIAorICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QodGl0bGVDbGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0g
c3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExl
ZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpKSwgRmxvYXRTaXplKDAsIDApLAotICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkp
IC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJC
b3R0b21XaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVj
dC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyQm90dG9tV2lkdGgoKSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCiAgICAgICAgIGRy
YXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50
KSwgdGl0bGVDbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQodGl0bGVDbGlwLngoKSwgdGl0bGVD
bGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogICAgICAgICBkcmF3QXhpYWxHcmFk
aWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoU2hpbmVHcmFkaWVudCksIEZsb2F0UG9p
bnQodGl0bGVDbGlwLngoKSwgdGl0bGVDbGlwLm1heFkoKSksIHRpdGxlQ2xpcC5sb2NhdGlvbigp
LCBFeHBvbmVudGlhbEludGVycG9sYXRpb24pOwpAQCAtNjA1LDkgKzYwNiw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Qq
IGJveCwgY29uc3QgUGFpCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKIAotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsIAorICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAg
ICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRl
clJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKLSAg
ICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxl
LmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmln
aHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21X
aWR0aCgpKSk7CisgICAgICAgICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZv
ckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lk
dGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUu
Ym9yZGVyQm90dG9tV2lkdGgoKSkpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+Zmls
bFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCkBAIC03MTYsNyArNzE3LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIGJv
eCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEkKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKICAgICAgICAgSW50U2l6ZSBj
b3JuZXJTaXplKGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwotICAgICAgICBSb3VuZGVkUmVj
dCBpbm5lckJvcmRlcih0cmFja0NsaXAsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUpOworICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyKHRy
YWNrQ2xpcCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSk7
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoaW5uZXJCb3JkZXIp
OwogCiAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CkBAIC04MzIsNyArODMzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBQYWludElu
Zm8mIHAKIAogICAgIC8vIDEuMikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYu
IEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBh
bmQgZGFya2VyIHRoZSBzdHJva2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0Lngo
KSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0Jhckhl
aWdodCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIsIHJv
dW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRp
dXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJv
dW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRp
dXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdo
dCAvIDIuOwogICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50Ojpj
cmVhdGUoRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAu
NSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBl
ckdyYWRpZW50SGVpZ2h0IC0gMS41KSk7CkBAIC05ODYsNyArOTg3LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKFJlbmRlck9iamVjdCosIFJl
bmRlck9iamVjdCoKIAogICAgICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNp
bXBsZSBiYWNrZ3JvdW5kIGljb24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24u
CiAgICAgICAgIENvbG9yIGJhY2tncm91bmRJbWFnZUNvbG9yID0gYnV0dG9uUmVuZGVyZXIgPyBD
b2xvcihidXR0b25SZW5kZXJlci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKSA6IENvbG9yKDIwNi4wZiwgMjA2LjBmLCAyMDYu
MGYpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHRodW1ibmFp
bFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNv
cm5lclNpemUsIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRo
dW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNr
Z3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5j
b250ZXh0KTsKQEAgLTEwMDcsNyArMTAwOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqCiAg
ICAgfQogCiAgICAgLy8gRm9yZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBh
aW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVj
dCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgcGljdHVy
ZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVS
ZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgY29ybmVyU2l6ZSwgcGlj
dHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGljb24tPnBhaW50KHBh
aW50SW5mby5jb250ZXh0LCB0aHVtYm5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmYWQzMWM2YjY1
MGY0NTcwYjM3MThiZmIzNGQ1ZmNjZTBlNzEyZTU5Li5kYWQxMmI5ZmU3ODQxMjQ0ZWI2MWE0ZGQx
Y2I1YTA1Y2Q0OWY4Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJF
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIkZpbGVMaXN0LmgiCisjaW1wb3J0
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVW
aWV3LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgpAQCAtMTE0Myw3ICsxMTQ0LDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwogCi0gICAgUm91bmRlZFJlY3QgYm9y
ZGVyID0gby0+c3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIsICZvLT52aWV3KCkpOworICAg
IEZsb2F0Um91bmRlZFJlY3QgYm9yZGVyID0gRmxvYXRSb3VuZGVkUmVjdChvLT5zdHlsZSgpLmdl
dFJvdW5kZWRCb3JkZXJGb3IociwgJm8tPnZpZXcoKSkpOwogICAgIGludCByYWRpdXMgPSBib3Jk
ZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3Bh
Y2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CkBAIC0xMTc3LDcgKzExNzgsNyBAQCB2b2lk
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbgogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGll
bnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCks
IEludFNpemUoKSwgSW50U2l6ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50
KSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJ
bnRTaXplKCksIEludFNpemUoKSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFp
bmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9w
U2hhZGluZy5nZXQoKSk7CiAgICAgfQpAQCAtMTE4NSw3ICsxMTg2LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW4KICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoUm91bmRlZFJlY3Qo
ZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBi
b3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNp
emUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpKSk7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgp
OwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdl
dCgpKTsKICAgICB9CkBAIC0xNDE0LDcgKzE0MTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
ZgogICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJv
dW5kcy54KCksIGJvdW5kcy5tYXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxz
ZSkpOwogCiAgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0KGJvdW5kcywg
cmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMs
IHJhZGl1cywgcmFkaXVzKSk7CiAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQo
KTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFy
aS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmlu
ZGV4IDA4ZGMxMDg3ZWQzMzQ5NjQ0NWJjNTZlZmVhNzU5MjRmOWRjNDQwZTkuLjIzZGFjYmNiYWI3
ZTVjZTA3M2U1NTkyODJjYWNjMjI5OGE3YWQ0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5o
IgpAQCAtNzU1LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxp
c3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAKICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2F2ZSgpOwogCi0gICAgUm91bmRlZFJlY3QgYm91bmQgPSBvLT5zdHls
ZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Iocik7CisgICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZCA9
IEZsb2F0Um91bmRlZFJlY3Qoby0+c3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAg
ICBpbnQgcmFkaXVzID0gYm91bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKIAogICAgIENH
Q29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CkBAIC03ODUs
MTQgKzc4NiwxNCBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9u
R3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRp
ZW50KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KFJvdW5kZWRSZWN0
KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwg
Ym91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3Np
bmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5kLnJh
ZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29u
dGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5jbGlwUm91bmRlZFJlY3QoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21H
cmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbUxlZnQo
KSwgYm91bmQucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJv
dHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9t
TGVmdCgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0
RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQpAQCAtOTU2LDcgKzk1Nyw3IEBAIGNvbnN0
IGludCB0cmFja1JhZGl1cyA9IDI7CiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFk
aXVzKTsKLSAgICBSb3VuZGVkUmVjdCBib3VuZHMociwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywg
cmFkaXVzKTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyLCByYWRpdXMsIHJhZGl1cywg
cmFkaXVzLCByYWRpdXMpOwogCiAgICAgaWYgKG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpID09ICBT
bGlkZXJIb3Jpem9udGFsUGFydCkKICAgICAgICAgYm91bmRzLnNldFJlY3QoSW50UmVjdChyLngo
KSwKQEAgLTk3Myw3ICs5NzQsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIENHQ29s
b3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
cGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZHMucmVjdCgpKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2Fs
bGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVM
TCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBhZG9wdENG
KENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3Mp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKaW5kZXgg
MjVjOTY2ODc1Y2U2MjgxZTdjZGNiMzUzZTEyNjY5YmI4ZDA0MjcxYS4uNTY4N2VjODAxZmQ0NzZi
ZmE4ODVkMjU5MTViNjBmODM1MGI1YmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Cb3hTaGFwZS5jcHAKQEAgLTE1NiwxOCArMTU2LDExIEBAIGJvb2wgQm94U2hhcGU6
OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50
ZXJ2YWxUb3AsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFJvdW5kZWRS
ZWN0KFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQotewotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgcmFk
aWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlp
LmJvdHRvbVJpZ2h0KCksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKLX0KLQogdm9p
ZCBCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QK
IHsKLSAgICBhZGRSb3VuZGVkUmVjdChwYXRocy5zaGFwZSwgbV9ib3VuZHMucmVjdCgpLCBtX2Jv
dW5kcy5yYWRpaSgpKTsKLSAgICBpZiAoc2hhcGVNYXJnaW4oKSkgewotICAgICAgICBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBtYXJnaW5Cb3VuZHMgPSBzaGFwZU1hcmdpbkJvdW5kcygpOwotICAg
ICAgICBhZGRSb3VuZGVkUmVjdChwYXRocy5tYXJnaW5TaGFwZSwgbWFyZ2luQm91bmRzLnJlY3Qo
KSwgbWFyZ2luQm91bmRzLnJhZGlpKCkpOwotICAgIH0KKyAgICBwYXRocy5zaGFwZS5hZGRSb3Vu
ZGVkUmVjdChtX2JvdW5kcywgUGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIGlm
IChzaGFwZU1hcmdpbigpKQorICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVj
dChzaGFwZU1hcmdpbkJvdW5kcygpLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IGRhODg3ZTQ3MmM1MWZkY2Q4NDAzMjRjYmY5NmEz
NDkxYjM0NWI2M2MuLmQ1MmRjYmE4ZDYxNTUwZTI0YzhhMzAzOTZjOTA3YTQ0NjQyNDkwYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
RmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTM1NSw3ICszNTYsNyBAQCB2
b2lkIEJhc2ljU2hhcGVJbnNldDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94KQogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgbGVmdCA9
IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9sZWZ0LCBib3VuZGluZ0JveC53aWR0aCgpKTsKICAgICBm
bG9hdCB0b3AgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fdG9wLCBib3VuZGluZ0JveC5oZWlnaHQo
KSk7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdCgKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHIgPSBG
bG9hdFJvdW5kZWRSZWN0KAogICAgICAgICBGbG9hdFJlY3QoCiAgICAgICAgICAgICBsZWZ0ICsg
Ym91bmRpbmdCb3gueCgpLAogICAgICAgICAgICAgdG9wICsgYm91bmRpbmdCb3gueSgpLApAQCAt
MzY3LDYgKzM2OCw3IEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgICAgIGZsb2F0U2l6ZUZvckxlbmd0aFNp
emUobV9ib3R0b21MZWZ0UmFkaXVzLCBib3VuZGluZ0JveCksCiAgICAgICAgIGZsb2F0U2l6ZUZv
ckxlbmd0aFNpemUobV9ib3R0b21SaWdodFJhZGl1cywgYm91bmRpbmdCb3gpCiAgICAgKTsKKyAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHIpOwogfQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJh
c2ljU2hhcGVJbnNldDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZSBwcm9n
cmVzcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAKaW5kZXggNTY2MjY0ZTgxZmM4NDU1MDI4MTAzZjY4YjAxZWYzMzNlNjEyNTZlYS4u
NzIyNzE3ZGMyZGRmNjBmMTY4MDE0NDlkOTA5Zjc2ZGFmMGEwYzZjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSb3VuZGVkUmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIEhV
RFNsaWRlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRHJhdyBn
dXR0ZXIKICAgICBJbnRTaXplIHJhZGl1cyhtX3JlY3QuaGVpZ2h0KCkgLyAyLCBtX3JlY3QuaGVp
Z2h0KCkgLyAyKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChtX3JlY3QsIHJhZGl1cywg
cmFkaXVzLCByYWRpdXMsIHJhZGl1cywgQ29sb3Ioc2xpZGVyR3V0dGVyQ29sb3IpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KG1fcmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSwgQ29sb3Ioc2xpZGVy
R3V0dGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgYnV0dG9u
CiAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtNDkxLDkgKzQ5Miw5IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6ZHJhdygpCiAgICAgSW50U2l6ZSBpbm5lclJhZGl1cyhib3JkZXJSYWRp
dXMgLSBib3JkZXJUaGlja25lc3MsIGJvcmRlclJhZGl1cyAtIGJvcmRlclRoaWNrbmVzcyk7CiAg
ICAgSW50UmVjdCBpbm5lclJlY3QoYm9yZGVyVGhpY2tuZXNzLCBib3JkZXJUaGlja25lc3MsIHdp
bmRvd1dpZHRoIC0gYm9yZGVyVGhpY2tuZXNzICogMiwgd2luZG93SGVpZ2h0IC0gYm9yZGVyVGhp
Y2tuZXNzICogMik7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChvdXRlclJlY3QsIG91
dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBDb2xvcihi
b3JkZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJSZWN0LCBvdXRlclJhZGl1cywgb3V0ZXJSYWRp
dXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cyksIENvbG9yKGJvcmRlckNvbG9yKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlQ29weSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoaW5uZXJSZWN0LCBpbm5lclJh
ZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgQ29sb3IoYmFja2dy
b3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1
cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzKSwgQ29sb3IoYmFja2dyb3VuZENvbG9yKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IHRoZSB3aWRnZXRzCiAgICAgbV9wbGF5
UGF1c2VCdXR0b24uZHJhdyhjb250ZXh0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>