<?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>69908</bug_id>
          
          <creation_ts>2011-10-12 00:19:59 -0700</creation_ts>
          <short_desc>Cleanup of HTMLSelectElement</short_desc>
          <delta_ts>2011-10-13 02:07:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69828</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>482271</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 00:19:59 -0700</bug_when>
    <thetext>Cleanup of HTMLSelectElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482325</commentid>
    <comment_count>1</comment_count>
      <attachid>110657</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 03:09:10 -0700</bug_when>
    <thetext>Created attachment 110657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482327</commentid>
    <comment_count>2</comment_count>
      <attachid>110657</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-12 03:17:42 -0700</bug_when>
    <thetext>Comment on attachment 110657
Patch

Attachment 110657 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10026839</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482332</commentid>
    <comment_count>3</comment_count>
      <attachid>110658</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 03:37:23 -0700</bug_when>
    <thetext>Created attachment 110658
Patch 2

Fix Chromium build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482333</commentid>
    <comment_count>4</comment_count>
      <attachid>110658</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-12 03:44:29 -0700</bug_when>
    <thetext>Comment on attachment 110658
Patch 2

Attachment 110658 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10032648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482337</commentid>
    <comment_count>5</comment_count>
      <attachid>110660</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 03:56:34 -0700</bug_when>
    <thetext>Created attachment 110660
Patch 3

Fix Chromium build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482464</commentid>
    <comment_count>6</comment_count>
      <attachid>110660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-12 09:44:05 -0700</bug_when>
    <thetext>Comment on attachment 110660
Patch 3

If you’re going to change the type, please change it to HTMLFormControlElement, not just HTMLElement. Unless maybe there was a reason you couldn’t do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482465</commentid>
    <comment_count>7</comment_count>
      <attachid>110660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-12 09:45:22 -0700</bug_when>
    <thetext>Comment on attachment 110660
Patch 3

I think the class is using the listItems() function too much internally with lots of local variables that have a reference to the list; this is leftover from where the list was in a separate object. I’d prefer a design where, inside the class, we call an explicit updateListItems function and then use m_listItems directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482738</commentid>
    <comment_count>8</comment_count>
      <attachid>110660</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-12 14:41:46 -0700</bug_when>
    <thetext>Comment on attachment 110660
Patch 3

Attachment 110660 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10044039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483043</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-13 00:42:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 110660 [details])
&gt; If you’re going to change the type, please change it to HTMLFormControlElement, not just HTMLElement. Unless maybe there was a reason you couldn’t do that?

m_listItems contains &lt;hr&gt; elements. This behavior was introduced by http://trac.webkit.org/changeset/10433.  I don&apos;t know this behavior is needed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483047</commentid>
    <comment_count>10</comment_count>
      <attachid>110809</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-13 00:58:45 -0700</bug_when>
    <thetext>Created attachment 110809
Patch for landing

Fix GTK build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483070</commentid>
    <comment_count>11</comment_count>
      <attachid>110809</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 02:07:27 -0700</bug_when>
    <thetext>Comment on attachment 110809
Patch for landing

Clearing flags on attachment: 110809

Committed r97354: &lt;http://trac.webkit.org/changeset/97354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483071</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 02:07:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110657</attachid>
            <date>2011-10-12 03:09:10 -0700</date>
            <delta_ts>2011-10-12 03:37:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69908-20111012190908.patch</filename>
            <type>text/plain</type>
            <size>41203</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMjc3NjUxNGMyNmFhZGNl
MWJjNzllNzcwYWE1NzkzZjEzNzVlNWViLi44NzU3MTY4NzdmMTFkY2JkODE3ZTFkZjA0NjNlYjY5
NGViMTAyZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMTAtMTMgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXAgb2YgSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBDaGFuZ2UgdGhlIG1fbGlzdEl0ZW1zIHR5cGU6IFZlY3RvcjxFbGVtZW50Kj4gLT4gVmVj
dG9yPEhUTUxFbGVtZW50Kj4KKyAgICAgICAgLSBSZW5hbWUgYSBtZW1iZXI6IG1fcmVjYWxjTGlz
dEl0ZW1zIC0+IG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zCisgICAgICAgIC0gRm9sZCBjaGVja0xp
c3RJdGVtcygpIGludG8gbGlzdEl0ZW1zKCkKKyAgICAgICAgLSBTdHlsZSBmaXhlcworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIGNsZWFudXAuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvbkluZGV4KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBk
b20vT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25FbGVtZW50Ojpv
cHRpb25JbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNldE9wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpu
ZXh0VmFsaWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zmly
c3RTZWxlY3RhYmxlTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNX
aXRob3V0VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
c2F2ZUZvcm1Db250cm9sU3RhdGUpOiBVc2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsYXN0U2VsZWN0ZWRMaXN0
SW5kZXgpOgorICAgICAgICBPcHRpbWl6ZSB0aGUgY29kZSBieSBpdGVyYXRpbmcgaW4gdGhlIHJl
dmVyc2Ugb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFo
ZWFkRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5
U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2VsZWN0RWxlbWVudCk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1l
bnVMaXN0OjppdGVtVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRl
bUFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpp
dGVtVG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCk6CisKIDIwMTEtMTAtMTIgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk0ODM2
KTogQW4gYXNzZXJ0aW9uIGZhaWxzIGluIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFsaWRG
b3JtQ29udHJvbEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggOTFhMmU5NDQ3N2JmZWM3YmFjNWQ5NTQz
OGY0NmY1OWJiMGU1YzRmZC4uYWU3MTFlMmM4ODViMjQ2YjU4ZGFmM2E1ZjRkYmM2YjgwZjY2ZWFi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKICAgICAK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzdGF0aWNfY2FzdDxIVE1M
U2VsZWN0RWxlbWVudCo+KHNlbGVjdE5vZGUpLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPihzZWxlY3ROb2RlKS0+bGlzdEl0ZW1zKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGlz
dEl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNh
dXNlIHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKaW5kZXggMmFiMDgxNDNjNjYxNDgzNDI0NjJjZWEyNjc2YzU2OWQwODMyY2Y0Zi4uN2Fh
MzA4NTZlNzJkMTljMzAwZDQ0Mzg2OGRhZGU5MjZkODI4MDRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
Omxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3RFbGVtZW50KSAKICAg
ICAgICAgcmV0dXJuIC0xOwogICAgIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHNlbGVjdEVsZW1lbnQtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50LT5saXN0SXRlbXMoKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBsaXN0SXRlbXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgaWYgKGxpc3RJdGVtc1tpXSA9PSBtX29wdGlv
bkVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGViZjY5NGI1YjQ2YmM4YTBhM2Nl
ZThiY2U2YWFmMWVjZDQ5MDYyYjUuLjdkMjg2ODMwMzkxYWY1OGFmNGM2ZDQ0NTFlMGIxOGIwZTk1
NTg3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKCkKIAogICAgIEFTU0VSVChzZWxl
Y3ROb2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihzZWxlY3RO
b2RlKS0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oc2VsZWN0Tm9kZSktPmxpc3RJ
dGVtcygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpc3RJdGVtcy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbiogb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2Jq
ZWN0KHRvSFRNTEVsZW1lbnQobGlzdEl0ZW1zW2ldKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNjVjNzdhODA3MGY0NGEyOWE1OGRjNTg4OTQ3MjRiNzhiN2NmODdhLi5mOTQ3NTZjYTEwYjRl
NGUyYjk3N2IxMGFjNjIyZGY3ZTU5ODk2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEx
NTAsNyArMTE1MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdW
YWx1ZSgpIGNvbnN0CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3ROb2RlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihub2Rl
KTsKICAgICAgICAgICAgIGludCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0Tm9kZS0+c2VsZWN0ZWRJ
bmRleCgpOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiBsaXN0SXRlbXMgPSBz
ZWxlY3ROb2RlLT5saXN0SXRlbXMoKTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxl
bWVudCo+IGxpc3RJdGVtcyA9IHNlbGVjdE5vZGUtPmxpc3RJdGVtcygpOwogICAgICAgICAKICAg
ICAgICAgICAgIEVsZW1lbnQqIHNlbGVjdGVkT3B0aW9uID0gMDsKICAgICAgICAgICAgIGlmIChz
ZWxlY3RlZEluZGV4ID49IDAgJiYgc2VsZWN0ZWRJbmRleCA8IChpbnQpbGlzdEl0ZW1zLnNpemUo
KSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMDYyNDUxOGVhZmQ4YzM4
NTIzNjE1Yjk0ZDMyZjZiZWEwYWI1YzM3Zi4uMmJkZGRhMWZlNzFmN2U5ZmE5M2NhZThhNjQ3MmNl
ZmIzNWQ4MzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcApAQCAtNDksNyAr
NDksNyBAQCBpbnQgT3B0aW9uRWxlbWVudDo6b3B0aW9uSW5kZXgoSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdEVsZW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAKICAgICAvLyBMZXQncyBkbyB0aGlzIGR5
bmFtaWNhbGx5LiBNaWdodCBiZSBhIGJpdCBzbG93LCBidXQgd2UncmUgc3VyZQogICAgIC8vIHdl
IHdvbid0IGZvcmdldCB0byB1cGRhdGUgYSBtZW1iZXIgdmFyaWFibGUgaW4gc29tZSBjYXNlcy4u
LgotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0RWxlbWVudC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0
RWxlbWVudC0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKICAg
ICBpbnQgb3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYjc2
NzI3Y2UyNGRiZDgyNTMzOTMyMWYzNmVhZGRhMjc2N2Q0ZjJjOC4uZjM2N2E0MjdiMzU1MWRkYjll
MDllNjlkNWZmZDQwZDRiNmFiMjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgSFRNTFNlbGVjdEVsZW1lbnQ6OkhUTUxTZWxl
Y3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MKICAg
ICAsIG1fdXNlckRyaXZlbkNoYW5nZShmYWxzZSkKICAgICAsIG1fbXVsdGlwbGUoZmFsc2UpCiAg
ICAgLCBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlKGZhbHNlKQotICAgICwgbV9yZWNhbGNMaXN0SXRl
bXMoZmFsc2UpCisgICAgLCBtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKIH0KQEAgLTE5OSw3ICsxOTksOCBAQCBpbnQg
SFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0CiAK
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChIVE1MRWxlbWVudCogZWxlbWVudCwgSFRNTEVs
ZW1lbnQqIGJlZm9yZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPEhUTUxFbGVt
ZW50PiBwcm90ZWN0TmV3Q2hpbGQoZWxlbWVudCk7IC8vIG1ha2Ugc3VyZSB0aGUgZWxlbWVudCBp
cyByZWYnZCBhbmQgZGVyZWYnZCBzbyB3ZSBkb24ndCBsZWFrIGl0CisgICAgLy8gTWFrZSBzdXJl
IHRoZSBlbGVtZW50IGlzIHJlZidkIGFuZCBkZXJlZidkIHNvIHdlIGRvbid0IGxlYWsgaXQuCisg
ICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwcm90ZWN0TmV3Q2hpbGQoZWxlbWVudCk7CiAKICAgICBp
ZiAoIWVsZW1lbnQgfHwgIShlbGVtZW50LT5oYXNMb2NhbE5hbWUob3B0aW9uVGFnKSB8fCBlbGVt
ZW50LT5oYXNMb2NhbE5hbWUoaHJUYWcpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDcgKzIz
MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCog
b3B0aW9uKQogCiBTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIHsKLSAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0
IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAoaXRlbXNb
aV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpICYmIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVt
ZW50Kj4oaXRlbXNbaV0pLT5zZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oaXRlbXNbaV0pLT52YWx1ZSgpOwpAQCAtMjQzLDcgKzI0
NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyAmdmFs
dWUpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBmaW5kIHRoZSBvcHRpb24gd2l0aCB2YWx1ZSgp
IG1hdGNoaW5nIHRoZSBnaXZlbiBwYXJhbWV0ZXIKICAgICAvLyBhbmQgbWFrZSBpdCB0aGUgY3Vy
cmVudCBzZWxlY3Rpb24uCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKICAgICB1bnNpZ25lZCBvcHRpb25JbmRleCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChpdGVtc1tpXS0+aGFz
TG9jYWxOYW1lKG9wdGlvblRhZykpIHsKQEAgLTI4MSwxMyArMjgyLDEzIEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIpCiAgICAgICAgIHBhcnNlTXVs
dGlwbGVBdHRyaWJ1dGUoYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFjY2Vz
c2tleUF0dHIpIHsKLSAgICAgICAgLy8gRklYTUU6IGlnbm9yZSBmb3IgdGhlIG1vbWVudAorICAg
ICAgICAvLyBGSVhNRTogaWdub3JlIGZvciB0aGUgbW9tZW50LgogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICAvLyBEb24ndCBtYXAgJ2FsaWduJyBh
dHRyaWJ1dGUuICBUaGlzIG1hdGNoZXMgd2hhdCBGaXJlZm94LCBPcGVyYSBhbmQgSUUgZG8uCisg
ICAgICAgIC8vIERvbid0IG1hcCAnYWxpZ24nIGF0dHJpYnV0ZS4gVGhpcyBtYXRjaGVzIHdoYXQg
RmlyZWZveCwgT3BlcmEgYW5kIElFIGRvLgogICAgICAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNzIKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbmNoYW5nZUF0dHIpIHsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmNo
YW5nZUF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
LSAgICB9IGVsc2UKKyAgICBlbHNlCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCkBAIC0zMjksNyArMzMwLDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKGJvb2wgdXBkYXRlU2Vs
ZWN0ZWRTdGF0ZXMpIGNvbnN0CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtc0lmTmVlZGVkKCkKIHsKLSAgICBpZiAobV9yZWNhbGNMaXN0SXRlbXMpCisgICAgaWYgKG1f
c2hvdWxkUmVjYWxjTGlzdEl0ZW1zKQogICAgICAgICByZWNhbGNMaXN0SXRlbXMoKTsKIH0KIApA
QCAtMzgzLDE1ICszODQsMTUgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uKHVu
c2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uLCBFeGMKICAgICAgICAgaW5k
ZXggPSBtYXhTZWxlY3RJdGVtcyAtIDE7CiAgICAgaW50IGRpZmYgPSBpbmRleCAgLSBsZW5ndGgo
KTsKICAgICBIVE1MRWxlbWVudCogYmVmb3JlID0gMDsKLSAgICAvLyBvdXQgb2YgYXJyYXkgYm91
bmRzID8gZmlyc3QgaW5zZXJ0IGVtcHR5IGR1bW1pZXMKKyAgICAvLyBPdXQgb2YgYXJyYXkgYm91
bmRzPyBGaXJzdCBpbnNlcnQgZW1wdHkgZHVtbWllcy4KICAgICBpZiAoZGlmZiA+IDApIHsKICAg
ICAgICAgc2V0TGVuZ3RoKGluZGV4LCBlYyk7Ci0gICAgICAgIC8vIHJlcGxhY2UgYW4gZXhpc3Rp
bmcgZW50cnkgPworICAgICAgICAvLyBSZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5PwogICAgIH0g
ZWxzZSBpZiAoZGlmZiA8IDApIHsKICAgICAgICAgYmVmb3JlID0gdG9IVE1MRWxlbWVudChvcHRp
b25zKCktPml0ZW0oaW5kZXgrMSkpOwogICAgICAgICByZW1vdmUoaW5kZXgpOwogICAgIH0KLSAg
ICAvLyBmaW5hbGx5IGFkZCB0aGUgbmV3IGVsZW1lbnQKKyAgICAvLyBGaW5hbGx5IGFkZCB0aGUg
bmV3IGVsZW1lbnQuCiAgICAgaWYgKCFlYykgewogICAgICAgICBhZGQob3B0aW9uLCBiZWZvcmUs
IGVjKTsKICAgICAgICAgaWYgKGRpZmYgPj0gMCAmJiBvcHRpb24tPnNlbGVjdGVkKCkpCkBAIC00
MDYsNyArNDA3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVk
IG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG5ld0xlbiA9IG1heFNlbGVjdEl0
ZW1zOwogICAgIGludCBkaWZmID0gbGVuZ3RoKCkgLSBuZXdMZW47CiAKLSAgICBpZiAoZGlmZiA8
IDApIHsgLy8gYWRkIGR1bW15IGVsZW1lbnRzCisgICAgaWYgKGRpZmYgPCAwKSB7IC8vIEFkZCBk
dW1teSBlbGVtZW50cy4KICAgICAgICAgZG8gewogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IG9wdGlvbiA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBmYWxzZSk7CiAg
ICAgICAgICAgICBBU1NFUlQob3B0aW9uKTsKQEAgLTQxNSw3ICs0MTYsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSB3aGlsZSAoKytkaWZmKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKIAogICAgICAgICAvLyBSZW1vdmluZyBjaGlsZHJlbiBmaXJlcyBtdXRhdGlvbiBl
dmVudHMsIHdoaWNoIG1pZ2h0IG11dGF0ZSB0aGUgRE9NIGZ1cnRoZXIsIHNvIHdlIGZpcnN0IGNv
cHkgb3V0IGEgbGlzdAogICAgICAgICAvLyBvZiBlbGVtZW50cyB0aGF0IHdlIGludGVuZCB0byBy
ZW1vdmUgdGhlbiBhdHRlbXB0IHRvIHJlbW92ZSB0aGVtIG9uZSBhdCBhIHRpbWUuCkBAIC00MzEs
OSArNDMyLDggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5l
d0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpdGVtc1RvUmVtb3ZlLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBFbGVtZW50KiBpdGVt
ID0gaXRlbXNUb1JlbW92ZVtpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChpdGVtLT5wYXJlbnRO
b2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChpdGVtLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAg
ICAgICAgaXRlbS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChpdGVtLCBlYyk7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBA
IC00NDgsNyArNDQ4LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3QKIC8vIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgdmFsaWQgaXRlbSBj
bG9zZXN0IHRvIHRoYXQgYm91bmRhcnkgd2hpY2ggaXMgcGFzdCB8bGlzdEluZGV4fCBpZiB0aGVy
ZSBpcyBvbmUuCiAvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgfGxpc3RJbmRleHwuCiAvLyBWYWxp
ZCBtZWFucyB0aGF0IGl0IGlzIGVuYWJsZWQgYW5kIGFuIG9wdGlvbiBlbGVtZW50LgotaW50IEhU
TUxTZWxlY3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBs
aXN0SXRlbXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tp
cCkKK2ludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEhU
TUxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGludCBza2lwKQogewogICAgIEFTU0VSVChkaXJlY3Rpb24gPT0gLTEgfHwgZGlyZWN0
aW9uID09IDEpOwogICAgIGludCBsYXN0R29vZEluZGV4ID0gbGlzdEluZGV4OwpAQCAtNDc4LDcg
KzQ3OCw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdElu
ZGV4KGludCBzdGFydEluZGV4KSBjb25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmZpcnN0
U2VsZWN0YWJsZUxpc3RJbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYg
aXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgaW5kZXggPSBuZXh0VmFsaWRJbmRleChpdGVt
cywgaXRlbXMuc2l6ZSgpLCBTa2lwQmFja3dhcmRzLCBJTlRfTUFYKTsKICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA9PSBpdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiAt
MTsKQEAgLTQ5MywxMSArNDkzLDExIEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVj
dGFibGVMaXN0SW5kZXgoKSBjb25zdAogLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQg
dmFsaWQgaXRlbSBvbmUgcGFnZSBhd2F5IGZyb20gfHN0YXJ0SW5kZXh8IGluIGRpcmVjdGlvbiB8
ZGlyZWN0aW9ufC4KIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXhQYWdlQXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0
CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKLSAg
ICAvLyBDYW4ndCB1c2UgZGF0YS0+c2l6ZSgpIGJlY2F1c2UgcmVuZGVyZXIgZm9yY2VzIGEgbWlu
aW11bSBzaXplLgorICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOworICAgIC8vIENhbid0IHVzZSBtX3NpemUgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMg
YSBtaW5pbXVtIHNpemUuCiAgICAgaW50IHBhZ2VTaXplID0gMDsKICAgICBpZiAocmVuZGVyZXIo
KS0+aXNMaXN0Qm94KCkpCi0gICAgICAgIHBhZ2VTaXplID0gdG9SZW5kZXJMaXN0Qm94KHJlbmRl
cmVyKCkpLT5zaXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGlsbCBzaG93IGNvbnRleHQKKyAgICAg
ICAgcGFnZVNpemUgPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIoKSktPnNpemUoKSAtIDE7IC8v
IC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dC4KIAogICAgIC8vIE9uZSBwYWdlIGF3YXksIGJ1
dCBub3Qgb3V0c2lkZSB2YWxpZCBib3VuZHMuCiAgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBv
cHRpb24gaXRlbSBvbmUgcGFnZSBhd2F5LCB0aGUgaW5kZXggaXMgY2hvc2VuLgpAQCAtNTE0LDcg
KzUxNCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdEFsbCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFyZWQg
dG8gdGhlIG5ldyBzZWxlY3RBbGwgc2VsZWN0aW9uCi0gICAgLy8gd2hlbiBkaXNwYXRjaGluZyBj
aGFuZ2UgZXZlbnRzCisgICAgLy8gd2hlbiBkaXNwYXRjaGluZyBjaGFuZ2UgZXZlbnRzLgogICAg
IHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKICAgICBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlID0gdHJ1
ZTsKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzYXZlTGFzdFNl
bGVjdGlvbigpCiAgICAgfQogCiAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uY2xlYXIoKTsK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNv
bnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25F
bGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAg
ICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9u
RWxlbWVudC0+c2VsZWN0ZWQoKSk7CkBAIC01NDYsMTAgKzU0NiwxMCBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChpbnQgaW5kZXgpCiAgICAg
bV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCA9IGluZGV4OwogCiAgICAgLy8gQ2FjaGUgdGhl
IHNlbGVjdGlvbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdG9yZSB0aGUgb2xkIHNlbGVjdGlvbiBhcyB0
aGUgbmV3Ci0gICAgLy8gc2VsZWN0aW9uIHBpdm90cyBhcm91bmQgdGhpcyBhbmNob3IgaW5kZXgK
KyAgICAvLyBzZWxlY3Rpb24gcGl2b3RzIGFyb3VuZCB0aGlzIGFuY2hvciBpbmRleC4KICAgICBt
X2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLmNsZWFyKCk7CiAKLSAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25F
bGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgbV9jYWNoZWRTdGF0
ZUZvckFjdGl2ZVNlbGVjdGlvbi5hcHBlbmQob3B0aW9uRWxlbWVudCAmJiBvcHRpb25FbGVtZW50
LT5zZWxlY3RlZCgpKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAgICAg
dW5zaWduZWQgc3RhcnQgPSBtaW4obV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleCk7CiAgICAgdW5zaWduZWQgZW5kID0gbWF4KG1fYWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOwogCi0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCog
b3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGlmICgh
b3B0aW9uRWxlbWVudCB8fCBpdGVtc1tpXS0+ZGlzYWJsZWQoKSkKQEAgLTU5MSw3ICs1OTEsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25DaGFuZ2UoKQogewogICAgIEFTU0VS
VCghdXNlc01lbnVMaXN0KCkgfHwgbV9tdWx0aXBsZSk7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogCiAgICAgLy8gSWYgdGhlIGNhY2hlZCBzZWxlY3Rp
b24gbGlzdCBpcyBlbXB0eSwgb3IgdGhlIHNpemUgaGFzIGNoYW5nZWQsIHRoZW4gZmlyZQogICAg
IC8vIGRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCwgYW5kIHJldHVybiBlYXJseS4KQEAg
LTYwMCw3ICs2MDAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25DaGFuZ2Uo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gVXBkYXRlIGxhc3RPbkNoYW5nZVNl
bGVjdGlvbiBhbmQgZmlyZSBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQKKyAgICAvLyBV
cGRhdGUgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uIGFuZCBmaXJlIGRpc3BhdGNoRm9ybUNvbnRyb2xD
aGFuZ2VFdmVudC4KICAgICBib29sIGZpcmVPbkNoYW5nZSA9IGZhbHNlOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVt
ZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKQEAgLTY0NSwy
OCArNjQ1LDIzIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25S
ZW5kZXJlcigpCiAgICAgfQogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpjaGVja0xpc3RJ
dGVtcygpIGNvbnN0Citjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RJdGVtcygpIGNvbnN0CiB7CisgICAgaWYgKG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1z
KQorICAgICAgICBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4odGhpcyktPnJlY2FsY0xp
c3RJdGVtc0ludGVybmFsKCk7CisgICAgZWxzZSB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
IFZlY3RvcjxFbGVtZW50Kj4gaXRlbXMgPSBtX2xpc3RJdGVtczsKLSAgICBjb25zdF9jYXN0PEhU
TUxTZWxlY3RFbGVtZW50Kj4odGhpcyktPnJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGZhbHNlKTsK
LSAgICBBU1NFUlQoaXRlbXMgPT0gbV9saXN0SXRlbXMpOworICAgICAgICBWZWN0b3I8SFRNTEVs
ZW1lbnQqPiBpdGVtcyA9IG1fbGlzdEl0ZW1zOworICAgICAgICBjb25zdF9jYXN0PEhUTUxTZWxl
Y3RFbGVtZW50Kj4odGhpcyktPnJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGZhbHNlKTsKKyAgICAg
ICAgQVNTRVJUKGl0ZW1zID09IG1fbGlzdEl0ZW1zKTsKICNlbmRpZgotfQotCi1jb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEl0ZW1zKCkgY29uc3QKLXsKLSAg
ICBpZiAobV9yZWNhbGNMaXN0SXRlbXMpCi0gICAgICAgIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVs
ZW1lbnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNoZWNrTGlzdEl0ZW1zKCk7Ci0KKyAgICB9CiAgICAgcmV0dXJuIG1fbGlzdEl0ZW1zOwog
fQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMoKQogewotICAg
IG1fcmVjYWxjTGlzdEl0ZW1zID0gdHJ1ZTsKKyAgICBtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcyA9
IHRydWU7CiAgICAgLy8gTWFudWFsIHNlbGVjdGlvbiBhbmNob3IgaXMgcmVzZXQgd2hlbiBtYW5p
cHVsYXRpbmcgdGhlIHNlbGVjdCBwcm9ncmFtbWF0aWNhbGx5LgogICAgIG1fYWN0aXZlU2VsZWN0
aW9uQW5jaG9ySW5kZXggPSAtMTsKICAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsK
QEAgLTY3OSwxNiArNjc0LDE2IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtc0ludGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpCiB7CiAgICAgbV9saXN0SXRl
bXMuY2xlYXIoKTsKIAotICAgIG1fcmVjYWxjTGlzdEl0ZW1zID0gZmFsc2U7CisgICAgbV9zaG91
bGRSZWNhbGNMaXN0SXRlbXMgPSBmYWxzZTsKIAogICAgIE9wdGlvbkVsZW1lbnQqIGZvdW5kU2Vs
ZWN0ZWQgPSAwOwogICAgIGZvciAoTm9kZSogY3VycmVudE5vZGUgPSB0aGlzLT5maXJzdENoaWxk
KCk7IGN1cnJlbnROb2RlOykgewotICAgICAgICBpZiAoIWN1cnJlbnROb2RlLT5pc0VsZW1lbnRO
b2RlKCkpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50Tm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHRTaWJsaW5n
KHRoaXMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBFbGVt
ZW50KiBjdXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGN1cnJlbnROb2RlKTsKKyAgICAg
ICAgSFRNTEVsZW1lbnQqIGN1cnJlbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGN1cnJl
bnROb2RlKTsKIAogICAgICAgICAvLyBvcHRncm91cCB0YWdzIG1heSBub3QgbmVzdC4gSG93ZXZl
ciwgYm90aCBGaXJlRm94IGFuZCBJRSB3aWxsCiAgICAgICAgIC8vIGZsYXR0ZW4gdGhlIHRyZWUg
YXV0b21hdGljYWxseSwgc28gd2UgZm9sbG93IHN1aXQuCkBAIC03MTUsNyArNzEwLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoYm9vbCB1cGRhdGVT
ZWxlY3RlZFN0YXRlcykKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChj
dXJyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHJUYWcpKQorICAgICAgICBpZiAoY3VycmVu
dC0+aGFzVGFnTmFtZShoclRhZykpCiAgICAgICAgICAgICBtX2xpc3RJdGVtcy5hcHBlbmQoY3Vy
cmVudCk7CiAKICAgICAgICAgLy8gSW4gY29uZm9ybWluZyBIVE1MIGNvZGUsIG9ubHkgPG9wdGdy
b3VwPiBhbmQgPG9wdGlvbj4gd2lsbCBiZSBmb3VuZApAQCAtNzMyLDggKzcyNyw4IEBAIGludCBI
VE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
aW5kZXggPSAwOwogCi0gICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIGZpcnN0IG9wdGlv
biBzZWxlY3RlZAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1z
KCk7CisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIGZpcnN0IG9wdGlvbiBzZWxlY3Rl
ZC4KKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1z
W2ldKSkgewogICAgICAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCkBAIC03
NTIsNyArNzQ3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleElu
dGVybmFsKGludCBvcHRpb25JbmRleCwgYm9vbCBkZXNlbGVjdCwKICAgICBpZiAoIW1fbXVsdGlw
bGUpCiAgICAgICAgIGRlc2VsZWN0ID0gdHJ1ZTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RJbmRleCA9IG9wdGlvblRvTGlzdElu
ZGV4KG9wdGlvbkluZGV4KTsKIAogICAgIEVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50ID0gMDsKQEAg
LTc5NSw3ICs3OTAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4
SW50ZXJuYWwoaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2VsZWN0LAogCiBpbnQgSFRNTFNlbGVj
dEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KGludCBvcHRpb25JbmRleCkgY29uc3QKIHsKLSAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0
IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBsaXN0
U2l6ZSA9IHN0YXRpY19jYXN0PGludD4oaXRlbXMuc2l6ZSgpKTsKICAgICBpZiAob3B0aW9uSW5k
ZXggPCAwIHx8IG9wdGlvbkluZGV4ID49IGxpc3RTaXplKQogICAgICAgICByZXR1cm4gLTE7CkBA
IC04MTQsNyArODA5LDcgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xpc3RJbmRl
eChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdFRv
T3B0aW9uSW5kZXgoaW50IGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJ
bmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KGl0ZW1zLnNpemUoKSkgfHwgIWlzT3B0aW9uRWxlbWVu
dChpdGVtc1tsaXN0SW5kZXhdKSkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04MzEsNyArODI2
LDcgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChpbnQgbGlzdElu
ZGV4KSBjb25zdAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFBh
c3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUpCiB7CiAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0
aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuCi0gICAg
Ly8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBkdXJpbmcgYmx1ciBldmVudCBkaXNwYXRjaGFs
CisgICAgLy8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBkdXJpbmcgYmx1ciBldmVudCBkaXNw
YXRjaGFsLgogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rp
b24oKTsKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3Vz
RXZlbnQob2xkRm9jdXNlZE5vZGUpOwpAQCAtODQ5LDcgKzg0NCw3IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5v
ZGUpCiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRh
dGlvbihFbGVtZW50KiBleGNsdWRlRWxlbWVudCkKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+
JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVt
cy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaXRlbXNbaV0gPT0gZXhjbHVkZUVsZW1lbnQp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg2MSwxOCArODU2LDE2IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihFbGVtZW50KiBleGNs
dWRlRWxlbWVudCkKIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3Rh
dGUoU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBp
dGVtcyA9IGxpc3RJdGVtcygpOwotICAgIGludCBsZW5ndGggPSBpdGVtcy5zaXplKCk7Ci0KLSAg
ICAvLyBGSVhNRTogQ2hhbmdlIHRoaXMgY29kZSB0byB1c2UgdGhlIG5ldyBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkIGNvZGUgcGF0aC4KLSAgICBWZWN0b3I8Y2hhciwgMTAyND4gY2hh
cmFjdGVycyhsZW5ndGgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAg
ICBzaXplX3QgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRp
b25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgYm9vbCBzZWxl
Y3RlZCA9IG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKTsKLSAgICAg
ICAgY2hhcmFjdGVyc1tpXSA9IHNlbGVjdGVkID8gJ1gnIDogJy4nOworICAgICAgICBidWlsZGVy
LmFwcGVuZChzZWxlY3RlZCA/ICdYJyA6ICcuJyk7CiAgICAgfQotCi0gICAgdmFsdWUgPSBTdHJp
bmcoY2hhcmFjdGVycy5kYXRhKCksIGxlbmd0aCk7CisgICAgdmFsdWUgPSBidWlsZGVyLnRvU3Ry
aW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg4MCwxMCArODczLDEwIEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYg
c3RhdGUpCiB7CiAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwotICAgIGludCBsZW5ndGggPSBpdGVtcy5zaXpl
KCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7
CisgICAgc2l6ZV90IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKIAotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09w
dGlvbkVsZW1lbnQoaXRlbXNbaV0pKQogICAgICAgICAgICAgb3B0aW9uRWxlbWVudC0+c2V0U2Vs
ZWN0ZWRTdGF0ZShzdGF0ZVtpXSA9PSAnWCcpOwogICAgIH0KQEAgLTkwOCw3ICs5MDEsNyBAQCBi
b29sIEhUTUxTZWxlY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGxpc3Qs
IGJvb2wpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgc3VjY2Vzc2Z1bCA9IGZh
bHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7Cisg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
T3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7
CkBAIC05MjksNyArOTIyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVzZXQoKQogICAg
IE9wdGlvbkVsZW1lbnQqIGZpcnN0T3B0aW9uID0gMDsKICAgICBPcHRpb25FbGVtZW50KiBzZWxl
Y3RlZE9wdGlvbiA9IDA7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50
KGl0ZW1zW2ldKTsKICAgICAgICAgaWYgKCFvcHRpb25FbGVtZW50KQpAQCAtMTAwMyw3ICs5OTYs
NyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciA9IHN0
YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCktPmtleUlkZW50aWZpZXIoKTsKICAgICAg
ICAgYm9vbCBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
bGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0aGlzLT5saXN0SXRlbXMoKTsKICAgICAgICAgaW50IGxp
c3RJbmRleCA9IG9wdGlvblRvTGlzdEluZGV4KHNlbGVjdGVkSW5kZXgoKSk7CiAKICAgICAgICAg
aWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJpZ2h0IikK
QEAgLTExMzUsNyArMTEyOCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVj
dGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmCiAgICAgT3B0aW9u
RWxlbWVudCogb3B0aW9uID0gdG9PcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KTsKICAgICBp
ZiAob3B0aW9uKSB7CiAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBhbiBhY3RpdmUg
c2VsZWN0aW9uIChsaWtlIGR1cmluZyBkcmFnCi0gICAgICAgIC8vIHNlbGVjdGlvbiksIHNob3Vs
ZCBzZWxlY3Qgb3IgZGVzZWxlY3QKKyAgICAgICAgLy8gc2VsZWN0aW9uKSwgc2hvdWxkIHNlbGVj
dCBvciBkZXNlbGVjdC4KICAgICAgICAgaWYgKG9wdGlvbi0+c2VsZWN0ZWQoKSAmJiBtdWx0aSkK
ICAgICAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSBmYWxzZTsKIApAQCAtMTE1NCw3
ICsxMTQ3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShp
bnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAgICBpZiAobV9hY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleCA8IDAgJiYgIW11bHRpU2VsZWN0KQogICAgICAgICBzZXRBY3RpdmVT
ZWxlY3Rpb25BbmNob3JJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCi0gICAgLy8gU2V0IHRoZSBz
ZWxlY3Rpb24gc3RhdGUgb2YgdGhlIGNsaWNrZWQgb3B0aW9uCisgICAgLy8gU2V0IHRoZSBzZWxl
Y3Rpb24gc3RhdGUgb2YgdGhlIGNsaWNrZWQgb3B0aW9uLgogICAgIGlmIChvcHRpb24gJiYgIWNs
aWNrZWRFbGVtZW50LT5kaXNhYmxlZCgpKQogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkU3Rh
dGUodHJ1ZSk7CiAKQEAgLTExNzEsNyArMTE2NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlm
CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0
aGlzLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRp
Y19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKICAg
ICAgICAgZm9jdXMoKTsKQEAgLTEyMjQsNyArMTIxNyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAg
ICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KHN0YXJ0
SW5kZXgsIFNraXBCYWNrd2FyZHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJlbnQgZW5k
IGluZGV4CisgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBpbmRleCBiYXNlZCBvbiB0aGUgY3Vy
cmVudCBlbmQgaW5kZXguCiAgICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIp
IHsKICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KG1f
YWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOwogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OwpAQCAtMTMyNiwyMCArMTMxOSwxNCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsYXN0
U2VsZWN0ZWRMaXN0SW5kZXgoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaXRl
cmF0ZSB0aGUgbGlzdEl0ZW1zIGluIHRoZSByZXZlcnNlIG9yZGVyLgotICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0
ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVt
ZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkgewotICAgICAgICAgICAgaWYgKG9wdGlv
bkVsZW1lbnQtPnNlbGVjdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAg
ICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgfQorICAgIGNvbnN0IFZlY3Rv
cjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGZvciAodW5zaWduZWQg
aSA9IGl0ZW1zLnNpemUoKTsgaTspIHsKKyAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbLS1pXSkpIHsKKyAgICAgICAgICAgIGlm
IChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBpOwog
ICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJuIGZvdW5kID8gc3RhdGljX2Nhc3Q8aW50Pihp
bmRleCkgOiAtMTsKKyAgICByZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc3RyaXBMZWFk
aW5nV2hpdGVTcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTEzNzYsNyArMTM2Myw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAKICAgICAgICAgaWYgKGMgPT0gbV9yZXBlYXRpbmdDaGFyKSB7CiAgICAgICAgICAgICAv
LyBUaGUgdXNlciBpcyBsaWtlbHkgdHJ5aW5nIHRvIGN5Y2xlIHRocm91Z2ggYWxsIHRoZSBpdGVt
cyBzdGFydGluZwotICAgICAgICAgICAgLy8gd2l0aCB0aGlzIGNoYXJhY3Rlciwgc28ganVzdCBz
ZWFyY2ggb24gdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gd2l0aCB0aGlzIGNoYXJhY3Rl
ciwgc28ganVzdCBzZWFyY2ggb24gdGhlIGNoYXJhY3Rlci4KICAgICAgICAgICAgIHByZWZpeCA9
IFN0cmluZygmYywgMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3JlcGVhdGlu
Z0NoYXIgPSAwOwpAQCAtMTM4NSw3ICsxMzcyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
dHlwZUFoZWFkRmluZChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGl0
ZW1Db3VudCA9IGl0ZW1zLnNpemUoKTsKICAgICBpZiAoaXRlbUNvdW50IDwgMSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTQzMyw4ICsxNDIwLDggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWNj
ZXNzS2V5U2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAgaWYgKCFmb2N1c2VkKCkpCiAg
ICAgICAgIGFjY2Vzc0tleUFjdGlvbihmYWxzZSk7CiAgICAgCi0gICAgLy8gaWYgdGhpcyBpbmRl
eCBpcyBhbHJlYWR5IHNlbGVjdGVkLCB1bnNlbGVjdC4gb3RoZXJ3aXNlIHVwZGF0ZSB0aGUgc2Vs
ZWN0ZWQgaW5kZXgKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVt
cygpOworICAgIC8vIElmIHRoaXMgaW5kZXggaXMgYWxyZWFkeSBzZWxlY3RlZCwgdW5zZWxlY3Qu
IG90aGVyd2lzZSB1cGRhdGUgdGhlIHNlbGVjdGVkIGluZGV4LgorICAgIGNvbnN0IFZlY3RvcjxI
VE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBsaXN0SW5kZXggPSBv
cHRpb25Ub0xpc3RJbmRleChpbmRleCk7CiAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVs
ZW1lbnQgPSAobGlzdEluZGV4ID49IDAgPyB0b09wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4
XSkgOiAwKSkgewogICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkKQEAgLTE0
NTUsNyArMTQ0Miw3IEBAIHVuc2lnbmVkIEhUTUxTZWxlY3RFbGVtZW50OjpsZW5ndGgoKSBjb25z
dAogewogICAgIHVuc2lnbmVkIG9wdGlvbnMgPSAwOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGlzT3B0aW9uRWxlbWVudChpdGVtc1tpXSkp
CiAgICAgICAgICAgICArK29wdGlvbnM7CkBAIC0xNDY2LDcgKzE0NTMsNyBAQCB1bnNpZ25lZCBI
VE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKCkgY29uc3QKIAogSFRNTFNlbGVjdEVsZW1lbnQqIHRv
U2VsZWN0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmIChlbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZykp
CisgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50LT5oYXNUYWdOYW1l
KHNlbGVjdFRhZykpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVu
dCo+KGVsZW1lbnQpOwogICAgIC8vIEZJWE1FOiB0b0Zvb0NsYXNzKCkgZnVuY3Rpb24gc2hvdWxk
IG5vdCByZXR1cm4gMC4KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaAppbmRleCA3ZDQzNzlmNjcyYWFjZWRjMzk0MmNhM2Y2NjU4MTNkNzk0NTA3Y2Uy
Li5mOWRlNDMxOWEzMzliOTAxYzc1NDkyYmUxNjM1NThkM2YwNjhjNDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlY2FsY0xpc3RJdGVtcygpOwogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSWZO
ZWVkZWQoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0
OworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9BbnlFbGVtZW50KTsK
ICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKQEAgLTE0Myw3ICsxNDMs
NiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQbGFjZWhvbGRlckxhYmVsT3B0aW9uKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGNoZWNrTGlzdEl0ZW1zKCkgY29uc3Q7CiAgICAgdm9pZCByZWNhbGNM
aXN0SXRlbXNJbnRlcm5hbChib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSk7CiAgICAg
dm9pZCBzZXRTZWxlY3RlZEluZGV4SW50ZXJuYWwoaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2Vs
ZWN0ID0gdHJ1ZSwgYm9vbCBmaXJlT25DaGFuZ2VOb3cgPSBmYWxzZSwgYm9vbCB1c2VyRHJpdmVu
Q2hhbmdlID0gdHJ1ZSk7CiAgICAgdm9pZCBkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24o
RWxlbWVudCogZXhjbHVkZUVsZW1lbnQgPSAwKTsKQEAgLTE2MCw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgICAgICBTa2lwQmFja3dhcmRzID0gLTEsCiAgICAgICAgIFNraXBGb3J3YXJkcyA9IDEK
ICAgICB9OwotICAgIHN0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uLCBpbnQgc2tpcCk7
CisgICAgc3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgbGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uLCBpbnQgc2tpcCk7CiAg
ICAgaW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGludCBzdGFydEluZGV4KSBjb25zdDsKICAg
ICBpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGludCBzdGFydEluZGV4KSBjb25zdDsK
ICAgICBpbnQgZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3Q7CkBAIC0xNjgsNyArMTY3
LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShp
bnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbikgY29uc3Q7CiAKICAgICBDb2xsZWN0aW9uQ2Fj
aGUgbV9jb2xsZWN0aW9uSW5mbzsKLSAgICBWZWN0b3I8RWxlbWVudCo+IG1fbGlzdEl0ZW1zOwor
ICAgIC8vIG1fbGlzdEl0ZW1zIGNvbnRhaW5zIEhUTUxPcHRpb25FbGVtZW50LCBIVE1MT3B0R3Jv
dXBFbGVtZW50LCBvciBIVE1MSFJFbGVtZW50LgorICAgIFZlY3RvcjxIVE1MRWxlbWVudCo+IG1f
bGlzdEl0ZW1zOwogICAgIFZlY3Rvcjxib29sPiBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbjsKICAg
ICBWZWN0b3I8Ym9vbD4gbV9jYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbjsKICAgICBET01U
aW1lU3RhbXAgbV9sYXN0Q2hhclRpbWU7CkBAIC0xODEsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fdXNlckRyaXZlbkNoYW5nZTsKICAgICBib29sIG1fbXVsdGlwbGU7CiAgICAgYm9v
bCBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlOwotICAgIGJvb2wgbV9yZWNhbGNMaXN0SXRlbXM7Cisg
ICAgYm9vbCBtX3Nob3VsZFJlY2FsY0xpc3RJdGVtczsKIH07CiAKIEhUTUxTZWxlY3RFbGVtZW50
KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCmluZGV4IDEyNjA1ZTI4NzZmMWFhYjdmM2JhMWM2N2MyMzVkYzVkZWEz
MTQwYTguLjk1NDVjNmNhNDRjOGZhZjk4ZjUwNTMzZjAxZDNlMzJiNTVhZTc5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBGb250Q2FjaGVQ
dXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKIAogICAgIGlmIChtX29wdGlv
bnNDaGFuZ2VkKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9
IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVt
cygpOworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9T
ZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7
CiAgICAgICAgIGludCBzaXplID0gbnVtSXRlbXMoKTsKICAgICAgICAgCiAgICAgICAgIGZsb2F0
IHdpZHRoID0gMDsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZv
Y3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaQog
CiAgICAgLy8gTm8gc2VsZWN0ZWQgaXRlbXMsIGZpbmQgdGhlIGZpcnN0IG5vbi1kaXNhYmxlZCBp
dGVtLgogICAgIGludCBzaXplID0gbnVtSXRlbXMoKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxI
VE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2ldKTsKICAgICAgICAgaWYgKG9w
dGlvbkVsZW1lbnQgJiYgIW9wdGlvbkVsZW1lbnQtPmRpc2FibGVkKCkpIHsKQEAgLTM3MSw3ICsz
NzEsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVu
dGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMo
KTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5s
aXN0SXRlbXMoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07
CiAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChlbGVt
ZW50KTsKIApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVt
Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiB2b2lk
IFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgaW50IGxpc3RJbmRleCkKIHsKICAgICBI
VE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMg
PSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBs
aXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBs
aXN0SXRlbXNbbGlzdEluZGV4XTsKICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0g
dG9PcHRpb25FbGVtZW50KGVsZW1lbnQpOwogCkBAIC02ODAsNyArNjgwLDcgQEAgYm9vbCBSZW5k
ZXJMaXN0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmUKIHsKICAgICBpZiAoIVJlbmRlckJsb2NrOjpub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIHBvaW50SW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBoaXRUZXN0
QWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGxpc3RJdGVtcyA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSgpKSktPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0
SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5s
aXN0SXRlbXMoKTsKICAgICBpbnQgc2l6ZSA9IG51bUl0ZW1zKCk7CiAgICAgTGF5b3V0UG9pbnQg
YWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNTdhM2FkMjQ4
NDVmZTQ5MmVmMGIzMzg3YWE5Y2JkMzlkNzRiZjU5ZS4uM2YzNTZhNjhlYzBjZDljY2M0ZWYxZmY5
MWQxOTNkZGM2YjZiZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKIHZv
aWQgUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCgpCiB7CiAgICAgZmxvYXQgbWF4
T3B0aW9uV2lkdGggPSAwOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9
IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVt
cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVj
dEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKICAg
ICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7ICAgIAogICAgIEZvbnRDYWNoZVB1cmdlUHJl
dmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogdm9pZCBSZW5kZXJNZW51TGlz
dDo6c2V0VGV4dEZyb21PcHRpb24oaW50IG9wdGlvbkluZGV4KQogewogICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5v
ZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+
bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9
IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOwog
CiAgICAgaW50IGkgPSBzZWxlY3QtPm9wdGlvblRvTGlzdEluZGV4KG9wdGlvbkluZGV4KTsKQEAg
LTM3Myw3ICszNzMsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpkaWRVcGRhdGVBY3RpdmVPcHRp
b24oaW50IG9wdGlvbkluZGV4KQogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9
IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAg
ICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRl
bXMoKTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIApAQCAtNDAyLDcgKzQwMiw3IEBAIFN0cmluZyBSZW5kZXJNZW51TGlz
dDo6aXRlbUFjY2Vzc2liaWxpdHlUZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAg
ICAvLyBBbGxvdyB0aGUgYWNjZXNzaWJsZSBuYW1lIGJlIGNoYW5nZWQgaWYgbmVjZXNzYXJ5Lgog
ICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50
Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+
PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTQxMiw3
ICs0MTIsNyBAQCBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1BY2Nlc3NpYmlsaXR5VGV4dCh1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Ub29s
VGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCog
c2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVt
cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3Qt
Pmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNb
bGlzdEluZGV4XTsKQEAgLTQyMiw3ICs0MjIsNyBAQCBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0
ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIGJvb2wgUmVuZGVyTWVudUxpc3Q6
Oml0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxl
Y3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVj
dC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxp
c3RJdGVtc1tsaXN0SW5kZXhdOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIGJvb2wgUmVuZGVyTWVudUxp
c3Q6Oml0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogUG9wdXBNZW51U3R5
bGUgUmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7
CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlz
dEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4
ID49IGxpc3RJdGVtcy5zaXplKCkpIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1ha2luZyBhbiBv
dXQgb2YgYm91bmRzIGFjY2VzcywgdGhlbiB3ZSB3YW50IHRvIHVzZSB0aGUgc3R5bGUKICAgICAg
ICAgLy8gb2YgYSBkaWZmZXJlbnQgb3B0aW9uIGVsZW1lbnQgKGluZGV4IDApLiBIb3dldmVyLCBp
ZiB0aGVyZSBpc24ndCBhbiBvcHRpb24gZWxlbWVudApAQCAtNDYzLDcgKzQ2Myw3IEBAIFBvcHVw
TWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdAogQ29sb3IgUmVuZGVyTWVudUxpc3Q6Oml0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1Nl
bGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7
CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC01NTcs
NyArNTU3LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6cG9wdXBEaWRIaWRlKCkKIGJvb2wgUmVu
ZGVyTWVudUxpc3Q6Oml0ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7
CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlz
dEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4
ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50
KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC01NjcsNyArNTY3LDcgQEAgYm9v
bCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29u
c3QKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkg
Y29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxI
VE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChs
aXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKQEAgLTU3Nyw3ICs1Nzcs
NyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgp
IGNvbnN0CiBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCh1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0
RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBW
ZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAg
ICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110658</attachid>
            <date>2011-10-12 03:37:23 -0700</date>
            <delta_ts>2011-10-12 03:56:27 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-69908-20111012193721.patch</filename>
            <type>text/plain</type>
            <size>41411</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMjc3NjUxNGMyNmFhZGNl
MWJjNzllNzcwYWE1NzkzZjEzNzVlNWViLi44NzU3MTY4NzdmMTFkY2JkODE3ZTFkZjA0NjNlYjY5
NGViMTAyZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMTAtMTMgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXAgb2YgSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBDaGFuZ2UgdGhlIG1fbGlzdEl0ZW1zIHR5cGU6IFZlY3RvcjxFbGVtZW50Kj4gLT4gVmVj
dG9yPEhUTUxFbGVtZW50Kj4KKyAgICAgICAgLSBSZW5hbWUgYSBtZW1iZXI6IG1fcmVjYWxjTGlz
dEl0ZW1zIC0+IG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zCisgICAgICAgIC0gRm9sZCBjaGVja0xp
c3RJdGVtcygpIGludG8gbGlzdEl0ZW1zKCkKKyAgICAgICAgLSBTdHlsZSBmaXhlcworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIGNsZWFudXAuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvbkluZGV4KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBk
b20vT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25FbGVtZW50Ojpv
cHRpb25JbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNldE9wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpu
ZXh0VmFsaWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zmly
c3RTZWxlY3RhYmxlTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNX
aXRob3V0VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
c2F2ZUZvcm1Db250cm9sU3RhdGUpOiBVc2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsYXN0U2VsZWN0ZWRMaXN0
SW5kZXgpOgorICAgICAgICBPcHRpbWl6ZSB0aGUgY29kZSBieSBpdGVyYXRpbmcgaW4gdGhlIHJl
dmVyc2Ugb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFo
ZWFkRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5
U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2VsZWN0RWxlbWVudCk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1l
bnVMaXN0OjppdGVtVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRl
bUFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpp
dGVtVG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCk6CisKIDIwMTEtMTAtMTIgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk0ODM2
KTogQW4gYXNzZXJ0aW9uIGZhaWxzIGluIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFsaWRG
b3JtQ29udHJvbEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggOTFhMmU5NDQ3N2JmZWM3YmFjNWQ5NTQz
OGY0NmY1OWJiMGU1YzRmZC4uYWU3MTFlMmM4ODViMjQ2YjU4ZGFmM2E1ZjRkYmM2YjgwZjY2ZWFi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKICAgICAK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzdGF0aWNfY2FzdDxIVE1M
U2VsZWN0RWxlbWVudCo+KHNlbGVjdE5vZGUpLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPihzZWxlY3ROb2RlKS0+bGlzdEl0ZW1zKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGlz
dEl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNh
dXNlIHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKaW5kZXggMmFiMDgxNDNjNjYxNDgzNDI0NjJjZWEyNjc2YzU2OWQwODMyY2Y0Zi4uN2Fh
MzA4NTZlNzJkMTljMzAwZDQ0Mzg2OGRhZGU5MjZkODI4MDRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
Omxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3RFbGVtZW50KSAKICAg
ICAgICAgcmV0dXJuIC0xOwogICAgIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHNlbGVjdEVsZW1lbnQtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50LT5saXN0SXRlbXMoKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBsaXN0SXRlbXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgaWYgKGxpc3RJdGVtc1tpXSA9PSBtX29wdGlv
bkVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGViZjY5NGI1YjQ2YmM4YTBhM2Nl
ZThiY2U2YWFmMWVjZDQ5MDYyYjUuLjdkMjg2ODMwMzkxYWY1OGFmNGM2ZDQ0NTFlMGIxOGIwZTk1
NTg3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKCkKIAogICAgIEFTU0VSVChzZWxl
Y3ROb2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihzZWxlY3RO
b2RlKS0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oc2VsZWN0Tm9kZSktPmxpc3RJ
dGVtcygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpc3RJdGVtcy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbiogb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2Jq
ZWN0KHRvSFRNTEVsZW1lbnQobGlzdEl0ZW1zW2ldKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNjVjNzdhODA3MGY0NGEyOWE1OGRjNTg4OTQ3MjRiNzhiN2NmODdhLi5mOTQ3NTZjYTEwYjRl
NGUyYjk3N2IxMGFjNjIyZGY3ZTU5ODk2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEx
NTAsNyArMTE1MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdW
YWx1ZSgpIGNvbnN0CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3ROb2RlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihub2Rl
KTsKICAgICAgICAgICAgIGludCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0Tm9kZS0+c2VsZWN0ZWRJ
bmRleCgpOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiBsaXN0SXRlbXMgPSBz
ZWxlY3ROb2RlLT5saXN0SXRlbXMoKTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxl
bWVudCo+IGxpc3RJdGVtcyA9IHNlbGVjdE5vZGUtPmxpc3RJdGVtcygpOwogICAgICAgICAKICAg
ICAgICAgICAgIEVsZW1lbnQqIHNlbGVjdGVkT3B0aW9uID0gMDsKICAgICAgICAgICAgIGlmIChz
ZWxlY3RlZEluZGV4ID49IDAgJiYgc2VsZWN0ZWRJbmRleCA8IChpbnQpbGlzdEl0ZW1zLnNpemUo
KSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMDYyNDUxOGVhZmQ4YzM4
NTIzNjE1Yjk0ZDMyZjZiZWEwYWI1YzM3Zi4uMmJkZGRhMWZlNzFmN2U5ZmE5M2NhZThhNjQ3MmNl
ZmIzNWQ4MzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcApAQCAtNDksNyAr
NDksNyBAQCBpbnQgT3B0aW9uRWxlbWVudDo6b3B0aW9uSW5kZXgoSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdEVsZW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAKICAgICAvLyBMZXQncyBkbyB0aGlzIGR5
bmFtaWNhbGx5LiBNaWdodCBiZSBhIGJpdCBzbG93LCBidXQgd2UncmUgc3VyZQogICAgIC8vIHdl
IHdvbid0IGZvcmdldCB0byB1cGRhdGUgYSBtZW1iZXIgdmFyaWFibGUgaW4gc29tZSBjYXNlcy4u
LgotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0RWxlbWVudC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0
RWxlbWVudC0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKICAg
ICBpbnQgb3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYjc2
NzI3Y2UyNGRiZDgyNTMzOTMyMWYzNmVhZGRhMjc2N2Q0ZjJjOC4uNWEzNDI1MTA3YjQwMzIzNWQ0
OThjNWNhMzgwNzA1ODZhNmUwZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2
aWdhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC04NSw3
ICs4Niw3IEBAIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jCiAgICAgLCBtX3VzZXJEcml2ZW5DaGFu
Z2UoZmFsc2UpCiAgICAgLCBtX211bHRpcGxlKGZhbHNlKQogICAgICwgbV9hY3RpdmVTZWxlY3Rp
b25TdGF0ZShmYWxzZSkKLSAgICAsIG1fcmVjYWxjTGlzdEl0ZW1zKGZhbHNlKQorICAgICwgbV9z
aG91bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2Vs
ZWN0VGFnKSk7CiB9CkBAIC0xOTksNyArMjAwLDggQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50Ojph
Y3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSBjb25zdAogCiB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gcHJvdGVjdE5ld0NoaWxk
KGVsZW1lbnQpOyAvLyBtYWtlIHN1cmUgdGhlIGVsZW1lbnQgaXMgcmVmJ2QgYW5kIGRlcmVmJ2Qg
c28gd2UgZG9uJ3QgbGVhayBpdAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyByZWYn
ZCBhbmQgZGVyZWYnZCBzbyB3ZSBkb24ndCBsZWFrIGl0LgorICAgIFJlZlB0cjxIVE1MRWxlbWVu
dD4gcHJvdGVjdE5ld0NoaWxkKGVsZW1lbnQpOwogCiAgICAgaWYgKCFlbGVtZW50IHx8ICEoZWxl
bWVudC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykgfHwgZWxlbWVudC0+aGFzTG9jYWxOYW1lKGhy
VGFnKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOSw3ICsyMzEsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpyZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbikKIAogU3RyaW5nIEhU
TUxTZWxlY3RFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNMb2NhbE5hbWUob3B0
aW9uVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KGl0ZW1zW2ldKS0+c2Vs
ZWN0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dCo+KGl0ZW1zW2ldKS0+dmFsdWUoKTsKQEAgLTI0Myw3ICsyNDUsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgICAgICByZXR1cm47
CiAgICAgLy8gZmluZCB0aGUgb3B0aW9uIHdpdGggdmFsdWUoKSBtYXRjaGluZyB0aGUgZ2l2ZW4g
cGFyYW1ldGVyCiAgICAgLy8gYW5kIG1ha2UgaXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgdW5zaWduZWQg
b3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXpl
KCk7IGkrKykgewogICAgICAgICBpZiAoaXRlbXNbaV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcp
KSB7CkBAIC0yODEsMTMgKzI4MywxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gbXVsdGlwbGVBdHRyKQogICAgICAgICBwYXJzZU11bHRpcGxlQXR0cmlidXRlKGF0dHIp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBpZ25vcmUgZm9yIHRoZSBtb21lbnQKKyAgICAgICAgLy8gRklYTUU6IGlnbm9y
ZSBmb3IgdGhlIG1vbWVudC4KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0
dHIpIHsKLSAgICAgICAgLy8gRG9uJ3QgbWFwICdhbGlnbicgYXR0cmlidXRlLiAgVGhpcyBtYXRj
aGVzIHdoYXQgRmlyZWZveCwgT3BlcmEgYW5kIElFIGRvLgorICAgICAgICAvLyBEb24ndCBtYXAg
J2FsaWduJyBhdHRyaWJ1dGUuIFRoaXMgbWF0Y2hlcyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJ
RSBkby4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDcyCi0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25jaGFuZ2VBdHRyKSB7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25jaGFuZ2VBdHRyKQogICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAgfSBlbHNlCisgICAgZWxz
ZQogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIApAQCAtMzI5LDcgKzMzMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAog
CiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpCiB7Ci0g
ICAgaWYgKG1fcmVjYWxjTGlzdEl0ZW1zKQorICAgIGlmIChtX3Nob3VsZFJlY2FsY0xpc3RJdGVt
cykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiB9CiAKQEAgLTM4MywxNSArMzg1LDE1IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRNTE9w
dGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjCiAgICAgICAgIGluZGV4ID0gbWF4U2VsZWN0SXRlbXMg
LSAxOwogICAgIGludCBkaWZmID0gaW5kZXggIC0gbGVuZ3RoKCk7CiAgICAgSFRNTEVsZW1lbnQq
IGJlZm9yZSA9IDA7Ci0gICAgLy8gb3V0IG9mIGFycmF5IGJvdW5kcyA/IGZpcnN0IGluc2VydCBl
bXB0eSBkdW1taWVzCisgICAgLy8gT3V0IG9mIGFycmF5IGJvdW5kcz8gRmlyc3QgaW5zZXJ0IGVt
cHR5IGR1bW1pZXMuCiAgICAgaWYgKGRpZmYgPiAwKSB7CiAgICAgICAgIHNldExlbmd0aChpbmRl
eCwgZWMpOwotICAgICAgICAvLyByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5ID8KKyAgICAgICAg
Ly8gUmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeT8KICAgICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7
CiAgICAgICAgIGJlZm9yZSA9IHRvSFRNTEVsZW1lbnQob3B0aW9ucygpLT5pdGVtKGluZGV4KzEp
KTsKICAgICAgICAgcmVtb3ZlKGluZGV4KTsKICAgICB9Ci0gICAgLy8gZmluYWxseSBhZGQgdGhl
IG5ldyBlbGVtZW50CisgICAgLy8gRmluYWxseSBhZGQgdGhlIG5ldyBlbGVtZW50LgogICAgIGlm
ICghZWMpIHsKICAgICAgICAgYWRkKG9wdGlvbiwgYmVmb3JlLCBlYyk7CiAgICAgICAgIGlmIChk
aWZmID49IDAgJiYgb3B0aW9uLT5zZWxlY3RlZCgpKQpAQCAtNDA2LDcgKzQwOCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICBuZXdMZW4gPSBtYXhTZWxlY3RJdGVtczsKICAgICBpbnQgZGlmZiA9
IGxlbmd0aCgpIC0gbmV3TGVuOwogCi0gICAgaWYgKGRpZmYgPCAwKSB7IC8vIGFkZCBkdW1teSBl
bGVtZW50cworICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQgZHVtbXkgZWxlbWVudHMuCiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBvcHRpb24gPSBkb2N1bWVudCgp
LT5jcmVhdGVFbGVtZW50KG9wdGlvblRhZywgZmFsc2UpOwogICAgICAgICAgICAgQVNTRVJUKG9w
dGlvbik7CkBAIC00MTUsNyArNDE3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVu
Z3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0gd2hpbGUgKCsrZGlmZik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICAgICAg
Ly8gUmVtb3ZpbmcgY2hpbGRyZW4gZmlyZXMgbXV0YXRpb24gZXZlbnRzLCB3aGljaCBtaWdodCBt
dXRhdGUgdGhlIERPTSBmdXJ0aGVyLCBzbyB3ZSBmaXJzdCBjb3B5IG91dCBhIGxpc3QKICAgICAg
ICAgLy8gb2YgZWxlbWVudHMgdGhhdCB3ZSBpbnRlbmQgdG8gcmVtb3ZlIHRoZW4gYXR0ZW1wdCB0
byByZW1vdmUgdGhlbSBvbmUgYXQgYSB0aW1lLgpAQCAtNDMxLDkgKzQzMyw4IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNUb1JlbW92ZS5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgRWxlbWVudCogaXRlbSA9IGl0ZW1zVG9SZW1vdmVbaV0u
Z2V0KCk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAg
ICBpZiAoaXRlbS0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIGl0ZW0tPnBhcmVudE5v
ZGUoKS0+cmVtb3ZlQ2hpbGQoaXRlbSwgZWMpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwpAQCAtNDQ4LDcgKzQ0OSw3IEBAIGJv
b2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0CiAvLyBP
dGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZhbGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5k
YXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRleHwgaWYgdGhlcmUgaXMgb25lLgogLy8gT3RoZXJ3
aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8LgogLy8gVmFsaWQgbWVhbnMgdGhhdCBpdCBpcyBl
bmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVudC4KLWludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4
dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdElu
ZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCitpbnQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Om5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRl
bXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKIHsK
ICAgICBBU1NFUlQoZGlyZWN0aW9uID09IC0xIHx8IGRpcmVjdGlvbiA9PSAxKTsKICAgICBpbnQg
bGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKQEAgLTQ3OCw3ICs0NzksNyBAQCBpbnQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkg
Y29uc3QKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpmaXJzdFNlbGVjdGFibGVMaXN0SW5kZXgo
KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1z
KCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7
CiAgICAgaW50IGluZGV4ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tp
cEJhY2t3YXJkcywgSU5UX01BWCk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRl
eCkgPT0gaXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gLTE7CkBAIC00OTMsMTEgKzQ5NCwx
MSBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29u
c3QKIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGl0ZW0gb25lIHBhZ2Ug
YXdheSBmcm9tIHxzdGFydEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwuCiBpbnQgSFRN
TFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0
SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7Ci0gICAgLy8gQ2FuJ3QgdXNlIGRhdGEt
PnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6ZS4KKyAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAvLyBDYW4n
dCB1c2UgbV9zaXplIGJlY2F1c2UgcmVuZGVyZXIgZm9yY2VzIGEgbWluaW11bSBzaXplLgogICAg
IGludCBwYWdlU2l6ZSA9IDA7CiAgICAgaWYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpKQotICAg
ICAgICBwYWdlU2l6ZSA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2l6ZSgpIC0gMTsg
Ly8gLTEgc28gd2Ugc3RpbGwgc2hvdyBjb250ZXh0CisgICAgICAgIHBhZ2VTaXplID0gdG9SZW5k
ZXJMaXN0Qm94KHJlbmRlcmVyKCkpLT5zaXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGlsbCBzaG93
IGNvbnRleHQuCiAKICAgICAvLyBPbmUgcGFnZSBhd2F5LCBidXQgbm90IG91dHNpZGUgdmFsaWQg
Ym91bmRzLgogICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgb3B0aW9uIGl0ZW0gb25lIHBhZ2Ug
YXdheSwgdGhlIGluZGV4IGlzIGNob3Nlbi4KQEAgLTUxNCw3ICs1MTUsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTYXZl
IHRoZSBzZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0QWxs
IHNlbGVjdGlvbgotICAgIC8vIHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cworICAgIC8v
IHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cy4KICAgICBzYXZlTGFzdFNlbGVjdGlvbigp
OwogCiAgICAgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IHRydWU7CkBAIC01MzQsNyArNTM1LDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oKQogICAgIH0KIAog
ICAgIG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uLmNsZWFyKCk7Ci0gICAgY29uc3QgVmVjdG9yPEVs
ZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVu
dCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIG1fbGFzdE9uQ2hhbmdlU2Vs
ZWN0aW9uLmFwcGVuZChvcHRpb25FbGVtZW50ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkp
OwpAQCAtNTQ2LDEwICs1NDcsMTAgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZl
U2VsZWN0aW9uQW5jaG9ySW5kZXgoaW50IGluZGV4KQogICAgIG1fYWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXggPSBpbmRleDsKIAogICAgIC8vIENhY2hlIHRoZSBzZWxlY3Rpb24gc3RhdGUgc28g
d2UgY2FuIHJlc3RvcmUgdGhlIG9sZCBzZWxlY3Rpb24gYXMgdGhlIG5ldwotICAgIC8vIHNlbGVj
dGlvbiBwaXZvdHMgYXJvdW5kIHRoaXMgYW5jaG9yIGluZGV4CisgICAgLy8gc2VsZWN0aW9uIHBp
dm90cyBhcm91bmQgdGhpcyBhbmNob3IgaW5kZXguCiAgICAgbV9jYWNoZWRTdGF0ZUZvckFjdGl2
ZVNlbGVjdGlvbi5jbGVhcigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBs
aXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxl
bWVudChpdGVtc1tpXSk7CiAgICAgICAgIG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24u
YXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CkBAIC01
NjksNyArNTcwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVj
dGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKQogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWlu
KG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgp
OwogICAgIHVuc2lnbmVkIGVuZCA9IG1heChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4LCBt
X2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0
ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09w
dGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBpZiAoIW9wdGlvbkVsZW1lbnQgfHwgaXRl
bXNbaV0tPmRpc2FibGVkKCkpCkBAIC01OTEsNyArNTkyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKIHsKICAgICBBU1NFUlQoIXVzZXNNZW51TGlzdCgpIHx8
IG1fbXVsdGlwbGUpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKIAogICAgIC8vIElmIHRoZSBjYWNoZWQgc2VsZWN0aW9uIGxpc3QgaXMgZW1wdHksIG9y
IHRoZSBzaXplIGhhcyBjaGFuZ2VkLCB0aGVuIGZpcmUKICAgICAvLyBkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQsIGFuZCByZXR1cm4gZWFybHkuCkBAIC02MDAsNyArNjAxLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIC8vIFVwZGF0ZSBsYXN0T25DaGFuZ2VTZWxlY3Rpb24gYW5kIGZpcmUgZGlz
cGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50CisgICAgLy8gVXBkYXRlIGxhc3RPbkNoYW5nZVNl
bGVjdGlvbiBhbmQgZmlyZSBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQuCiAgICAgYm9v
bCBmaXJlT25DaGFuZ2UgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9
IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CkBAIC02NDUsMjggKzY0NiwyMyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKQogICAgIH0KIH0K
IAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hlY2tMaXN0SXRlbXMoKSBjb25zdAorY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25z
dAogeworICAgIGlmIChtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcykKKyAgICAgICAgY29uc3RfY2Fz
dDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCgpOwor
ICAgIGVsc2UgewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBWZWN0b3I8RWxlbWVudCo+IGl0
ZW1zID0gbV9saXN0SXRlbXM7Ci0gICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRo
aXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChmYWxzZSk7Ci0gICAgQVNTRVJUKGl0ZW1zID09
IG1fbGlzdEl0ZW1zKTsKKyAgICAgICAgVmVjdG9yPEhUTUxFbGVtZW50Kj4gaXRlbXMgPSBtX2xp
c3RJdGVtczsKKyAgICAgICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5y
ZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChmYWxzZSk7CisgICAgICAgIEFTU0VSVChpdGVtcyA9PSBt
X2xpc3RJdGVtcyk7CiAjZW5kaWYKLX0KLQotY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgSFRNTFNl
bGVjdEVsZW1lbnQ6Omxpc3RJdGVtcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVjYWxjTGlzdEl0
ZW1zKQotICAgICAgICBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4odGhpcyktPnJlY2Fs
Y0xpc3RJdGVtc0ludGVybmFsKCk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0xpc3RJdGVtcygp
OwotCisgICAgfQogICAgIHJldHVybiBtX2xpc3RJdGVtczsKIH0KIAogdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKCkKIHsKLSAgICBtX3JlY2FsY0xpc3RJdGVtcyA9
IHRydWU7CisgICAgbV9zaG91bGRSZWNhbGNMaXN0SXRlbXMgPSB0cnVlOwogICAgIC8vIE1hbnVh
bCBzZWxlY3Rpb24gYW5jaG9yIGlzIHJlc2V0IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBzZWxlY3Qg
cHJvZ3JhbW1hdGljYWxseS4KICAgICBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4ID0gLTE7
CiAgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCk7CkBAIC02NzksMTYgKzY3NSwxNiBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChib29sIHVw
ZGF0ZVNlbGVjdGVkU3RhdGVzKQogewogICAgIG1fbGlzdEl0ZW1zLmNsZWFyKCk7CiAKLSAgICBt
X3JlY2FsY0xpc3RJdGVtcyA9IGZhbHNlOworICAgIG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zID0g
ZmFsc2U7CiAKICAgICBPcHRpb25FbGVtZW50KiBmb3VuZFNlbGVjdGVkID0gMDsKICAgICBmb3Ig
KE5vZGUqIGN1cnJlbnROb2RlID0gdGhpcy0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50Tm9kZTspIHsK
LSAgICAgICAgaWYgKCFjdXJyZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
ICghY3VycmVudE5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgY3VycmVudE5v
ZGUgPSBjdXJyZW50Tm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgRWxlbWVudCogY3VycmVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihjdXJyZW50Tm9kZSk7CisgICAgICAgIEhUTUxFbGVtZW50KiBjdXJy
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjdXJyZW50Tm9kZSk7CiAKICAgICAgICAg
Ly8gb3B0Z3JvdXAgdGFncyBtYXkgbm90IG5lc3QuIEhvd2V2ZXIsIGJvdGggRmlyZUZveCBhbmQg
SUUgd2lsbAogICAgICAgICAvLyBmbGF0dGVuIHRoZSB0cmVlIGF1dG9tYXRpY2FsbHksIHNvIHdl
IGZvbGxvdyBzdWl0LgpAQCAtNzE1LDcgKzcxMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY3VycmVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmhyVGFnKSkKKyAgICAgICAgaWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUoaHJUYWcp
KQogICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogCiAgICAgICAgIC8v
IEluIGNvbmZvcm1pbmcgSFRNTCBjb2RlLCBvbmx5IDxvcHRncm91cD4gYW5kIDxvcHRpb24+IHdp
bGwgYmUgZm91bmQKQEAgLTczMiw4ICs3MjgsOCBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
bGVjdGVkSW5kZXgoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKIAotICAgIC8v
IHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBvcHRpb24gc2VsZWN0ZWQKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIC8vIFJldHVybiB0
aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBvcHRpb24gc2VsZWN0ZWQuCisgICAgY29uc3QgVmVjdG9y
PEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCog
b3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpIHsKICAgICAgICAgICAg
IGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKQpAQCAtNzUyLDcgKzc0OCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5k
ZXgsIGJvb2wgZGVzZWxlY3QsCiAgICAgaWYgKCFtX211bHRpcGxlKQogICAgICAgICBkZXNlbGVj
dCA9IHRydWU7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVt
cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygp
OwogICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CiAK
ICAgICBFbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IDA7CkBAIC03OTUsNyArNzkxLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVybmFsKGludCBvcHRpb25J
bmRleCwgYm9vbCBkZXNlbGVjdCwKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xp
c3RJbmRleChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdFNpemUgPSBzdGF0aWNfY2FzdDxp
bnQ+KGl0ZW1zLnNpemUoKSk7CiAgICAgaWYgKG9wdGlvbkluZGV4IDwgMCB8fCBvcHRpb25JbmRl
eCA+PSBsaXN0U2l6ZSkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtODE0LDcgKzgxMCw3IEBAIGlu
dCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBj
b25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0
SW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKICAgICBpZiAobGlzdEluZGV4IDwgMCB8fCBsaXN0SW5kZXggPj0gc3RhdGljX2Nhc3Q8
aW50PihpdGVtcy5zaXplKCkpIHx8ICFpc09wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkp
CiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtODMxLDcgKzgyNyw3IEBAIGludCBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJbmRleCkgY29uc3QKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZv
Y3VzZWROb2RlKQogewogICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29t
cGFyZWQgdG8gdGhlIG5ldyBzZWxlY3Rpb24gd2hlbgotICAgIC8vIGRpc3BhdGNoaW5nIGNoYW5n
ZSBldmVudHMgZHVyaW5nIGJsdXIgZXZlbnQgZGlzcGF0Y2hhbAorICAgIC8vIGRpc3BhdGNoaW5n
IGNoYW5nZSBldmVudHMgZHVyaW5nIGJsdXIgZXZlbnQgZGlzcGF0Y2hhbC4KICAgICBpZiAodXNl
c01lbnVMaXN0KCkpCiAgICAgICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KG9sZEZvY3VzZWROb2Rl
KTsKQEAgLTg0OSw3ICs4NDUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKQogCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVudCogZXhjbHVk
ZUVsZW1lbnQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKGl0ZW1zW2ldID09IGV4Y2x1ZGVFbGVtZW50KQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04NjEsMTggKzg1NywxNiBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVj
dEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVudCogZXhjbHVkZUVsZW1lbnQpCiAKIGJvb2wg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgdmFsdWUpIGNv
bnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
LSAgICBpbnQgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwotCi0gICAgLy8gRklYTUU6IENoYW5nZSB0
aGlzIGNvZGUgdG8gdXNlIHRoZSBuZXcgU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCBj
b2RlIHBhdGguCi0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGNoYXJhY3RlcnMobGVuZ3RoKTsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgY29uc3QgVmVjdG9yPEhU
TUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IGl0
ZW1zLnNpemUoKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9u
RWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBvcHRpb25FbGVtZW50
ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCk7Ci0gICAgICAgIGNoYXJhY3RlcnNbaV0gPSBz
ZWxlY3RlZCA/ICdYJyA6ICcuJzsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VsZWN0ZWQgPyAn
WCcgOiAnLicpOwogICAgIH0KLQotICAgIHZhbHVlID0gU3RyaW5nKGNoYXJhY3RlcnMuZGF0YSgp
LCBsZW5ndGgpOworICAgIHZhbHVlID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC04ODAsMTAgKzg3NCwxMCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojpy
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKQogewogICAgIHJlY2Fs
Y0xpc3RJdGVtcygpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKLSAgICBpbnQgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOworICAgIGNvbnN0IFZlY3Rv
cjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIHNpemVfdCBsZW5ndGgg
PSBpdGVtcy5zaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlm
IChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ld
KSkKICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQtPnNldFNlbGVjdGVkU3RhdGUoc3RhdGVbaV0g
PT0gJ1gnKTsKICAgICB9CkBAIC05MDgsNyArOTAyLDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBsaXN0LCBib29sKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKLSAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwpAQCAtOTI5LDcgKzkyMyw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KCkKICAgICBPcHRpb25FbGVtZW50KiBmaXJz
dE9wdGlvbiA9IDA7CiAgICAgT3B0aW9uRWxlbWVudCogc2VsZWN0ZWRPcHRpb24gPSAwOwogCi0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxl
bWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAg
IGlmICghb3B0aW9uRWxlbWVudCkKQEAgLTEwMDMsNyArOTk3LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAg
ICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5rZXlJZGVudGlmaWVyKCk7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IHRy
dWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRoaXMtPmxp
c3RJdGVtcygpOworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xp
c3RJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCiAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09
ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIpCkBAIC0xMTM1LDcgKzExMjksNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5k
ZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRv
T3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAg
ICAvLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgYW4gYWN0aXZlIHNlbGVjdGlvbiAobGlrZSBkdXJp
bmcgZHJhZwotICAgICAgICAvLyBzZWxlY3Rpb24pLCBzaG91bGQgc2VsZWN0IG9yIGRlc2VsZWN0
CisgICAgICAgIC8vIHNlbGVjdGlvbiksIHNob3VsZCBzZWxlY3Qgb3IgZGVzZWxlY3QuCiAgICAg
ICAgIGlmIChvcHRpb24tPnNlbGVjdGVkKCkgJiYgbXVsdGkpCiAgICAgICAgICAgICBtX2FjdGl2
ZVNlbGVjdGlvblN0YXRlID0gZmFsc2U7CiAKQEAgLTExNTQsNyArMTE0OCw3IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBt
dWx0aSwgYm9vbCBzaGlmCiAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAw
ICYmICFtdWx0aVNlbGVjdCkKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgo
c2VsZWN0ZWRJbmRleCgpKTsKIAotICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRo
ZSBjbGlja2VkIG9wdGlvbgorICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBj
bGlja2VkIG9wdGlvbi4KICAgICBpZiAob3B0aW9uICYmICFjbGlja2VkRWxlbWVudC0+ZGlzYWJs
ZWQoKSkKICAgICAgICAgb3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogCkBAIC0xMTcx
LDcgKzExNjUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRl
KGludCBsaXN0SW5kZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogCiB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7Cisg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRoaXMtPmxpc3RJdGVt
cygpOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2
ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4o
ZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGZvY3VzKCk7CkBAIC0x
MjI0LDcgKzEyMTgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShzdGFydEluZGV4LCBTa2lwQmFja3dhcmRz
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNldCB0
aGUgZW5kIGluZGV4IGJhc2VkIG9uIHRoZSBjdXJyZW50IGVuZCBpbmRleAorICAgICAgICAgICAg
Ly8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJlbnQgZW5kIGluZGV4LgogICAg
ICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iKSB7CiAgICAgICAgICAgICAgICAg
ZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChtX2FjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4KTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTEzMjYsMjAgKzEzMjAs
MTQgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4KCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGl0ZXJhdGUgdGhlIGxpc3RJdGVtcyBp
biB0aGUgcmV2ZXJzZSBvcmRlci4KLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0
ZW1zKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVu
dChpdGVtc1tpXSkpIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgp
KSB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRl
bXMgPSBsaXN0SXRlbXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBpdGVtcy5zaXplKCk7IGk7
KSB7CisgICAgICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGl0ZW1zWy0taV0pKSB7CisgICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2Vs
ZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KLQot
ICAgIHJldHVybiBmb3VuZCA/IHN0YXRpY19jYXN0PGludD4oaW5kZXgpIDogLTE7CisgICAgcmV0
dXJuIC0xOwogfQogCiBzdGF0aWMgU3RyaW5nIHN0cmlwTGVhZGluZ1doaXRlU3BhY2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCkBAIC0xMzc2LDcgKzEzNjQsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50Ojp0eXBlQWhlYWRGaW5kKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgICAgIGlmIChj
ID09IG1fcmVwZWF0aW5nQ2hhcikgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIgaXMgbGlrZWx5
IHRyeWluZyB0byBjeWNsZSB0aHJvdWdoIGFsbCB0aGUgaXRlbXMgc3RhcnRpbmcKLSAgICAgICAg
ICAgIC8vIHdpdGggdGhpcyBjaGFyYWN0ZXIsIHNvIGp1c3Qgc2VhcmNoIG9uIHRoZSBjaGFyYWN0
ZXIKKyAgICAgICAgICAgIC8vIHdpdGggdGhpcyBjaGFyYWN0ZXIsIHNvIGp1c3Qgc2VhcmNoIG9u
IHRoZSBjaGFyYWN0ZXIuCiAgICAgICAgICAgICBwcmVmaXggPSBTdHJpbmcoJmMsIDEpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9yZXBlYXRpbmdDaGFyID0gMDsKQEAgLTEzODUs
NyArMTM3Myw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBpdGVtQ291bnQgPSBpdGVtcy5zaXpl
KCk7CiAgICAgaWYgKGl0ZW1Db3VudCA8IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MzMsOCAr
MTQyMSw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNldFNlbGVjdGVkSW5k
ZXgoaW50IGluZGV4KQogICAgIGlmICghZm9jdXNlZCgpKQogICAgICAgICBhY2Nlc3NLZXlBY3Rp
b24oZmFsc2UpOwogICAgIAotICAgIC8vIGlmIHRoaXMgaW5kZXggaXMgYWxyZWFkeSBzZWxlY3Rl
ZCwgdW5zZWxlY3QuIG90aGVyd2lzZSB1cGRhdGUgdGhlIHNlbGVjdGVkIGluZGV4Ci0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAvLyBJZiB0aGlz
IGluZGV4IGlzIGFscmVhZHkgc2VsZWN0ZWQsIHVuc2VsZWN0LiBvdGhlcndpc2UgdXBkYXRlIHRo
ZSBzZWxlY3RlZCBpbmRleC4KKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5k
ZXgpOwogICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gKGxpc3RJbmRleCA+
PSAwID8gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0pIDogMCkpIHsKICAgICAgICAg
aWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCkBAIC0xNDU1LDcgKzE0NDMsNyBAQCB1bnNp
Z25lZCBIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBv
cHRpb25zID0gMDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0
ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1z
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGlmIChpc09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKQogICAgICAgICAgICAgKytvcHRp
b25zOwpAQCAtMTQ2Niw3ICsxNDU0LDcgQEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxl
bmd0aCgpIGNvbnN0CiAKIEhUTUxTZWxlY3RFbGVtZW50KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1l
bnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpKQorICAgIGlmIChlbGVtZW50LT5p
c0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihlbGVtZW50KTsKICAgICAv
LyBGSVhNRTogdG9Gb29DbGFzcygpIGZ1bmN0aW9uIHNob3VsZCBub3QgcmV0dXJuIDAuCiAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggN2Q0
Mzc5ZjY3MmFhY2VkYzM5NDJjYTNmNjY1ODEzZDc5NDUwN2NlMi4uZjlkZTQzMTlhMzM5YjkwMWM3
NTQ5MmJlMTYzNTU4ZDNmMDY4YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNhbGNMaXN0
SXRlbXMoKTsKICAgICB2b2lkIHJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CiAKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8
SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNj
ZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7CiAgICAgdm9pZCBhY2Nlc3NLZXlT
ZXRTZWxlY3RlZEluZGV4KGludCk7CkBAIC0xNDMsNyArMTQzLDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgaGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBjaGVj
a0xpc3RJdGVtcygpIGNvbnN0OwogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoYm9v
bCB1cGRhdGVTZWxlY3RlZFN0YXRlcyA9IHRydWUpOwogICAgIHZvaWQgc2V0U2VsZWN0ZWRJbmRl
eEludGVybmFsKGludCBvcHRpb25JbmRleCwgYm9vbCBkZXNlbGVjdCA9IHRydWUsIGJvb2wgZmly
ZU9uQ2hhbmdlTm93ID0gZmFsc2UsIGJvb2wgdXNlckRyaXZlbkNoYW5nZSA9IHRydWUpOwogICAg
IHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEVsZW1lbnQqIGV4Y2x1ZGVFbGVt
ZW50ID0gMCk7CkBAIC0xNjAsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgU2tpcEJhY2t3
YXJkcyA9IC0xLAogICAgICAgICBTa2lwRm9yd2FyZHMgPSAxCiAgICAgfTsKLSAgICBzdGF0aWMg
aW50IG5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50
IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiwgaW50IHNraXApOworICAgIHN0YXRpYyBpbnQgbmV4
dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50IGxp
c3RJbmRleCwgU2tpcERpcmVjdGlvbiwgaW50IHNraXApOwogICAgIGludCBuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkgY29uc3Q7CiAgICAgaW50IHByZXZpb3VzU2VsZWN0
YWJsZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkgY29uc3Q7CiAgICAgaW50IGZpcnN0U2VsZWN0
YWJsZUxpc3RJbmRleCgpIGNvbnN0OwpAQCAtMTY4LDcgKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAg
aW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0SW5kZXgsIFNraXBE
aXJlY3Rpb24pIGNvbnN0OwogCiAgICAgQ29sbGVjdGlvbkNhY2hlIG1fY29sbGVjdGlvbkluZm87
Ci0gICAgVmVjdG9yPEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKKyAgICAvLyBtX2xpc3RJdGVtcyBj
b250YWlucyBIVE1MT3B0aW9uRWxlbWVudCwgSFRNTE9wdEdyb3VwRWxlbWVudCwgb3IgSFRNTEhS
RWxlbWVudC4KKyAgICBWZWN0b3I8SFRNTEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKICAgICBWZWN0
b3I8Ym9vbD4gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247CiAgICAgVmVjdG9yPGJvb2w+IG1fY2Fj
aGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb247CiAgICAgRE9NVGltZVN0YW1wIG1fbGFzdENoYXJU
aW1lOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZXJEcml2ZW5D
aGFuZ2U7CiAgICAgYm9vbCBtX211bHRpcGxlOwogICAgIGJvb2wgbV9hY3RpdmVTZWxlY3Rpb25T
dGF0ZTsKLSAgICBib29sIG1fcmVjYWxjTGlzdEl0ZW1zOworICAgIGJvb2wgbV9zaG91bGRSZWNh
bGNMaXN0SXRlbXM7CiB9OwogCiBIVE1MU2VsZWN0RWxlbWVudCogdG9TZWxlY3RFbGVtZW50KEVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAxMjYwNWUyODc2ZjFhYWI3ZjNiYTFjNjdjMjM1ZGM1ZGVhMzE0MGE4Li45NTQ1YzZjYTQ0Yzhm
YWY5OGY1MDUzM2YwMWQzZTMyYjU1YWU3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBpZiAobV9vcHRpb25zQ2hhbmdlZCkgewotICAgICAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVtcygpOwogICAgICAgICBpbnQgc2l6ZSA9
IG51bUl0ZW1zKCk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CkBAIC0zMjUs
NyArMzI1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2kKIAogICAgIC8vIE5vIHNlbGVjdGVk
IGl0ZW1zLCBmaW5kIHRoZSBmaXJzdCBub24tZGlzYWJsZWQgaXRlbS4KICAgICBpbnQgc2l6ZSA9
IG51bUl0ZW1zKCk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2Vs
ZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGxpc3RJdGVtc1tpXSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVtZW50ICYmICFvcHRp
b25FbGVtZW50LT5kaXNhYmxlZCgpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVBy
ZXZlbnRlcjsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9y
PEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgRWxl
bWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQq
IG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoZWxlbWVudCk7CiAKQEAgLTQyMyw3ICs0
MjMsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMo
KTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5s
aXN0SXRlbXMoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07
CiAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChlbGVt
ZW50KTsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiB7CiAg
ICAgaWYgKCFSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBwb2ludElu
Q29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1Nl
bGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsK
KyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CiAgICAgaW50
IHNpemUgPSBudW1JdGVtcygpOwogICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBh
Y2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDU3YTNhZDI0ODQ1ZmU0OTJlZjBiMzM4N2FhOWNi
ZDM5ZDc0YmY1OWUuLjNmMzU2YTY4ZWMwY2Q5Y2NjNGVmMWZmOTFkMTkzZGRjNmI2YmU1MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1
cGRhdGVPcHRpb25zV2lkdGgoKQogewogICAgIGZsb2F0IG1heE9wdGlvbldpZHRoID0gMDsKLSAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IHNpemUgPSBsaXN0SXRl
bXMuc2l6ZSgpOyAgICAKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJn
ZVByZXZlbnRlcjsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnVw
ZGF0ZUZyb21FbGVtZW50KCkKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9u
KGludCBvcHRpb25JbmRleCkKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9T
ZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNv
bnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygp
OwogICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKIAogICAgIGludCBpID0gc2VsZWN0
LT5vcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkK
IFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dAogewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxF
bGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJ
bmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1BY2Nlc3NpYmlsaXR5
VGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgLy8gQWxsb3cgdGhlIGFjY2Vz
c2libGUgbmFtZSBiZSBjaGFuZ2VkIGlmIG5lY2Vzc2FyeS4KICAgICBIVE1MU2VsZWN0RWxlbWVu
dCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkp
KTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJ
dGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxl
Y3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC00MTIsNyArNDEyLDcgQEAgU3RyaW5nIFJl
bmRlck1lbnVMaXN0OjppdGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdAogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5k
ZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxl
bWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVs
ZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBp
ZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC00MjIs
NyArNDIyLDcgQEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVG9vbFRpcCh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVuc2ln
bmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0g
dG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAg
IGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVt
cygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsK
QEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0Ojpp
dGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgp
KSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtYWtpbmcgYW4gb3V0IG9mIGJvdW5kcyBhY2Nlc3Ms
IHRoZW4gd2Ugd2FudCB0byB1c2UgdGhlIHN0eWxlCiAgICAgICAgIC8vIG9mIGEgZGlmZmVyZW50
IG9wdGlvbiBlbGVtZW50IChpbmRleCAwKS4gSG93ZXZlciwgaWYgdGhlcmUgaXNuJ3QgYW4gb3B0
aW9uIGVsZW1lbnQKQEAgLTQ2Myw3ICs0NjMsNyBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51
TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIENvbG9yIFJlbmRlck1l
bnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsK
ICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19j
YXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0
SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXgg
Pj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnBvcHVwRGlkSGlkZSgpCiBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNT
ZXBhcmF0b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVt
c1tsaXN0SW5kZXhdOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0
ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRlck1lbnVM
aXN0OjppdGVtSXNMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2Vs
ZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVt
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0g
bGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBSZW5kZXJNZW51
TGlzdDo6aXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJN
ZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAg
IEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBs
aXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110660</attachid>
            <date>2011-10-12 03:56:34 -0700</date>
            <delta_ts>2011-10-13 00:58:36 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-69908-20111012195632.patch</filename>
            <type>text/plain</type>
            <size>44839</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMjc3NjUxNGMyNmFhZGNl
MWJjNzllNzcwYWE1NzkzZjEzNzVlNWViLi44NzU3MTY4NzdmMTFkY2JkODE3ZTFkZjA0NjNlYjY5
NGViMTAyZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMTAtMTMgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXAgb2YgSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBDaGFuZ2UgdGhlIG1fbGlzdEl0ZW1zIHR5cGU6IFZlY3RvcjxFbGVtZW50Kj4gLT4gVmVj
dG9yPEhUTUxFbGVtZW50Kj4KKyAgICAgICAgLSBSZW5hbWUgYSBtZW1iZXI6IG1fcmVjYWxjTGlz
dEl0ZW1zIC0+IG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zCisgICAgICAgIC0gRm9sZCBjaGVja0xp
c3RJdGVtcygpIGludG8gbGlzdEl0ZW1zKCkKKyAgICAgICAgLSBTdHlsZSBmaXhlcworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIGNsZWFudXAuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvbkluZGV4KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBk
b20vT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25FbGVtZW50Ojpv
cHRpb25JbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNldE9wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpu
ZXh0VmFsaWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zmly
c3RTZWxlY3RhYmxlTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNX
aXRob3V0VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
c2F2ZUZvcm1Db250cm9sU3RhdGUpOiBVc2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsYXN0U2VsZWN0ZWRMaXN0
SW5kZXgpOgorICAgICAgICBPcHRpbWl6ZSB0aGUgY29kZSBieSBpdGVyYXRpbmcgaW4gdGhlIHJl
dmVyc2Ugb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFo
ZWFkRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5
U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2VsZWN0RWxlbWVudCk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1l
bnVMaXN0OjppdGVtVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRl
bUFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpp
dGVtVG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCk6CisKIDIwMTEtMTAtMTIgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk0ODM2
KTogQW4gYXNzZXJ0aW9uIGZhaWxzIGluIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFsaWRG
b3JtQ29udHJvbEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggOTFhMmU5NDQ3N2JmZWM3YmFjNWQ5NTQz
OGY0NmY1OWJiMGU1YzRmZC4uYWU3MTFlMmM4ODViMjQ2YjU4ZGFmM2E1ZjRkYmM2YjgwZjY2ZWFi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKICAgICAK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzdGF0aWNfY2FzdDxIVE1M
U2VsZWN0RWxlbWVudCo+KHNlbGVjdE5vZGUpLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPihzZWxlY3ROb2RlKS0+bGlzdEl0ZW1zKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGlz
dEl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNh
dXNlIHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKaW5kZXggMmFiMDgxNDNjNjYxNDgzNDI0NjJjZWEyNjc2YzU2OWQwODMyY2Y0Zi4uN2Fh
MzA4NTZlNzJkMTljMzAwZDQ0Mzg2OGRhZGU5MjZkODI4MDRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
Omxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3RFbGVtZW50KSAKICAg
ICAgICAgcmV0dXJuIC0xOwogICAgIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHNlbGVjdEVsZW1lbnQtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50LT5saXN0SXRlbXMoKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBsaXN0SXRlbXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgaWYgKGxpc3RJdGVtc1tpXSA9PSBtX29wdGlv
bkVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGViZjY5NGI1YjQ2YmM4YTBhM2Nl
ZThiY2U2YWFmMWVjZDQ5MDYyYjUuLjdkMjg2ODMwMzkxYWY1OGFmNGM2ZDQ0NTFlMGIxOGIwZTk1
NTg3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKCkKIAogICAgIEFTU0VSVChzZWxl
Y3ROb2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihzZWxlY3RO
b2RlKS0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJ
dGVtcyA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oc2VsZWN0Tm9kZSktPmxpc3RJ
dGVtcygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpc3RJdGVtcy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbiogb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2Jq
ZWN0KHRvSFRNTEVsZW1lbnQobGlzdEl0ZW1zW2ldKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNjVjNzdhODA3MGY0NGEyOWE1OGRjNTg4OTQ3MjRiNzhiN2NmODdhLi5mOTQ3NTZjYTEwYjRl
NGUyYjk3N2IxMGFjNjIyZGY3ZTU5ODk2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEx
NTAsNyArMTE1MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdW
YWx1ZSgpIGNvbnN0CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3ROb2RlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihub2Rl
KTsKICAgICAgICAgICAgIGludCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0Tm9kZS0+c2VsZWN0ZWRJ
bmRleCgpOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiBsaXN0SXRlbXMgPSBz
ZWxlY3ROb2RlLT5saXN0SXRlbXMoKTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxl
bWVudCo+IGxpc3RJdGVtcyA9IHNlbGVjdE5vZGUtPmxpc3RJdGVtcygpOwogICAgICAgICAKICAg
ICAgICAgICAgIEVsZW1lbnQqIHNlbGVjdGVkT3B0aW9uID0gMDsKICAgICAgICAgICAgIGlmIChz
ZWxlY3RlZEluZGV4ID49IDAgJiYgc2VsZWN0ZWRJbmRleCA8IChpbnQpbGlzdEl0ZW1zLnNpemUo
KSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMDYyNDUxOGVhZmQ4YzM4
NTIzNjE1Yjk0ZDMyZjZiZWEwYWI1YzM3Zi4uMmJkZGRhMWZlNzFmN2U5ZmE5M2NhZThhNjQ3MmNl
ZmIzNWQ4MzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcApAQCAtNDksNyAr
NDksNyBAQCBpbnQgT3B0aW9uRWxlbWVudDo6b3B0aW9uSW5kZXgoSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdEVsZW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAKICAgICAvLyBMZXQncyBkbyB0aGlzIGR5
bmFtaWNhbGx5LiBNaWdodCBiZSBhIGJpdCBzbG93LCBidXQgd2UncmUgc3VyZQogICAgIC8vIHdl
IHdvbid0IGZvcmdldCB0byB1cGRhdGUgYSBtZW1iZXIgdmFyaWFibGUgaW4gc29tZSBjYXNlcy4u
LgotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0RWxlbWVudC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0
RWxlbWVudC0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKICAg
ICBpbnQgb3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYjc2
NzI3Y2UyNGRiZDgyNTMzOTMyMWYzNmVhZGRhMjc2N2Q0ZjJjOC4uNWEzNDI1MTA3YjQwMzIzNWQ0
OThjNWNhMzgwNzA1ODZhNmUwZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2
aWdhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC04NSw3
ICs4Niw3IEBAIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jCiAgICAgLCBtX3VzZXJEcml2ZW5DaGFu
Z2UoZmFsc2UpCiAgICAgLCBtX211bHRpcGxlKGZhbHNlKQogICAgICwgbV9hY3RpdmVTZWxlY3Rp
b25TdGF0ZShmYWxzZSkKLSAgICAsIG1fcmVjYWxjTGlzdEl0ZW1zKGZhbHNlKQorICAgICwgbV9z
aG91bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2Vs
ZWN0VGFnKSk7CiB9CkBAIC0xOTksNyArMjAwLDggQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50Ojph
Y3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSBjb25zdAogCiB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gcHJvdGVjdE5ld0NoaWxk
KGVsZW1lbnQpOyAvLyBtYWtlIHN1cmUgdGhlIGVsZW1lbnQgaXMgcmVmJ2QgYW5kIGRlcmVmJ2Qg
c28gd2UgZG9uJ3QgbGVhayBpdAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyByZWYn
ZCBhbmQgZGVyZWYnZCBzbyB3ZSBkb24ndCBsZWFrIGl0LgorICAgIFJlZlB0cjxIVE1MRWxlbWVu
dD4gcHJvdGVjdE5ld0NoaWxkKGVsZW1lbnQpOwogCiAgICAgaWYgKCFlbGVtZW50IHx8ICEoZWxl
bWVudC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykgfHwgZWxlbWVudC0+aGFzTG9jYWxOYW1lKGhy
VGFnKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOSw3ICsyMzEsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpyZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbikKIAogU3RyaW5nIEhU
TUxTZWxlY3RFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNMb2NhbE5hbWUob3B0
aW9uVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KGl0ZW1zW2ldKS0+c2Vs
ZWN0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dCo+KGl0ZW1zW2ldKS0+dmFsdWUoKTsKQEAgLTI0Myw3ICsyNDUsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgICAgICByZXR1cm47
CiAgICAgLy8gZmluZCB0aGUgb3B0aW9uIHdpdGggdmFsdWUoKSBtYXRjaGluZyB0aGUgZ2l2ZW4g
cGFyYW1ldGVyCiAgICAgLy8gYW5kIG1ha2UgaXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgdW5zaWduZWQg
b3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXpl
KCk7IGkrKykgewogICAgICAgICBpZiAoaXRlbXNbaV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcp
KSB7CkBAIC0yODEsMTMgKzI4MywxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gbXVsdGlwbGVBdHRyKQogICAgICAgICBwYXJzZU11bHRpcGxlQXR0cmlidXRlKGF0dHIp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBpZ25vcmUgZm9yIHRoZSBtb21lbnQKKyAgICAgICAgLy8gRklYTUU6IGlnbm9y
ZSBmb3IgdGhlIG1vbWVudC4KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0
dHIpIHsKLSAgICAgICAgLy8gRG9uJ3QgbWFwICdhbGlnbicgYXR0cmlidXRlLiAgVGhpcyBtYXRj
aGVzIHdoYXQgRmlyZWZveCwgT3BlcmEgYW5kIElFIGRvLgorICAgICAgICAvLyBEb24ndCBtYXAg
J2FsaWduJyBhdHRyaWJ1dGUuIFRoaXMgbWF0Y2hlcyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJ
RSBkby4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDcyCi0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25jaGFuZ2VBdHRyKSB7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25jaGFuZ2VBdHRyKQogICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAgfSBlbHNlCisgICAgZWxz
ZQogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIApAQCAtMzI5LDcgKzMzMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAog
CiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpCiB7Ci0g
ICAgaWYgKG1fcmVjYWxjTGlzdEl0ZW1zKQorICAgIGlmIChtX3Nob3VsZFJlY2FsY0xpc3RJdGVt
cykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiB9CiAKQEAgLTM4MywxNSArMzg1LDE1IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRNTE9w
dGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjCiAgICAgICAgIGluZGV4ID0gbWF4U2VsZWN0SXRlbXMg
LSAxOwogICAgIGludCBkaWZmID0gaW5kZXggIC0gbGVuZ3RoKCk7CiAgICAgSFRNTEVsZW1lbnQq
IGJlZm9yZSA9IDA7Ci0gICAgLy8gb3V0IG9mIGFycmF5IGJvdW5kcyA/IGZpcnN0IGluc2VydCBl
bXB0eSBkdW1taWVzCisgICAgLy8gT3V0IG9mIGFycmF5IGJvdW5kcz8gRmlyc3QgaW5zZXJ0IGVt
cHR5IGR1bW1pZXMuCiAgICAgaWYgKGRpZmYgPiAwKSB7CiAgICAgICAgIHNldExlbmd0aChpbmRl
eCwgZWMpOwotICAgICAgICAvLyByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5ID8KKyAgICAgICAg
Ly8gUmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeT8KICAgICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7
CiAgICAgICAgIGJlZm9yZSA9IHRvSFRNTEVsZW1lbnQob3B0aW9ucygpLT5pdGVtKGluZGV4KzEp
KTsKICAgICAgICAgcmVtb3ZlKGluZGV4KTsKICAgICB9Ci0gICAgLy8gZmluYWxseSBhZGQgdGhl
IG5ldyBlbGVtZW50CisgICAgLy8gRmluYWxseSBhZGQgdGhlIG5ldyBlbGVtZW50LgogICAgIGlm
ICghZWMpIHsKICAgICAgICAgYWRkKG9wdGlvbiwgYmVmb3JlLCBlYyk7CiAgICAgICAgIGlmIChk
aWZmID49IDAgJiYgb3B0aW9uLT5zZWxlY3RlZCgpKQpAQCAtNDA2LDcgKzQwOCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICBuZXdMZW4gPSBtYXhTZWxlY3RJdGVtczsKICAgICBpbnQgZGlmZiA9
IGxlbmd0aCgpIC0gbmV3TGVuOwogCi0gICAgaWYgKGRpZmYgPCAwKSB7IC8vIGFkZCBkdW1teSBl
bGVtZW50cworICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQgZHVtbXkgZWxlbWVudHMuCiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBvcHRpb24gPSBkb2N1bWVudCgp
LT5jcmVhdGVFbGVtZW50KG9wdGlvblRhZywgZmFsc2UpOwogICAgICAgICAgICAgQVNTRVJUKG9w
dGlvbik7CkBAIC00MTUsNyArNDE3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVu
Z3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0gd2hpbGUgKCsrZGlmZik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICAgICAg
Ly8gUmVtb3ZpbmcgY2hpbGRyZW4gZmlyZXMgbXV0YXRpb24gZXZlbnRzLCB3aGljaCBtaWdodCBt
dXRhdGUgdGhlIERPTSBmdXJ0aGVyLCBzbyB3ZSBmaXJzdCBjb3B5IG91dCBhIGxpc3QKICAgICAg
ICAgLy8gb2YgZWxlbWVudHMgdGhhdCB3ZSBpbnRlbmQgdG8gcmVtb3ZlIHRoZW4gYXR0ZW1wdCB0
byByZW1vdmUgdGhlbSBvbmUgYXQgYSB0aW1lLgpAQCAtNDMxLDkgKzQzMyw4IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNUb1JlbW92ZS5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgRWxlbWVudCogaXRlbSA9IGl0ZW1zVG9SZW1vdmVbaV0u
Z2V0KCk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAg
ICBpZiAoaXRlbS0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIGl0ZW0tPnBhcmVudE5v
ZGUoKS0+cmVtb3ZlQ2hpbGQoaXRlbSwgZWMpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwpAQCAtNDQ4LDcgKzQ0OSw3IEBAIGJv
b2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0CiAvLyBP
dGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZhbGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5k
YXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRleHwgaWYgdGhlcmUgaXMgb25lLgogLy8gT3RoZXJ3
aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8LgogLy8gVmFsaWQgbWVhbnMgdGhhdCBpdCBpcyBl
bmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVudC4KLWludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4
dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdElu
ZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCitpbnQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Om5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRl
bXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKIHsK
ICAgICBBU1NFUlQoZGlyZWN0aW9uID09IC0xIHx8IGRpcmVjdGlvbiA9PSAxKTsKICAgICBpbnQg
bGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKQEAgLTQ3OCw3ICs0NzksNyBAQCBpbnQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkg
Y29uc3QKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpmaXJzdFNlbGVjdGFibGVMaXN0SW5kZXgo
KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1z
KCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7
CiAgICAgaW50IGluZGV4ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tp
cEJhY2t3YXJkcywgSU5UX01BWCk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRl
eCkgPT0gaXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gLTE7CkBAIC00OTMsMTEgKzQ5NCwx
MSBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29u
c3QKIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGl0ZW0gb25lIHBhZ2Ug
YXdheSBmcm9tIHxzdGFydEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwuCiBpbnQgSFRN
TFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0
SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7Ci0gICAgLy8gQ2FuJ3QgdXNlIGRhdGEt
PnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6ZS4KKyAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAvLyBDYW4n
dCB1c2UgbV9zaXplIGJlY2F1c2UgcmVuZGVyZXIgZm9yY2VzIGEgbWluaW11bSBzaXplLgogICAg
IGludCBwYWdlU2l6ZSA9IDA7CiAgICAgaWYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpKQotICAg
ICAgICBwYWdlU2l6ZSA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2l6ZSgpIC0gMTsg
Ly8gLTEgc28gd2Ugc3RpbGwgc2hvdyBjb250ZXh0CisgICAgICAgIHBhZ2VTaXplID0gdG9SZW5k
ZXJMaXN0Qm94KHJlbmRlcmVyKCkpLT5zaXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGlsbCBzaG93
IGNvbnRleHQuCiAKICAgICAvLyBPbmUgcGFnZSBhd2F5LCBidXQgbm90IG91dHNpZGUgdmFsaWQg
Ym91bmRzLgogICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgb3B0aW9uIGl0ZW0gb25lIHBhZ2Ug
YXdheSwgdGhlIGluZGV4IGlzIGNob3Nlbi4KQEAgLTUxNCw3ICs1MTUsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTYXZl
IHRoZSBzZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0QWxs
IHNlbGVjdGlvbgotICAgIC8vIHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cworICAgIC8v
IHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cy4KICAgICBzYXZlTGFzdFNlbGVjdGlvbigp
OwogCiAgICAgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IHRydWU7CkBAIC01MzQsNyArNTM1LDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oKQogICAgIH0KIAog
ICAgIG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uLmNsZWFyKCk7Ci0gICAgY29uc3QgVmVjdG9yPEVs
ZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVu
dCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIG1fbGFzdE9uQ2hhbmdlU2Vs
ZWN0aW9uLmFwcGVuZChvcHRpb25FbGVtZW50ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkp
OwpAQCAtNTQ2LDEwICs1NDcsMTAgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZl
U2VsZWN0aW9uQW5jaG9ySW5kZXgoaW50IGluZGV4KQogICAgIG1fYWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXggPSBpbmRleDsKIAogICAgIC8vIENhY2hlIHRoZSBzZWxlY3Rpb24gc3RhdGUgc28g
d2UgY2FuIHJlc3RvcmUgdGhlIG9sZCBzZWxlY3Rpb24gYXMgdGhlIG5ldwotICAgIC8vIHNlbGVj
dGlvbiBwaXZvdHMgYXJvdW5kIHRoaXMgYW5jaG9yIGluZGV4CisgICAgLy8gc2VsZWN0aW9uIHBp
dm90cyBhcm91bmQgdGhpcyBhbmNob3IgaW5kZXguCiAgICAgbV9jYWNoZWRTdGF0ZUZvckFjdGl2
ZVNlbGVjdGlvbi5jbGVhcigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBs
aXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxl
bWVudChpdGVtc1tpXSk7CiAgICAgICAgIG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24u
YXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CkBAIC01
NjksNyArNTcwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVj
dGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKQogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWlu
KG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgp
OwogICAgIHVuc2lnbmVkIGVuZCA9IG1heChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4LCBt
X2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0
ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09w
dGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBpZiAoIW9wdGlvbkVsZW1lbnQgfHwgaXRl
bXNbaV0tPmRpc2FibGVkKCkpCkBAIC01OTEsNyArNTkyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKIHsKICAgICBBU1NFUlQoIXVzZXNNZW51TGlzdCgpIHx8
IG1fbXVsdGlwbGUpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKIAogICAgIC8vIElmIHRoZSBjYWNoZWQgc2VsZWN0aW9uIGxpc3QgaXMgZW1wdHksIG9y
IHRoZSBzaXplIGhhcyBjaGFuZ2VkLCB0aGVuIGZpcmUKICAgICAvLyBkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQsIGFuZCByZXR1cm4gZWFybHkuCkBAIC02MDAsNyArNjAxLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIC8vIFVwZGF0ZSBsYXN0T25DaGFuZ2VTZWxlY3Rpb24gYW5kIGZpcmUgZGlz
cGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50CisgICAgLy8gVXBkYXRlIGxhc3RPbkNoYW5nZVNl
bGVjdGlvbiBhbmQgZmlyZSBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQuCiAgICAgYm9v
bCBmaXJlT25DaGFuZ2UgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9
IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CkBAIC02NDUsMjggKzY0NiwyMyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKQogICAgIH0KIH0K
IAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hlY2tMaXN0SXRlbXMoKSBjb25zdAorY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25z
dAogeworICAgIGlmIChtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcykKKyAgICAgICAgY29uc3RfY2Fz
dDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCgpOwor
ICAgIGVsc2UgewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBWZWN0b3I8RWxlbWVudCo+IGl0
ZW1zID0gbV9saXN0SXRlbXM7Ci0gICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRo
aXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChmYWxzZSk7Ci0gICAgQVNTRVJUKGl0ZW1zID09
IG1fbGlzdEl0ZW1zKTsKKyAgICAgICAgVmVjdG9yPEhUTUxFbGVtZW50Kj4gaXRlbXMgPSBtX2xp
c3RJdGVtczsKKyAgICAgICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5y
ZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChmYWxzZSk7CisgICAgICAgIEFTU0VSVChpdGVtcyA9PSBt
X2xpc3RJdGVtcyk7CiAjZW5kaWYKLX0KLQotY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgSFRNTFNl
bGVjdEVsZW1lbnQ6Omxpc3RJdGVtcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVjYWxjTGlzdEl0
ZW1zKQotICAgICAgICBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4odGhpcyktPnJlY2Fs
Y0xpc3RJdGVtc0ludGVybmFsKCk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0xpc3RJdGVtcygp
OwotCisgICAgfQogICAgIHJldHVybiBtX2xpc3RJdGVtczsKIH0KIAogdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKCkKIHsKLSAgICBtX3JlY2FsY0xpc3RJdGVtcyA9
IHRydWU7CisgICAgbV9zaG91bGRSZWNhbGNMaXN0SXRlbXMgPSB0cnVlOwogICAgIC8vIE1hbnVh
bCBzZWxlY3Rpb24gYW5jaG9yIGlzIHJlc2V0IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBzZWxlY3Qg
cHJvZ3JhbW1hdGljYWxseS4KICAgICBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4ID0gLTE7
CiAgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCk7CkBAIC02NzksMTYgKzY3NSwxNiBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChib29sIHVw
ZGF0ZVNlbGVjdGVkU3RhdGVzKQogewogICAgIG1fbGlzdEl0ZW1zLmNsZWFyKCk7CiAKLSAgICBt
X3JlY2FsY0xpc3RJdGVtcyA9IGZhbHNlOworICAgIG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zID0g
ZmFsc2U7CiAKICAgICBPcHRpb25FbGVtZW50KiBmb3VuZFNlbGVjdGVkID0gMDsKICAgICBmb3Ig
KE5vZGUqIGN1cnJlbnROb2RlID0gdGhpcy0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50Tm9kZTspIHsK
LSAgICAgICAgaWYgKCFjdXJyZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
ICghY3VycmVudE5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgY3VycmVudE5v
ZGUgPSBjdXJyZW50Tm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgRWxlbWVudCogY3VycmVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihjdXJyZW50Tm9kZSk7CisgICAgICAgIEhUTUxFbGVtZW50KiBjdXJy
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjdXJyZW50Tm9kZSk7CiAKICAgICAgICAg
Ly8gb3B0Z3JvdXAgdGFncyBtYXkgbm90IG5lc3QuIEhvd2V2ZXIsIGJvdGggRmlyZUZveCBhbmQg
SUUgd2lsbAogICAgICAgICAvLyBmbGF0dGVuIHRoZSB0cmVlIGF1dG9tYXRpY2FsbHksIHNvIHdl
IGZvbGxvdyBzdWl0LgpAQCAtNzE1LDcgKzcxMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY3VycmVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmhyVGFnKSkKKyAgICAgICAgaWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUoaHJUYWcp
KQogICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogCiAgICAgICAgIC8v
IEluIGNvbmZvcm1pbmcgSFRNTCBjb2RlLCBvbmx5IDxvcHRncm91cD4gYW5kIDxvcHRpb24+IHdp
bGwgYmUgZm91bmQKQEAgLTczMiw4ICs3MjgsOCBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
bGVjdGVkSW5kZXgoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKIAotICAgIC8v
IHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBvcHRpb24gc2VsZWN0ZWQKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIC8vIFJldHVybiB0
aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBvcHRpb24gc2VsZWN0ZWQuCisgICAgY29uc3QgVmVjdG9y
PEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCog
b3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpIHsKICAgICAgICAgICAg
IGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKQpAQCAtNzUyLDcgKzc0OCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5k
ZXgsIGJvb2wgZGVzZWxlY3QsCiAgICAgaWYgKCFtX211bHRpcGxlKQogICAgICAgICBkZXNlbGVj
dCA9IHRydWU7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVt
cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygp
OwogICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CiAK
ICAgICBFbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IDA7CkBAIC03OTUsNyArNzkxLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVybmFsKGludCBvcHRpb25J
bmRleCwgYm9vbCBkZXNlbGVjdCwKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xp
c3RJbmRleChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdFNpemUgPSBzdGF0aWNfY2FzdDxp
bnQ+KGl0ZW1zLnNpemUoKSk7CiAgICAgaWYgKG9wdGlvbkluZGV4IDwgMCB8fCBvcHRpb25JbmRl
eCA+PSBsaXN0U2l6ZSkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtODE0LDcgKzgxMCw3IEBAIGlu
dCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBj
b25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0
SW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKICAgICBpZiAobGlzdEluZGV4IDwgMCB8fCBsaXN0SW5kZXggPj0gc3RhdGljX2Nhc3Q8
aW50PihpdGVtcy5zaXplKCkpIHx8ICFpc09wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkp
CiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtODMxLDcgKzgyNyw3IEBAIGludCBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJbmRleCkgY29uc3QKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZv
Y3VzZWROb2RlKQogewogICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29t
cGFyZWQgdG8gdGhlIG5ldyBzZWxlY3Rpb24gd2hlbgotICAgIC8vIGRpc3BhdGNoaW5nIGNoYW5n
ZSBldmVudHMgZHVyaW5nIGJsdXIgZXZlbnQgZGlzcGF0Y2hhbAorICAgIC8vIGRpc3BhdGNoaW5n
IGNoYW5nZSBldmVudHMgZHVyaW5nIGJsdXIgZXZlbnQgZGlzcGF0Y2hhbC4KICAgICBpZiAodXNl
c01lbnVMaXN0KCkpCiAgICAgICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KG9sZEZvY3VzZWROb2Rl
KTsKQEAgLTg0OSw3ICs4NDUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKQogCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVudCogZXhjbHVk
ZUVsZW1lbnQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKGl0ZW1zW2ldID09IGV4Y2x1ZGVFbGVtZW50KQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04NjEsMTggKzg1NywxNiBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVj
dEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVudCogZXhjbHVkZUVsZW1lbnQpCiAKIGJvb2wg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgdmFsdWUpIGNv
bnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
LSAgICBpbnQgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwotCi0gICAgLy8gRklYTUU6IENoYW5nZSB0
aGlzIGNvZGUgdG8gdXNlIHRoZSBuZXcgU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCBj
b2RlIHBhdGguCi0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGNoYXJhY3RlcnMobGVuZ3RoKTsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgY29uc3QgVmVjdG9yPEhU
TUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IGl0
ZW1zLnNpemUoKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9u
RWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBvcHRpb25FbGVtZW50
ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCk7Ci0gICAgICAgIGNoYXJhY3RlcnNbaV0gPSBz
ZWxlY3RlZCA/ICdYJyA6ICcuJzsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VsZWN0ZWQgPyAn
WCcgOiAnLicpOwogICAgIH0KLQotICAgIHZhbHVlID0gU3RyaW5nKGNoYXJhY3RlcnMuZGF0YSgp
LCBsZW5ndGgpOworICAgIHZhbHVlID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC04ODAsMTAgKzg3NCwxMCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojpy
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKQogewogICAgIHJlY2Fs
Y0xpc3RJdGVtcygpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKLSAgICBpbnQgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOworICAgIGNvbnN0IFZlY3Rv
cjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIHNpemVfdCBsZW5ndGgg
PSBpdGVtcy5zaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlm
IChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ld
KSkKICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQtPnNldFNlbGVjdGVkU3RhdGUoc3RhdGVbaV0g
PT0gJ1gnKTsKICAgICB9CkBAIC05MDgsNyArOTAyLDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBsaXN0LCBib29sKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKLSAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwpAQCAtOTI5LDcgKzkyMyw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KCkKICAgICBPcHRpb25FbGVtZW50KiBmaXJz
dE9wdGlvbiA9IDA7CiAgICAgT3B0aW9uRWxlbWVudCogc2VsZWN0ZWRPcHRpb24gPSAwOwogCi0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxl
bWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAg
IGlmICghb3B0aW9uRWxlbWVudCkKQEAgLTEwMDMsNyArOTk3LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAg
ICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5rZXlJZGVudGlmaWVyKCk7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IHRy
dWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRoaXMtPmxp
c3RJdGVtcygpOworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xp
c3RJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCiAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09
ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIpCkBAIC0xMTM1LDcgKzExMjksNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5k
ZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRv
T3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAg
ICAvLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgYW4gYWN0aXZlIHNlbGVjdGlvbiAobGlrZSBkdXJp
bmcgZHJhZwotICAgICAgICAvLyBzZWxlY3Rpb24pLCBzaG91bGQgc2VsZWN0IG9yIGRlc2VsZWN0
CisgICAgICAgIC8vIHNlbGVjdGlvbiksIHNob3VsZCBzZWxlY3Qgb3IgZGVzZWxlY3QuCiAgICAg
ICAgIGlmIChvcHRpb24tPnNlbGVjdGVkKCkgJiYgbXVsdGkpCiAgICAgICAgICAgICBtX2FjdGl2
ZVNlbGVjdGlvblN0YXRlID0gZmFsc2U7CiAKQEAgLTExNTQsNyArMTE0OCw3IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBt
dWx0aSwgYm9vbCBzaGlmCiAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAw
ICYmICFtdWx0aVNlbGVjdCkKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgo
c2VsZWN0ZWRJbmRleCgpKTsKIAotICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRo
ZSBjbGlja2VkIG9wdGlvbgorICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBj
bGlja2VkIG9wdGlvbi4KICAgICBpZiAob3B0aW9uICYmICFjbGlja2VkRWxlbWVudC0+ZGlzYWJs
ZWQoKSkKICAgICAgICAgb3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogCkBAIC0xMTcx
LDcgKzExNjUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRl
KGludCBsaXN0SW5kZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogCiB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7Cisg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRoaXMtPmxpc3RJdGVt
cygpOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2
ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4o
ZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGZvY3VzKCk7CkBAIC0x
MjI0LDcgKzEyMTgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShzdGFydEluZGV4LCBTa2lwQmFja3dhcmRz
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNldCB0
aGUgZW5kIGluZGV4IGJhc2VkIG9uIHRoZSBjdXJyZW50IGVuZCBpbmRleAorICAgICAgICAgICAg
Ly8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJlbnQgZW5kIGluZGV4LgogICAg
ICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iKSB7CiAgICAgICAgICAgICAgICAg
ZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChtX2FjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4KTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTEzMjYsMjAgKzEzMjAs
MTQgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4KCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGl0ZXJhdGUgdGhlIGxpc3RJdGVtcyBp
biB0aGUgcmV2ZXJzZSBvcmRlci4KLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0
ZW1zKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVu
dChpdGVtc1tpXSkpIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgp
KSB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRl
bXMgPSBsaXN0SXRlbXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBpdGVtcy5zaXplKCk7IGk7
KSB7CisgICAgICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGl0ZW1zWy0taV0pKSB7CisgICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2Vs
ZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KLQot
ICAgIHJldHVybiBmb3VuZCA/IHN0YXRpY19jYXN0PGludD4oaW5kZXgpIDogLTE7CisgICAgcmV0
dXJuIC0xOwogfQogCiBzdGF0aWMgU3RyaW5nIHN0cmlwTGVhZGluZ1doaXRlU3BhY2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCkBAIC0xMzc2LDcgKzEzNjQsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50Ojp0eXBlQWhlYWRGaW5kKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgICAgIGlmIChj
ID09IG1fcmVwZWF0aW5nQ2hhcikgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIgaXMgbGlrZWx5
IHRyeWluZyB0byBjeWNsZSB0aHJvdWdoIGFsbCB0aGUgaXRlbXMgc3RhcnRpbmcKLSAgICAgICAg
ICAgIC8vIHdpdGggdGhpcyBjaGFyYWN0ZXIsIHNvIGp1c3Qgc2VhcmNoIG9uIHRoZSBjaGFyYWN0
ZXIKKyAgICAgICAgICAgIC8vIHdpdGggdGhpcyBjaGFyYWN0ZXIsIHNvIGp1c3Qgc2VhcmNoIG9u
IHRoZSBjaGFyYWN0ZXIuCiAgICAgICAgICAgICBwcmVmaXggPSBTdHJpbmcoJmMsIDEpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9yZXBlYXRpbmdDaGFyID0gMDsKQEAgLTEzODUs
NyArMTM3Myw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBpdGVtQ291bnQgPSBpdGVtcy5zaXpl
KCk7CiAgICAgaWYgKGl0ZW1Db3VudCA8IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MzMsOCAr
MTQyMSw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNldFNlbGVjdGVkSW5k
ZXgoaW50IGluZGV4KQogICAgIGlmICghZm9jdXNlZCgpKQogICAgICAgICBhY2Nlc3NLZXlBY3Rp
b24oZmFsc2UpOwogICAgIAotICAgIC8vIGlmIHRoaXMgaW5kZXggaXMgYWxyZWFkeSBzZWxlY3Rl
ZCwgdW5zZWxlY3QuIG90aGVyd2lzZSB1cGRhdGUgdGhlIHNlbGVjdGVkIGluZGV4Ci0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAvLyBJZiB0aGlz
IGluZGV4IGlzIGFscmVhZHkgc2VsZWN0ZWQsIHVuc2VsZWN0LiBvdGhlcndpc2UgdXBkYXRlIHRo
ZSBzZWxlY3RlZCBpbmRleC4KKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5k
ZXgpOwogICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gKGxpc3RJbmRleCA+
PSAwID8gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0pIDogMCkpIHsKICAgICAgICAg
aWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCkBAIC0xNDU1LDcgKzE0NDMsNyBAQCB1bnNp
Z25lZCBIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBv
cHRpb25zID0gMDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0
ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1z
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGlmIChpc09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKQogICAgICAgICAgICAgKytvcHRp
b25zOwpAQCAtMTQ2Niw3ICsxNDU0LDcgQEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxl
bmd0aCgpIGNvbnN0CiAKIEhUTUxTZWxlY3RFbGVtZW50KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1l
bnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpKQorICAgIGlmIChlbGVtZW50LT5p
c0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihlbGVtZW50KTsKICAgICAv
LyBGSVhNRTogdG9Gb29DbGFzcygpIGZ1bmN0aW9uIHNob3VsZCBub3QgcmV0dXJuIDAuCiAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggN2Q0
Mzc5ZjY3MmFhY2VkYzM5NDJjYTNmNjY1ODEzZDc5NDUwN2NlMi4uZjlkZTQzMTlhMzM5YjkwMWM3
NTQ5MmJlMTYzNTU4ZDNmMDY4YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNhbGNMaXN0
SXRlbXMoKTsKICAgICB2b2lkIHJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CiAKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8
SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNj
ZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7CiAgICAgdm9pZCBhY2Nlc3NLZXlT
ZXRTZWxlY3RlZEluZGV4KGludCk7CkBAIC0xNDMsNyArMTQzLDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgaGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBjaGVj
a0xpc3RJdGVtcygpIGNvbnN0OwogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoYm9v
bCB1cGRhdGVTZWxlY3RlZFN0YXRlcyA9IHRydWUpOwogICAgIHZvaWQgc2V0U2VsZWN0ZWRJbmRl
eEludGVybmFsKGludCBvcHRpb25JbmRleCwgYm9vbCBkZXNlbGVjdCA9IHRydWUsIGJvb2wgZmly
ZU9uQ2hhbmdlTm93ID0gZmFsc2UsIGJvb2wgdXNlckRyaXZlbkNoYW5nZSA9IHRydWUpOwogICAg
IHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEVsZW1lbnQqIGV4Y2x1ZGVFbGVt
ZW50ID0gMCk7CkBAIC0xNjAsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgU2tpcEJhY2t3
YXJkcyA9IC0xLAogICAgICAgICBTa2lwRm9yd2FyZHMgPSAxCiAgICAgfTsKLSAgICBzdGF0aWMg
aW50IG5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50
IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiwgaW50IHNraXApOworICAgIHN0YXRpYyBpbnQgbmV4
dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50IGxp
c3RJbmRleCwgU2tpcERpcmVjdGlvbiwgaW50IHNraXApOwogICAgIGludCBuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkgY29uc3Q7CiAgICAgaW50IHByZXZpb3VzU2VsZWN0
YWJsZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkgY29uc3Q7CiAgICAgaW50IGZpcnN0U2VsZWN0
YWJsZUxpc3RJbmRleCgpIGNvbnN0OwpAQCAtMTY4LDcgKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAg
aW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0SW5kZXgsIFNraXBE
aXJlY3Rpb24pIGNvbnN0OwogCiAgICAgQ29sbGVjdGlvbkNhY2hlIG1fY29sbGVjdGlvbkluZm87
Ci0gICAgVmVjdG9yPEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKKyAgICAvLyBtX2xpc3RJdGVtcyBj
b250YWlucyBIVE1MT3B0aW9uRWxlbWVudCwgSFRNTE9wdEdyb3VwRWxlbWVudCwgb3IgSFRNTEhS
RWxlbWVudC4KKyAgICBWZWN0b3I8SFRNTEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKICAgICBWZWN0
b3I8Ym9vbD4gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247CiAgICAgVmVjdG9yPGJvb2w+IG1fY2Fj
aGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb247CiAgICAgRE9NVGltZVN0YW1wIG1fbGFzdENoYXJU
aW1lOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZXJEcml2ZW5D
aGFuZ2U7CiAgICAgYm9vbCBtX211bHRpcGxlOwogICAgIGJvb2wgbV9hY3RpdmVTZWxlY3Rpb25T
dGF0ZTsKLSAgICBib29sIG1fcmVjYWxjTGlzdEl0ZW1zOworICAgIGJvb2wgbV9zaG91bGRSZWNh
bGNMaXN0SXRlbXM7CiB9OwogCiBIVE1MU2VsZWN0RWxlbWVudCogdG9TZWxlY3RFbGVtZW50KEVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAxMjYwNWUyODc2ZjFhYWI3ZjNiYTFjNjdjMjM1ZGM1ZGVhMzE0MGE4Li45NTQ1YzZjYTQ0Yzhm
YWY5OGY1MDUzM2YwMWQzZTMyYjU1YWU3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBpZiAobV9vcHRpb25zQ2hhbmdlZCkgewotICAgICAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVtcygpOwogICAgICAgICBpbnQgc2l6ZSA9
IG51bUl0ZW1zKCk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CkBAIC0zMjUs
NyArMzI1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2kKIAogICAgIC8vIE5vIHNlbGVjdGVk
IGl0ZW1zLCBmaW5kIHRoZSBmaXJzdCBub24tZGlzYWJsZWQgaXRlbS4KICAgICBpbnQgc2l6ZSA9
IG51bUl0ZW1zKCk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2Vs
ZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGxpc3RJdGVtc1tpXSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVtZW50ICYmICFvcHRp
b25FbGVtZW50LT5kaXNhYmxlZCgpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVBy
ZXZlbnRlcjsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9y
PEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgRWxl
bWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQq
IG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoZWxlbWVudCk7CiAKQEAgLTQyMyw3ICs0
MjMsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMo
KTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5s
aXN0SXRlbXMoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07
CiAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChlbGVt
ZW50KTsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiB7CiAg
ICAgaWYgKCFSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBwb2ludElu
Q29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1Nl
bGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsK
KyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CiAgICAgaW50
IHNpemUgPSBudW1JdGVtcygpOwogICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBh
Y2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDU3YTNhZDI0ODQ1ZmU0OTJlZjBiMzM4N2FhOWNi
ZDM5ZDc0YmY1OWUuLjNmMzU2YTY4ZWMwY2Q5Y2NjNGVmMWZmOTFkMTkzZGRjNmI2YmU1MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1
cGRhdGVPcHRpb25zV2lkdGgoKQogewogICAgIGZsb2F0IG1heE9wdGlvbldpZHRoID0gMDsKLSAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CiAgICAgaW50IHNpemUgPSBsaXN0SXRl
bXMuc2l6ZSgpOyAgICAKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJn
ZVByZXZlbnRlcjsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnVw
ZGF0ZUZyb21FbGVtZW50KCkKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9u
KGludCBvcHRpb25JbmRleCkKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9T
ZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNv
bnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygp
OwogICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKIAogICAgIGludCBpID0gc2VsZWN0
LT5vcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkK
IFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dAogewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxF
bGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJ
bmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1BY2Nlc3NpYmlsaXR5
VGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgLy8gQWxsb3cgdGhlIGFjY2Vz
c2libGUgbmFtZSBiZSBjaGFuZ2VkIGlmIG5lY2Vzc2FyeS4KICAgICBIVE1MU2VsZWN0RWxlbWVu
dCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkp
KTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJ
dGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxl
Y3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC00MTIsNyArNDEyLDcgQEAgU3RyaW5nIFJl
bmRlck1lbnVMaXN0OjppdGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdAogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5k
ZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxl
bWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVs
ZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBp
ZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC00MjIs
NyArNDIyLDcgQEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVG9vbFRpcCh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVuc2ln
bmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0g
dG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAg
IGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVt
cygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsK
QEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0Ojpp
dGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgp
KSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtYWtpbmcgYW4gb3V0IG9mIGJvdW5kcyBhY2Nlc3Ms
IHRoZW4gd2Ugd2FudCB0byB1c2UgdGhlIHN0eWxlCiAgICAgICAgIC8vIG9mIGEgZGlmZmVyZW50
IG9wdGlvbiBlbGVtZW50IChpbmRleCAwKS4gSG93ZXZlciwgaWYgdGhlcmUgaXNuJ3QgYW4gb3B0
aW9uIGVsZW1lbnQKQEAgLTQ2Myw3ICs0NjMsNyBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51
TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIENvbG9yIFJlbmRlck1l
bnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsK
ICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19j
YXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0
SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXgg
Pj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnBvcHVwRGlkSGlkZSgpCiBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNT
ZXBhcmF0b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVt
c1tsaXN0SW5kZXhdOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0
ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRlck1lbnVM
aXN0OjppdGVtSXNMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2Vs
ZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVt
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0g
bGlzdEl0ZW1zW2xpc3RJbmRleF07CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBSZW5kZXJNZW51
TGlzdDo6aXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJN
ZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAg
IEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBs
aXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA4OTllMjg1MGM1YzA4NWI2MTMwN2E0MDdlMGU3OTRlOTg5NTk1ZWU0Li4zZGUxMTIzMTk4NzEy
YWJmYWNhMmU3NGUzNTEyN2ZmODJlNWExMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDExLTEwLTEzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBDbGVhbnVwIG9mIEhUTUxTZWxlY3RFbGVtZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTkwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgSFRNTFNlbGVj
dEVsZW1lbnQ6Omxpc3RJdGVtcygpIHJldHVybiB0eXBlOgorICAgICAgICAgIFZlY3RvcjxFbGVt
ZW50Kj4gLT4gVmVjdG9yPEhUTUxFbGVtZW50Kj4KKworICAgICAgICAqIHNyYy9XZWJTZWFyY2hh
YmxlRm9ybURhdGEuY3BwOgorICAgICAgICAoSFRNTE5hbWVzOjpJc1NlbGVjdEluRGVmYXVsdFN0
YXRlKToKKyAgICAgICAgKiBzcmMvV2ViU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlbGVjdEVsZW1lbnQ6Omxpc3RJdGVtcyk6CisKIDIwMTEtMTAtMTIgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIg
SW5zcGVjdG9yOiAgYWRkIHRlc3QgZm9yIHBhdXNlIGluIHNoYXJlZCB3b3JrZXIgaW5pdGlhbGl6
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJjaGFi
bGVGb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxl
Rm9ybURhdGEuY3BwCmluZGV4IGUzNDFjNjA5ZDdhM2VlZTNlOWRkMDRmMzU0YjAzNDAwNTQ5ZmIx
ZDUuLjFiOGE3MjdmNmM1Mzg3OTk1ZDhhYTRkM2JhOTU4MDQ4YmUyYWM0NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcApA
QCAtMTAxLDkgKzEwMSw5IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEdldEJ1dHRvblRvQWN0
aXZhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogLy8gc2VsZWN0ZWQgc3RhdGUuCiBib29sIElz
U2VsZWN0SW5EZWZhdWx0U3RhdGUoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKIHsKLSAgICBj
b25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwor
ICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJ
dGVtcygpOwogICAgIGlmIChzZWxlY3QtPm11bHRpcGxlKCkgfHwgc2VsZWN0LT5zaXplKCkgPiAx
KSB7Ci0gICAgICAgIGZvciAoVmVjdG9yPEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0
SXRlbXMuYmVnaW4oKSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKKyAgICAgICAgZm9y
IChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4o
KSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKCppKS0+
aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9v
bCBJc1NlbGVjdEluRGVmYXVsdFN0YXRlKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAg
Ly8gVGhlIHNlbGVjdCBpcyByZW5kZXJlZCBhcyBhIGNvbWJvYm94IChjYWxsZWQgbWVudWxpc3Qg
aW4gV2ViS2l0KS4gQXQKICAgICAvLyBsZWFzdCBvbmUgaXRlbSBpcyBzZWxlY3RlZCwgZGV0ZXJt
aW5lIHdoaWNoIG9uZS4KICAgICBIVE1MT3B0aW9uRWxlbWVudCogaW5pdGlhbFNlbGVjdGVkID0g
MDsKLSAgICBmb3IgKFZlY3RvcjxFbGVtZW50Kj46OmNvbnN0X2l0ZXJhdG9yIGkobGlzdEl0ZW1z
LmJlZ2luKCkpOyBpICE9IGxpc3RJdGVtcy5lbmQoKTsgKytpKSB7CisgICAgZm9yIChWZWN0b3I8
SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0g
bGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCEoKmkpLT5oYXNMb2NhbE5hbWUo
SFRNTE5hbWVzOjpvcHRpb25UYWcpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEhU
TUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQqPigqaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDdhYWM0NGEwNDM1NGZjN2E1MDFmZDIzNjU1MTdkZTNhMDliNmIxYWUu
LjM3M2VjMDVmNDdhZGIwYWY1MDFjODUyY2QwYTFhMDBhNDRhMDAwNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwCkBAIC01MywxMCArNTMs
MTAgQEAgV2ViU3RyaW5nIFdlYlNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIAogV2ViVmVj
dG9yPFdlYkVsZW1lbnQ+IFdlYlNlbGVjdEVsZW1lbnQ6Omxpc3RJdGVtcygpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgc291cmNlSXRlbXMgPSBjb25zdFVud3JhcDxIVE1M
U2VsZWN0RWxlbWVudD4oKS0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVt
ZW50Kj4mIHNvdXJjZUl0ZW1zID0gY29uc3RVbndyYXA8SFRNTFNlbGVjdEVsZW1lbnQ+KCktPmxp
c3RJdGVtcygpOwogICAgIFdlYlZlY3RvcjxXZWJFbGVtZW50PiBpdGVtcyhzb3VyY2VJdGVtcy5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlSXRlbXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGl0ZW1zW2ldID0gV2ViRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MRWxlbWVu
dCo+KHNvdXJjZUl0ZW1zW2ldKSk7CisgICAgICAgIGl0ZW1zW2ldID0gV2ViRWxlbWVudChzb3Vy
Y2VJdGVtc1tpXSk7CiAKICAgICByZXR1cm4gaXRlbXM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110809</attachid>
            <date>2011-10-13 00:58:45 -0700</date>
            <delta_ts>2011-10-13 02:07:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69908-20111013165843.patch</filename>
            <type>text/plain</type>
            <size>46361</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZjBjNjMzYWM5MGUyZmVj
YjYxMzE1MzE5NDQ2ZDZiNTUyODIzZjIwLi5jNmVhOGNjYzBhMTkxMDg4YTY0NmQ4Y2RhZjg2N2Uy
NjBhZTM5NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMTEtMTAtMTQgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXAgb2YgSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
LSBDaGFuZ2UgdGhlIG1fbGlzdEl0ZW1zIHR5cGU6IFZlY3RvcjxFbGVtZW50Kj4gLT4gVmVjdG9y
PEhUTUxFbGVtZW50Kj4KKyAgICAgICAgLSBSZW5hbWUgYSBtZW1iZXI6IG1fcmVjYWxjTGlzdEl0
ZW1zIC0+IG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zCisgICAgICAgIC0gRm9sZCBjaGVja0xpc3RJ
dGVtcygpIGludG8gbGlzdEl0ZW1zKCkKKyAgICAgICAgLSBTdHlsZSBmaXhlcworCisgICAgICAg
IE5vIG5ldyB0ZXN0cywganVzdCBhIGNsZWFudXAuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0Qm94OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvbkluZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAg
IChvcHRpb25Gcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVj
dGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KToKKyAgICAgICAgKiBkb20vT3B0aW9uRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25FbGVtZW50OjpvcHRpb25JbmRleCk6CisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVu
dDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9w
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zmlyc3RTZWxlY3RhYmxlTGlzdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleFBhZ2VBd2F5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVM
YXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRB
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3Rh
dGUpOiBVc2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpt
ZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsYXN0U2VsZWN0ZWRMaXN0SW5kZXgpOgorICAgICAgICBP
cHRpbWl6ZSB0aGUgY29kZSBieSBpdGVyYXRpbmcgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvU2VsZWN0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojp1cGRhdGVP
cHRpb25zV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNldFRleHRG
cm9tT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUFjY2Vzc2liaWxpdHlUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtVG9vbFRpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lbnVMaXN0OjppdGVtSXNTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0
OjppdGVtSXNTZWxlY3RlZCk6CisKIDIwMTEtMTAtMTMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjg5OTE1KTogPGlucHV0IHR5cGU9ZW1h
aWwgbXVsdGlwbGU+IGRvbid0IHNob3cgdGhlIGRlZmF1bHQgdmFsdWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXgg
OTFhMmU5NDQ3N2JmZWM3YmFjNWQ5NTQzOGY0NmY1OWJiMGU1YzRmZC4uYWU3MTFlMmM4ODViMjQ2
YjU4ZGFmM2E1ZjRkYmM2YjgwZjY2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2
ZUNoaWxkcmVuID0gdHJ1ZTsKICAgICAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0
SXRlbXMgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHNlbGVjdE5vZGUpLT5saXN0
SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc3Rh
dGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihzZWxlY3ROb2RlKS0+bGlzdEl0ZW1zKCk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbGlzdEl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVs
ZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJ
dGVtIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggMmFiMDgxNDNjNjYxNDgzNDI0NjJj
ZWEyNjc2YzU2OWQwODMyY2Y0Zi4uN2FhMzA4NTZlNzJkMTljMzAwZDQ0Mzg2OGRhZGU5MjZkODI4
MDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246Omxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0CiAgICAg
aWYgKCFzZWxlY3RFbGVtZW50KSAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAotICAgIGNvbnN0
IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQtPmxpc3RJdGVtcygp
OworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVt
ZW50LT5saXN0SXRlbXMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBsaXN0SXRlbXMuc2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgaWYg
KGxpc3RJdGVtc1tpXSA9PSBtX29wdGlvbkVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmlu
ZGV4IGViZjY5NGI1YjQ2YmM4YTBhM2NlZThiY2U2YWFmMWVjZDQ5MDYyYjUuLjdkMjg2ODMwMzkx
YWY1OGFmNGM2ZDQ0NTFlMGIxOGIwZTk1NTg3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxk
cmVuKCkKIAogICAgIEFTU0VSVChzZWxlY3ROb2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpOwog
Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc3RhdGljX2Nhc3Q8SFRN
TFNlbGVjdEVsZW1lbnQqPihzZWxlY3ROb2RlKS0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVj
dG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVt
ZW50Kj4oc2VsZWN0Tm9kZSktPmxpc3RJdGVtcygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxp
c3RJdGVtcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogb3B0aW9uID0gbWVudUxp
c3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KHRvSFRNTEVsZW1lbnQobGlzdEl0ZW1zW2ldKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNjVjNzdhODA3MGY0NGEyOWE1OGRjNTg4OTQ3MjRi
NzhiN2NmODdhLi5mOTQ3NTZjYTEwYjRlNGUyYjk3N2IxMGFjNjIyZGY3ZTU5ODk2MmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKQEAgLTExNTAsNyArMTE1MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgICAgIGlmIChub2RlICYm
IG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsK
ICAgICAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3ROb2RlID0gc3RhdGljX2Nhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQqPihub2RlKTsKICAgICAgICAgICAgIGludCBzZWxlY3RlZEluZGV4
ID0gc2VsZWN0Tm9kZS0+c2VsZWN0ZWRJbmRleCgpOwotICAgICAgICAgICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiBsaXN0SXRlbXMgPSBzZWxlY3ROb2RlLT5saXN0SXRlbXMoKTsKKyAgICAgICAg
ICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+IGxpc3RJdGVtcyA9IHNlbGVjdE5vZGUtPmxp
c3RJdGVtcygpOwogICAgICAgICAKICAgICAgICAgICAgIEVsZW1lbnQqIHNlbGVjdGVkT3B0aW9u
ID0gMDsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDAgJiYgc2VsZWN0ZWRJbmRl
eCA8IChpbnQpbGlzdEl0ZW1zLnNpemUoKSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAKaW5kZXggMGUyMjIzYjA3MzI2NDNiNDU2ZjhjZTIwMzEyZWZmNGM2OGY2Yzg0Mi4uZDE2
MWQ4ZTk0YjE2MDIyMjMwMzg1MTAyNzIzNmY5MDdkNGNmMmQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcApAQCAtOTY0LDcgKzk2NCw3IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBn
aW50IGkpCiAKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdE5vZGUgPSB0b1NlbGVj
dEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpKTsKICAgICAg
ICAgaW50IHNlbGVjdGVkSW5kZXggPSBzZWxlY3ROb2RlLT5zZWxlY3RlZEluZGV4KCk7Ci0gICAg
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4gbGlzdEl0ZW1zID0gc2VsZWN0Tm9kZS0+bGlzdEl0
ZW1zKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+IGxpc3RJdGVtcyA9IHNl
bGVjdE5vZGUtPmxpc3RJdGVtcygpOwogCiAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgMCB8
fCBzZWxlY3RlZEluZGV4ID49IHN0YXRpY19jYXN0PGludD4obGlzdEl0ZW1zLnNpemUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHN0YXRpYyBnaW50IHdl
YmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEF0a1NlbGVjdGlv
biogc2VsZWN0CiAKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdE5vZGUgPSB0b1Nl
bGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpKTsKICAg
ICAgICAgaW50IHNlbGVjdGVkSW5kZXggPSBzZWxlY3ROb2RlLT5zZWxlY3RlZEluZGV4KCk7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4gbGlzdEl0ZW1zID0gc2VsZWN0Tm9kZS0+bGlz
dEl0ZW1zKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+IGxpc3RJdGVtcyA9
IHNlbGVjdE5vZGUtPmxpc3RJdGVtcygpOwogCiAgICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4
ID49IDAgJiYgc2VsZWN0ZWRJbmRleCA8IHN0YXRpY19jYXN0PGludD4obGlzdEl0ZW1zLnNpemUo
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDA2MjQ1MThl
YWZkOGMzODUyMzYxNWI5NGQzMmY2YmVhMGFiNWMzN2YuLjJiZGRkYTFmZTcxZjdlOWZhOTNjYWU4
YTY0NzJjZWZiMzVkODMxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgaW50IE9wdGlvbkVsZW1lbnQ6Om9wdGlvbkluZGV4KEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3RFbGVtZW50LCBjb25zdCBFbGVtZW50KgogCiAgICAgLy8gTGV0J3MgZG8g
dGhpcyBkeW5hbWljYWxseS4gTWlnaHQgYmUgYSBiaXQgc2xvdywgYnV0IHdlJ3JlIHN1cmUKICAg
ICAvLyB3ZSB3b24ndCBmb3JnZXQgdG8gdXBkYXRlIGEgbWVtYmVyIHZhcmlhYmxlIGluIHNvbWUg
Y2FzZXMuLi4KLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IHNlbGVjdEVsZW1l
bnQtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9
IHNlbGVjdEVsZW1lbnQtPmxpc3RJdGVtcygpOwogICAgIGludCBsZW5ndGggPSBpdGVtcy5zaXpl
KCk7CiAgICAgaW50IG9wdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmlu
ZGV4IGI3NjcyN2NlMjRkYmQ4MjUzMzkzMjFmMzZlYWRkYTI3NjdkNGYyYzguLjVhMzQyNTEwN2I0
MDMyMzVkNDk4YzVjYTM4MDcwNTg2YTZlMGY2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVu
dUxpc3QuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU3Bh
dGlhbE5hdmlnYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpA
QCAtODUsNyArODYsNyBAQCBIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYwogICAgICwgbV91c2VyRHJp
dmVuQ2hhbmdlKGZhbHNlKQogICAgICwgbV9tdWx0aXBsZShmYWxzZSkKICAgICAsIG1fYWN0aXZl
U2VsZWN0aW9uU3RhdGUoZmFsc2UpCi0gICAgLCBtX3JlY2FsY0xpc3RJdGVtcyhmYWxzZSkKKyAg
ICAsIG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHNlbGVjdFRhZykpOwogfQpAQCAtMTk5LDcgKzIwMCw4IEBAIGludCBIVE1MU2VsZWN0RWxl
bWVudDo6YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCkgY29uc3QKIAogdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6YWRkKEhUTUxFbGVtZW50KiBlbGVtZW50LCBIVE1MRWxlbWVudCogYmVmb3Jl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHByb3RlY3RO
ZXdDaGlsZChlbGVtZW50KTsgLy8gbWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHJlZidkIGFuZCBk
ZXJlZidkIHNvIHdlIGRvbid0IGxlYWsgaXQKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGVsZW1lbnQg
aXMgcmVmJ2QgYW5kIGRlcmVmJ2Qgc28gd2UgZG9uJ3QgbGVhayBpdC4KKyAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IHByb3RlY3ROZXdDaGlsZChlbGVtZW50KTsKIAogICAgIGlmICghZWxlbWVudCB8
fCAhKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShoclRhZykpKQogICAgICAgICByZXR1cm47CkBAIC0yMjksNyArMjMxLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24pCiAKIFN0
cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUoKSBjb25zdAogewotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxF
bGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChpdGVtc1tpXS0+aGFzTG9jYWxO
YW1lKG9wdGlvblRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihpdGVtc1tp
XSktPnNlbGVjdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQqPihpdGVtc1tpXSktPnZhbHVlKCk7CkBAIC0yNDMsNyArMjQ1LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIC8vIGZpbmQgdGhlIG9wdGlvbiB3aXRoIHZhbHVlKCkgbWF0Y2hpbmcgdGhl
IGdpdmVuIHBhcmFtZXRlcgogICAgIC8vIGFuZCBtYWtlIGl0IHRoZSBjdXJyZW50IHNlbGVjdGlv
bi4KLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAg
IGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIHVu
c2lnbmVkIG9wdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNMb2NhbE5hbWUob3B0
aW9uVGFnKSkgewpAQCAtMjgxLDEzICsyODMsMTMgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG11bHRpcGxlQXR0cikKICAgICAgICAgcGFyc2VNdWx0aXBsZUF0dHJpYnV0
ZShhdHRyKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikgewot
ICAgICAgICAvLyBGSVhNRTogaWdub3JlIGZvciB0aGUgbW9tZW50CisgICAgICAgIC8vIEZJWE1F
OiBpZ25vcmUgZm9yIHRoZSBtb21lbnQuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
YWxpZ25BdHRyKSB7Ci0gICAgICAgIC8vIERvbid0IG1hcCAnYWxpZ24nIGF0dHJpYnV0ZS4gIFRo
aXMgbWF0Y2hlcyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJRSBkby4KKyAgICAgICAgLy8gRG9u
J3QgbWFwICdhbGlnbicgYXR0cmlidXRlLiBUaGlzIG1hdGNoZXMgd2hhdCBGaXJlZm94LCBPcGVy
YSBhbmQgSUUgZG8uCiAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjA3MgotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uY2hhbmdl
QXR0cikgeworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uY2hhbmdlQXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwotICAgIH0gZWxzZQor
ICAgIGVsc2UKICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKQEAgLTMyOSw3ICszMzEsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykg
Y29uc3QKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQo
KQogewotICAgIGlmIChtX3JlY2FsY0xpc3RJdGVtcykKKyAgICBpZiAobV9zaG91bGRSZWNhbGNM
aXN0SXRlbXMpCiAgICAgICAgIHJlY2FsY0xpc3RJdGVtcygpOwogfQogCkBAIC0zODMsMTUgKzM4
NSwxNSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgs
IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24sIEV4YwogICAgICAgICBpbmRleCA9IG1heFNlbGVj
dEl0ZW1zIC0gMTsKICAgICBpbnQgZGlmZiA9IGluZGV4ICAtIGxlbmd0aCgpOwogICAgIEhUTUxF
bGVtZW50KiBiZWZvcmUgPSAwOwotICAgIC8vIG91dCBvZiBhcnJheSBib3VuZHMgPyBmaXJzdCBp
bnNlcnQgZW1wdHkgZHVtbWllcworICAgIC8vIE91dCBvZiBhcnJheSBib3VuZHM/IEZpcnN0IGlu
c2VydCBlbXB0eSBkdW1taWVzLgogICAgIGlmIChkaWZmID4gMCkgewogICAgICAgICBzZXRMZW5n
dGgoaW5kZXgsIGVjKTsKLSAgICAgICAgLy8gcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSA/Cisg
ICAgICAgIC8vIFJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnk/CiAgICAgfSBlbHNlIGlmIChkaWZm
IDwgMCkgewogICAgICAgICBiZWZvcmUgPSB0b0hUTUxFbGVtZW50KG9wdGlvbnMoKS0+aXRlbShp
bmRleCsxKSk7CiAgICAgICAgIHJlbW92ZShpbmRleCk7CiAgICAgfQotICAgIC8vIGZpbmFsbHkg
YWRkIHRoZSBuZXcgZWxlbWVudAorICAgIC8vIEZpbmFsbHkgYWRkIHRoZSBuZXcgZWxlbWVudC4K
ICAgICBpZiAoIWVjKSB7CiAgICAgICAgIGFkZChvcHRpb24sIGJlZm9yZSwgZWMpOwogICAgICAg
ICBpZiAoZGlmZiA+PSAwICYmIG9wdGlvbi0+c2VsZWN0ZWQoKSkKQEAgLTQwNiw3ICs0MDgsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgbmV3TGVuID0gbWF4U2VsZWN0SXRlbXM7CiAgICAgaW50
IGRpZmYgPSBsZW5ndGgoKSAtIG5ld0xlbjsKIAotICAgIGlmIChkaWZmIDwgMCkgeyAvLyBhZGQg
ZHVtbXkgZWxlbWVudHMKKyAgICBpZiAoZGlmZiA8IDApIHsgLy8gQWRkIGR1bW15IGVsZW1lbnRz
LgogICAgICAgICBkbyB7CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gb3B0aW9uID0gZG9j
dW1lbnQoKS0+Y3JlYXRlRWxlbWVudChvcHRpb25UYWcsIGZhbHNlKTsKICAgICAgICAgICAgIEFT
U0VSVChvcHRpb24pOwpAQCAtNDE1LDcgKzQxNyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9IHdoaWxlICgrK2RpZmYpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogCiAg
ICAgICAgIC8vIFJlbW92aW5nIGNoaWxkcmVuIGZpcmVzIG11dGF0aW9uIGV2ZW50cywgd2hpY2gg
bWlnaHQgbXV0YXRlIHRoZSBET00gZnVydGhlciwgc28gd2UgZmlyc3QgY29weSBvdXQgYSBsaXN0
CiAgICAgICAgIC8vIG9mIGVsZW1lbnRzIHRoYXQgd2UgaW50ZW5kIHRvIHJlbW92ZSB0aGVuIGF0
dGVtcHQgdG8gcmVtb3ZlIHRoZW0gb25lIGF0IGEgdGltZS4KQEAgLTQzMSw5ICs0MzMsOCBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuLCBFeGNlcHRp
b25Db2RlJiBlYykKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zVG9SZW1v
dmUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGl0ZW0gPSBpdGVtc1RvUmVt
b3ZlW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGl0ZW0tPnBhcmVudE5vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKGl0ZW0tPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBpdGVtLT5w
YXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKGl0ZW0sIGVjKTsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKQEAgLTQ0OCw3ICs0NDks
NyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25z
dAogLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSB2YWxpZCBpdGVtIGNsb3Nlc3QgdG8gdGhh
dCBib3VuZGFyeSB3aGljaCBpcyBwYXN0IHxsaXN0SW5kZXh8IGlmIHRoZXJlIGlzIG9uZS4KIC8v
IE90aGVyd2lzZSwgaXQgcmV0dXJucyB8bGlzdEluZGV4fC4KIC8vIFZhbGlkIG1lYW5zIHRoYXQg
aXQgaXMgZW5hYmxlZCBhbmQgYW4gb3B0aW9uIGVsZW1lbnQuCi1pbnQgSFRNTFNlbGVjdEVsZW1l
bnQ6Om5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50
IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24sIGludCBza2lwKQoraW50IEhUTUxT
ZWxlY3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYg
bGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNr
aXApCiB7CiAgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAtMSB8fCBkaXJlY3Rpb24gPT0gMSk7CiAg
ICAgaW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7CkBAIC00NzgsNyArNDc5LDcgQEAgaW50
IEhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0
SW5kZXgpIGNvbnN0CiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6Zmlyc3RTZWxlY3RhYmxlTGlz
dEluZGV4KCkgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOwogICAgIGludCBpbmRleCA9IG5leHRWYWxpZEluZGV4KGl0ZW1zLCBpdGVtcy5zaXpl
KCksIFNraXBCYWNrd2FyZHMsIElOVF9NQVgpOwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5kZXgpID09IGl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDkzLDEx
ICs0OTQsMTEgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsYXN0U2VsZWN0YWJsZUxpc3RJbmRl
eCgpIGNvbnN0CiAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBpdGVtIG9u
ZSBwYWdlIGF3YXkgZnJvbSB8c3RhcnRJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258Lgog
aW50IEhUTUxTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGlu
dCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIHsKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwotICAgIC8vIENhbid0IHVz
ZSBkYXRhLT5zaXplKCkgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMgYSBtaW5pbXVtIHNpemUuCisg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAg
Ly8gQ2FuJ3QgdXNlIG1fc2l6ZSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6
ZS4KICAgICBpbnQgcGFnZVNpemUgPSAwOwogICAgIGlmIChyZW5kZXJlcigpLT5pc0xpc3RCb3go
KSkKLSAgICAgICAgcGFnZVNpemUgPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIoKSktPnNpemUo
KSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dAorICAgICAgICBwYWdlU2l6ZSA9
IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2l6ZSgpIC0gMTsgLy8gLTEgc28gd2Ugc3Rp
bGwgc2hvdyBjb250ZXh0LgogCiAgICAgLy8gT25lIHBhZ2UgYXdheSwgYnV0IG5vdCBvdXRzaWRl
IHZhbGlkIGJvdW5kcy4KICAgICAvLyBJZiB0aGVyZSBpcyBhIHZhbGlkIG9wdGlvbiBpdGVtIG9u
ZSBwYWdlIGF3YXksIHRoZSBpbmRleCBpcyBjaG9zZW4uCkBAIC01MTQsNyArNTE1LDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNl
bGVjdEFsbCBzZWxlY3Rpb24KLSAgICAvLyB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMK
KyAgICAvLyB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMuCiAgICAgc2F2ZUxhc3RTZWxl
Y3Rpb24oKTsKIAogICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSB0cnVlOwpAQCAtNTM0LDcg
KzUzNSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKCkKICAg
ICB9CiAKICAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5jbGVhcigpOwotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhU
TUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBtX2xhc3RPbkNo
YW5nZVNlbGVjdGlvbi5hcHBlbmQob3B0aW9uRWxlbWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxl
Y3RlZCgpKTsKQEAgLTU0NiwxMCArNTQ3LDEwIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGludCBpbmRleCkKICAgICBtX2FjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4ID0gaW5kZXg7CiAKICAgICAvLyBDYWNoZSB0aGUgc2VsZWN0aW9uIHN0
YXRlIHNvIHdlIGNhbiByZXN0b3JlIHRoZSBvbGQgc2VsZWN0aW9uIGFzIHRoZSBuZXcKLSAgICAv
LyBzZWxlY3Rpb24gcGl2b3RzIGFyb3VuZCB0aGlzIGFuY2hvciBpbmRleAorICAgIC8vIHNlbGVj
dGlvbiBwaXZvdHMgYXJvdW5kIHRoaXMgYW5jaG9yIGluZGV4LgogICAgIG1fY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb24uY2xlYXIoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0
ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09w
dGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2Vs
ZWN0aW9uLmFwcGVuZChvcHRpb25FbGVtZW50ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkp
OwpAQCAtNTY5LDcgKzU3MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RC
b3hTZWxlY3Rpb24oYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucykKICAgICB1bnNpZ25lZCBzdGFy
dCA9IG1pbihtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4LCBtX2FjdGl2ZVNlbGVjdGlvbkVu
ZEluZGV4KTsKICAgICB1bnNpZ25lZCBlbmQgPSBtYXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJ
bmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50
ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgaWYgKCFvcHRpb25FbGVtZW50
IHx8IGl0ZW1zW2ldLT5kaXNhYmxlZCgpKQpAQCAtNTkxLDcgKzU5Miw3IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSgpCiB7CiAgICAgQVNTRVJUKCF1c2VzTWVudUxp
c3QoKSB8fCBtX211bHRpcGxlKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CiAKICAgICAvLyBJZiB0aGUgY2FjaGVkIHNlbGVjdGlvbiBsaXN0IGlzIGVt
cHR5LCBvciB0aGUgc2l6ZSBoYXMgY2hhbmdlZCwgdGhlbiBmaXJlCiAgICAgLy8gZGlzcGF0Y2hG
b3JtQ29udHJvbENoYW5nZUV2ZW50LCBhbmQgcmV0dXJuIGVhcmx5LgpAQCAtNjAwLDcgKzYwMSw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBVcGRhdGUgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uIGFuZCBm
aXJlIGRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudAorICAgIC8vIFVwZGF0ZSBsYXN0T25D
aGFuZ2VTZWxlY3Rpb24gYW5kIGZpcmUgZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50Lgog
ICAgIGJvb2wgZmlyZU9uQ2hhbmdlID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVs
ZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwpAQCAtNjQ1LDI4ICs2NDYsMjMgQEAg
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCkKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmNoZWNrTGlzdEl0ZW1zKCkgY29uc3QK
K2NvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEl0ZW1z
KCkgY29uc3QKIHsKKyAgICBpZiAobV9zaG91bGRSZWNhbGNMaXN0SXRlbXMpCisgICAgICAgIGNv
bnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1zSW50ZXJu
YWwoKTsKKyAgICBlbHNlIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgVmVjdG9yPEVsZW1l
bnQqPiBpdGVtcyA9IG1fbGlzdEl0ZW1zOwotICAgIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoZmFsc2UpOwotICAgIEFTU0VSVChp
dGVtcyA9PSBtX2xpc3RJdGVtcyk7CisgICAgICAgIFZlY3RvcjxIVE1MRWxlbWVudCo+IGl0ZW1z
ID0gbV9saXN0SXRlbXM7CisgICAgICAgIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPih0
aGlzKS0+cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoZmFsc2UpOworICAgICAgICBBU1NFUlQoaXRl
bXMgPT0gbV9saXN0SXRlbXMpOwogI2VuZGlmCi19Ci0KLWNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25zdAotewotICAgIGlmIChtX3JlY2Fs
Y0xpc3RJdGVtcykKLSAgICAgICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMp
LT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCgpOwotICAgIGVsc2UKLSAgICAgICAgY2hlY2tMaXN0
SXRlbXMoKTsKLQorICAgIH0KICAgICByZXR1cm4gbV9saXN0SXRlbXM7CiB9CiAKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcygpCiB7Ci0gICAgbV9yZWNhbGNMaXN0
SXRlbXMgPSB0cnVlOworICAgIG1fc2hvdWxkUmVjYWxjTGlzdEl0ZW1zID0gdHJ1ZTsKICAgICAv
LyBNYW51YWwgc2VsZWN0aW9uIGFuY2hvciBpcyByZXNldCB3aGVuIG1hbmlwdWxhdGluZyB0aGUg
c2VsZWN0IHByb2dyYW1tYXRpY2FsbHkuCiAgICAgbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCA9IC0xOwogICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpOwpAQCAtNjc5LDE2ICs2
NzUsMTYgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwo
Ym9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykKIHsKICAgICBtX2xpc3RJdGVtcy5jbGVhcigpOwog
Ci0gICAgbV9yZWNhbGNMaXN0SXRlbXMgPSBmYWxzZTsKKyAgICBtX3Nob3VsZFJlY2FsY0xpc3RJ
dGVtcyA9IGZhbHNlOwogCiAgICAgT3B0aW9uRWxlbWVudCogZm91bmRTZWxlY3RlZCA9IDA7CiAg
ICAgZm9yIChOb2RlKiBjdXJyZW50Tm9kZSA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsgY3VycmVudE5v
ZGU7KSB7Ci0gICAgICAgIGlmICghY3VycmVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAg
ICAgICBpZiAoIWN1cnJlbnROb2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGN1
cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhpcyk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIEVsZW1lbnQqIGN1cnJlbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY3VycmVudE5vZGUpOworICAgICAgICBIVE1MRWxlbWVu
dCogY3VycmVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY3VycmVudE5vZGUpOwogCiAg
ICAgICAgIC8vIG9wdGdyb3VwIHRhZ3MgbWF5IG5vdCBuZXN0LiBIb3dldmVyLCBib3RoIEZpcmVG
b3ggYW5kIElFIHdpbGwKICAgICAgICAgLy8gZmxhdHRlbiB0aGUgdHJlZSBhdXRvbWF0aWNhbGx5
LCBzbyB3ZSBmb2xsb3cgc3VpdC4KQEAgLTcxNSw3ICs3MTEsNyBAQCB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVz
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGN1cnJlbnQtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjpoclRhZykpCisgICAgICAgIGlmIChjdXJyZW50LT5oYXNUYWdOYW1l
KGhyVGFnKSkKICAgICAgICAgICAgIG1fbGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKIAogICAg
ICAgICAvLyBJbiBjb25mb3JtaW5nIEhUTUwgY29kZSwgb25seSA8b3B0Z3JvdXA+IGFuZCA8b3B0
aW9uPiB3aWxsIGJlIGZvdW5kCkBAIC03MzIsOCArNzI4LDggQEAgaW50IEhUTUxTZWxlY3RFbGVt
ZW50OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAK
LSAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgZmlyc3Qgb3B0aW9uIHNlbGVjdGVkCi0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICAvLyBS
ZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgZmlyc3Qgb3B0aW9uIHNlbGVjdGVkLgorICAgIGNvbnN0
IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKE9wdGlvbkVs
ZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAg
ICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkKQEAgLTc1Miw3ICs3NDgsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4SW50ZXJuYWwoaW50IG9w
dGlvbkluZGV4LCBib29sIGRlc2VsZWN0LAogICAgIGlmICghbV9tdWx0aXBsZSkKICAgICAgICAg
ZGVzZWxlY3QgPSB0cnVlOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBs
aXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgob3B0aW9uSW5k
ZXgpOwogCiAgICAgRWxlbWVudCogZXhjbHVkZUVsZW1lbnQgPSAwOwpAQCAtNzk1LDcgKzc5MSw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQg
b3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QsCiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0
aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBjb25zdAogewotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxF
bGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RTaXplID0gc3RhdGlj
X2Nhc3Q8aW50PihpdGVtcy5zaXplKCkpOwogICAgIGlmIChvcHRpb25JbmRleCA8IDAgfHwgb3B0
aW9uSW5kZXggPj0gbGlzdFNpemUpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTgxNCw3ICs4MTAs
NyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KGludCBvcHRpb25J
bmRleCkgY29uc3QKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChp
bnQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gbGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA8IDAgfHwgbGlzdEluZGV4ID49IHN0YXRp
Y19jYXN0PGludD4oaXRlbXMuc2l6ZSgpKSB8fCAhaXNPcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJ
bmRleF0pKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTgzMSw3ICs4MjcsNyBAQCBpbnQgSFRN
TFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0SW5kZXgpIGNvbnN0CiB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2Rl
PiBvbGRGb2N1c2VkTm9kZSkKIHsKICAgICAvLyBTYXZlIHRoZSBzZWxlY3Rpb24gc28gaXQgY2Fu
IGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdoZW4KLSAgICAvLyBkaXNwYXRjaGlu
ZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBibHVyIGV2ZW50IGRpc3BhdGNoYWwKKyAgICAvLyBkaXNw
YXRjaGluZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBibHVyIGV2ZW50IGRpc3BhdGNoYWwuCiAgICAg
aWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbigpOwogICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1
c2VkTm9kZSk7CkBAIC04NDksNyArODQ1LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlz
cGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSkKIAogdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6ZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEVsZW1lbnQq
IGV4Y2x1ZGVFbGVtZW50KQogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlz
dEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGlmIChpdGVtc1tpXSA9PSBleGNsdWRlRWxlbWVudCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtODYxLDE4ICs4NTcsMTYgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
ZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50KQog
CiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcmIHZh
bHVlKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0
ZW1zKCk7Ci0gICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKLQotICAgIC8vIEZJWE1FOiBD
aGFuZ2UgdGhpcyBjb2RlIHRvIHVzZSB0aGUgbmV3IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQgY29kZSBwYXRoLgotICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBjaGFyYWN0ZXJzKGxlbmd0
aCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgIGNvbnN0IFZl
Y3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOworICAgIHNpemVfdCBsZW5n
dGggPSBpdGVtcy5zaXplKCk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0
b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBib29sIHNlbGVjdGVkID0gb3B0aW9u
RWxlbWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpOwotICAgICAgICBjaGFyYWN0ZXJz
W2ldID0gc2VsZWN0ZWQgPyAnWCcgOiAnLic7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlbGVj
dGVkID8gJ1gnIDogJy4nKTsKICAgICB9Ci0KLSAgICB2YWx1ZSA9IFN0cmluZyhjaGFyYWN0ZXJz
LmRhdGEoKSwgbGVuZ3RoKTsKKyAgICB2YWx1ZSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODgwLDEwICs4NzQsMTAgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKICAg
ICByZWNhbGNMaXN0SXRlbXMoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gbGlzdEl0ZW1zKCk7Ci0gICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKKyAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChp
dGVtc1tpXSkpCiAgICAgICAgICAgICBvcHRpb25FbGVtZW50LT5zZXRTZWxlY3RlZFN0YXRlKHN0
YXRlW2ldID09ICdYJyk7CiAgICAgfQpAQCAtOTA4LDcgKzkwMiw3IEBAIGJvb2wgSFRNTFNlbGVj
dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzZnVsID0gZmFsc2U7Ci0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50
KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKQEAgLTkyOSw3ICs5
MjMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCgpCiAgICAgT3B0aW9uRWxlbWVu
dCogZmlyc3RPcHRpb24gPSAwOwogICAgIE9wdGlvbkVsZW1lbnQqIHNlbGVjdGVkT3B0aW9uID0g
MDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7Cisg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9w
dGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwog
ICAgICAgICBpZiAoIW9wdGlvbkVsZW1lbnQpCkBAIC0xMDAzLDcgKzk5Nyw3IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8S2V5
Ym9hcmRFdmVudCo+KGV2ZW50KS0+a2V5SWRlbnRpZmllcigpOwogICAgICAgICBib29sIGhhbmRs
ZWQgPSB0cnVlOwotICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0
aGlzLT5saXN0SXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxp
c3RJdGVtcyA9IHRoaXMtPmxpc3RJdGVtcygpOwogICAgICAgICBpbnQgbGlzdEluZGV4ID0gb3B0
aW9uVG9MaXN0SW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKIAogICAgICAgICBpZiAoa2V5SWRlbnRp
ZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRpZmllciA9PSAiUmlnaHQiKQpAQCAtMTEzNSw3ICsx
MTI5LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQg
bGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAgICBPcHRpb25FbGVtZW50KiBvcHRp
b24gPSB0b09wdGlvbkVsZW1lbnQoY2xpY2tlZEVsZW1lbnQpOwogICAgIGlmIChvcHRpb24pIHsK
ICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIGFuIGFjdGl2ZSBzZWxlY3Rpb24gKGxp
a2UgZHVyaW5nIGRyYWcKLSAgICAgICAgLy8gc2VsZWN0aW9uKSwgc2hvdWxkIHNlbGVjdCBvciBk
ZXNlbGVjdAorICAgICAgICAvLyBzZWxlY3Rpb24pLCBzaG91bGQgc2VsZWN0IG9yIGRlc2VsZWN0
LgogICAgICAgICBpZiAob3B0aW9uLT5zZWxlY3RlZCgpICYmIG11bHRpKQogICAgICAgICAgICAg
bV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IGZhbHNlOwogCkBAIC0xMTU0LDcgKzExNDgsNyBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgs
IGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvcklu
ZGV4IDwgMCAmJiAhbXVsdGlTZWxlY3QpCiAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hv
ckluZGV4KHNlbGVjdGVkSW5kZXgoKSk7CiAKLSAgICAvLyBTZXQgdGhlIHNlbGVjdGlvbiBzdGF0
ZSBvZiB0aGUgY2xpY2tlZCBvcHRpb24KKyAgICAvLyBTZXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBv
ZiB0aGUgY2xpY2tlZCBvcHRpb24uCiAgICAgaWYgKG9wdGlvbiAmJiAhY2xpY2tlZEVsZW1lbnQt
PmRpc2FibGVkKCkpCiAgICAgICAgIG9wdGlvbi0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKIApA
QCAtMTE3MSw3ICsxMTY1LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0
ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKIAogdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
ewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRoaXMtPmxpc3RJdGVt
cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0aGlzLT5s
aXN0SXRlbXMoKTsKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VF
dmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1cygp
OwpAQCAtMTIyNCw3ICsxMjE4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoc3RhcnRJbmRleCwgU2tpcEJh
Y2t3YXJkcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBTZXQgdGhlIGVuZCBpbmRleCBiYXNlZCBvbiB0aGUgY3VycmVudCBlbmQgaW5kZXgKKyAgICAg
ICAgICAgIC8vIFNldCB0aGUgZW5kIGluZGV4IGJhc2VkIG9uIHRoZSBjdXJyZW50IGVuZCBpbmRl
eC4KICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikgewogICAgICAgICAg
ICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgobV9hY3RpdmVTZWxlY3Rp
b25FbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CkBAIC0xMzI2LDIw
ICsxMzIwLDE0IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RlZExpc3RJ
bmRleCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBpdGVyYXRlIHRoZSBsaXN0
SXRlbXMgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9
IGxpc3RJdGVtcygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlv
bkVsZW1lbnQoaXRlbXNbaV0pKSB7Ci0gICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2Vs
ZWN0ZWQoKSkgewotICAgICAgICAgICAgICAgIGluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gaXRlbXMuc2l6
ZSgpOyBpOykgeworICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRv
T3B0aW9uRWxlbWVudChpdGVtc1stLWldKSkgeworICAgICAgICAgICAgaWYgKG9wdGlvbkVsZW1l
bnQtPnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAg
ICB9Ci0KLSAgICByZXR1cm4gZm91bmQgPyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4KSA6IC0xOwor
ICAgIHJldHVybiAtMTsKIH0KIAogc3RhdGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNwYWNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTM3Niw3ICsxMzY0LDcgQEAgdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZChLZXlib2FyZEV2ZW50KiBldmVudCkKIAogICAgICAg
ICBpZiAoYyA9PSBtX3JlcGVhdGluZ0NoYXIpIHsKICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGlz
IGxpa2VseSB0cnlpbmcgdG8gY3ljbGUgdGhyb3VnaCBhbGwgdGhlIGl0ZW1zIHN0YXJ0aW5nCi0g
ICAgICAgICAgICAvLyB3aXRoIHRoaXMgY2hhcmFjdGVyLCBzbyBqdXN0IHNlYXJjaCBvbiB0aGUg
Y2hhcmFjdGVyCisgICAgICAgICAgICAvLyB3aXRoIHRoaXMgY2hhcmFjdGVyLCBzbyBqdXN0IHNl
YXJjaCBvbiB0aGUgY2hhcmFjdGVyLgogICAgICAgICAgICAgcHJlZml4ID0gU3RyaW5nKCZjLCAx
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVwZWF0aW5nQ2hhciA9IDA7CkBA
IC0xMzg1LDcgKzEzNzMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlQWhlYWRGaW5k
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRN
TEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgaXRlbUNvdW50ID0gaXRl
bXMuc2l6ZSgpOwogICAgIGlmIChpdGVtQ291bnQgPCAxKQogICAgICAgICByZXR1cm47CkBAIC0x
NDMzLDggKzE0MjEsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphY2Nlc3NLZXlTZXRTZWxl
Y3RlZEluZGV4KGludCBpbmRleCkKICAgICBpZiAoIWZvY3VzZWQoKSkKICAgICAgICAgYWNjZXNz
S2V5QWN0aW9uKGZhbHNlKTsKICAgICAKLSAgICAvLyBpZiB0aGlzIGluZGV4IGlzIGFscmVhZHkg
c2VsZWN0ZWQsIHVuc2VsZWN0LiBvdGhlcndpc2UgdXBkYXRlIHRoZSBzZWxlY3RlZCBpbmRleAot
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgLy8g
SWYgdGhpcyBpbmRleCBpcyBhbHJlYWR5IHNlbGVjdGVkLCB1bnNlbGVjdC4gb3RoZXJ3aXNlIHVw
ZGF0ZSB0aGUgc2VsZWN0ZWQgaW5kZXguCisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RJbmRleCA9IG9wdGlvblRvTGlzdElu
ZGV4KGluZGV4KTsKICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IChsaXN0
SW5kZXggPj0gMCA/IHRvT3B0aW9uRWxlbWVudChpdGVtc1tsaXN0SW5kZXhdKSA6IDApKSB7CiAg
ICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKQpAQCAtMTQ1NSw3ICsxNDQzLDcg
QEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgdW5z
aWduZWQgb3B0aW9ucyA9IDA7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9
IGxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBpZiAoaXNPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAg
ICsrb3B0aW9uczsKQEAgLTE0NjYsNyArMTQ1NCw3IEBAIHVuc2lnbmVkIEhUTUxTZWxlY3RFbGVt
ZW50OjpsZW5ndGgoKSBjb25zdAogCiBIVE1MU2VsZWN0RWxlbWVudCogdG9TZWxlY3RFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAm
JiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKSkKKyAgICBpZiAoZWxl
bWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oZWxlbWVudCk7
CiAgICAgLy8gRklYTUU6IHRvRm9vQ2xhc3MoKSBmdW5jdGlvbiBzaG91bGQgbm90IHJldHVybiAw
LgogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmlu
ZGV4IDdkNDM3OWY2NzJhYWNlZGMzOTQyY2EzZjY2NTgxM2Q3OTQ1MDdjZTIuLmY5ZGU0MzE5YTMz
OWI5MDFjNzU0OTJiZTE2MzU1OGQzZjA2OGM0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVj
YWxjTGlzdEl0ZW1zKCk7CiAgICAgdm9pZCByZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpOwogCi0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CisgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2
b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRUb0FueUVsZW1lbnQpOwogICAgIHZvaWQgYWNj
ZXNzS2V5U2V0U2VsZWN0ZWRJbmRleChpbnQpOwpAQCAtMTQzLDcgKzE0Myw2IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24oKSBjb25zdDsKIAotICAgIHZv
aWQgY2hlY2tMaXN0SXRlbXMoKSBjb25zdDsKICAgICB2b2lkIHJlY2FsY0xpc3RJdGVtc0ludGVy
bmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKTsKICAgICB2b2lkIHNldFNlbGVj
dGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QgPSB0cnVlLCBi
b29sIGZpcmVPbkNoYW5nZU5vdyA9IGZhbHNlLCBib29sIHVzZXJEcml2ZW5DaGFuZ2UgPSB0cnVl
KTsKICAgICB2b2lkIGRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihFbGVtZW50KiBleGNs
dWRlRWxlbWVudCA9IDApOwpAQCAtMTYwLDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNr
aXBCYWNrd2FyZHMgPSAtMSwKICAgICAgICAgU2tpcEZvcndhcmRzID0gMQogICAgIH07Ci0gICAg
c3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRl
bXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24sIGludCBza2lwKTsKKyAgICBzdGF0aWMg
aW50IG5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMs
IGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24sIGludCBza2lwKTsKICAgICBpbnQgbmV4dFNl
bGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0OwogICAgIGludCBwcmV2aW91
c1NlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0OwogICAgIGludCBmaXJz
dFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdDsKQEAgLTE2OCw3ICsxNjcsOCBAQCBwcml2YXRl
OgogICAgIGludCBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4
LCBTa2lwRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIENvbGxlY3Rpb25DYWNoZSBtX2NvbGxlY3Rp
b25JbmZvOwotICAgIFZlY3RvcjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CisgICAgLy8gbV9saXN0
SXRlbXMgY29udGFpbnMgSFRNTE9wdGlvbkVsZW1lbnQsIEhUTUxPcHRHcm91cEVsZW1lbnQsIG9y
IEhUTUxIUkVsZW1lbnQuCisgICAgVmVjdG9yPEhUTUxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CiAg
ICAgVmVjdG9yPGJvb2w+IG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uOwogICAgIFZlY3Rvcjxib29s
PiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uOwogICAgIERPTVRpbWVTdGFtcCBtX2xh
c3RDaGFyVGltZTsKQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2Vy
RHJpdmVuQ2hhbmdlOwogICAgIGJvb2wgbV9tdWx0aXBsZTsKICAgICBib29sIG1fYWN0aXZlU2Vs
ZWN0aW9uU3RhdGU7Ci0gICAgYm9vbCBtX3JlY2FsY0xpc3RJdGVtczsKKyAgICBib29sIG1fc2hv
dWxkUmVjYWxjTGlzdEl0ZW1zOwogfTsKIAogSFRNTFNlbGVjdEVsZW1lbnQqIHRvU2VsZWN0RWxl
bWVudChFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKaW5kZXggMTI2MDVlMjg3NmYxYWFiN2YzYmExYzY3YzIzNWRjNWRlYTMxNDBhOC4uOTU0NWM2
Y2E0NGM4ZmFmOThmNTA1MzNmMDFkM2UzMmI1NWFlNzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVy
IGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgaWYgKG1fb3B0aW9uc0NoYW5nZWQpIHsK
LSAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSB0b1NlbGVjdEVsZW1lbnQo
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpLT5saXN0SXRlbXMoKTsKICAgICAgICAgaW50
IHNpemUgPSBudW1JdGVtcygpOwogICAgICAgICAKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwpA
QCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pCiAKICAgICAvLyBObyBz
ZWxlY3RlZCBpdGVtcywgZmluZCB0aGUgZmlyc3Qgbm9uLWRpc2FibGVkIGl0ZW0uCiAgICAgaW50
IHNpemUgPSBudW1JdGVtcygpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRv
T3B0aW9uRWxlbWVudChsaXN0SXRlbXNbaV0pOwogICAgICAgICBpZiAob3B0aW9uRWxlbWVudCAm
JiAhb3B0aW9uRWxlbWVudC0+ZGlzYWJsZWQoKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQg
UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hl
UHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxl
Y3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0
IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKICAgICBPcHRpb25F
bGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGVsZW1lbnQpOwogCkBAIC00
MjMsNyArNDIzLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIHZvaWQgUmVuZGVyTGlzdEJv
eDo6cGFpbnRJdGVtQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBpbnQgbGlzdEluZGV4KQogewogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlz
dEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0
SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1l
bnQoZWxlbWVudCk7CiAKQEAgLTY4MCw3ICs2ODAsNyBAQCBib29sIFJlbmRlckxpc3RCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZQogewogICAgIGlmICghUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwg
cG9pbnRJbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGhpdFRlc3RBY3Rpb24pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0
ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRvU2Vs
ZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVtcygpOwog
ICAgIGludCBzaXplID0gbnVtSXRlbXMoKTsKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0
aW9uID0gYWNjdW11bGF0ZWRPZmZzZXQgKyBsb2NhdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA1N2EzYWQyNDg0NWZlNDkyZWYwYjMz
ODdhYTljYmQzOWQ3NGJmNTllLi4zZjM1NmE2OGVjMGNkOWNjYzRlZjFmZjkxZDE5M2RkYzZiNmJl
NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogdm9pZCBSZW5kZXJNZW51
TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKIHsKICAgICBmbG9hdCBtYXhPcHRpb25XaWR0aCA9
IDA7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdG9TZWxlY3RFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKS0+bGlzdEl0ZW1zKCk7CisgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHRvU2VsZWN0RWxlbWVudChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSktPmxpc3RJdGVtcygpOwogICAgIGludCBzaXplID0g
bGlzdEl0ZW1zLnNpemUoKTsgICAgCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXI7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFJlbmRlck1lbnVM
aXN0Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB2b2lkIFJlbmRlck1lbnVMaXN0OjpzZXRUZXh0RnJv
bU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVj
dCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsK
KyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0
SXRlbXMoKTsKICAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7CiAKICAgICBpbnQgaSA9
IHNlbGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgob3B0aW9uSW5kZXgpOwpAQCAtMzczLDcgKzM3Myw3
IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9u
SW5kZXgpCiBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRl
eCkgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3Rv
cjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlm
IChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCkBAIC00MDIsNyArNDAyLDcgQEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtQWNjZXNz
aWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIC8vIEFsbG93IHRo
ZSBhY2Nlc3NpYmxlIG5hbWUgYmUgY2hhbmdlZCBpZiBuZWNlc3NhcnkuCiAgICAgSFRNTFNlbGVj
dEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0
LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtNDEyLDcgKzQxMiw3IEBAIFN0
cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbUFjY2Vzc2liaWxpdHlUZXh0KHVuc2lnbmVkIGxpc3RJ
bmRleCkgY29uc3QKIFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRvb2xUaXAodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdAogewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1Nl
bGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7
CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwpA
QCAtNDIyLDcgKzQyMiw3IEBAIFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRvb2xUaXAodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxl
ZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMo
KTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5s
aXN0SXRlbXMoKTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJ
bmRleF07CkBAIC00NDMsNyArNDQzLDcgQEAgYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5h
YmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51
TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAgICBIVE1MU2Vs
ZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxl
Y3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRl
bXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1z
LnNpemUoKSkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgbWFraW5nIGFuIG91dCBvZiBib3VuZHMg
YWNjZXNzLCB0aGVuIHdlIHdhbnQgdG8gdXNlIHRoZSBzdHlsZQogICAgICAgICAvLyBvZiBhIGRp
ZmZlcmVudCBvcHRpb24gZWxlbWVudCAoaW5kZXggMCkuIEhvd2V2ZXIsIGlmIHRoZXJlIGlzbid0
IGFuIG9wdGlvbiBlbGVtZW50CkBAIC00NjMsNyArNDYzLDcgQEAgUG9wdXBNZW51U3R5bGUgUmVu
ZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBDb2xvciBS
ZW5kZXJNZW51TGlzdDo6aXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0CiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRN
TEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAobGlz
dEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0Ojpwb3B1cERpZEhpZGUoKQogYm9vbCBSZW5kZXJNZW51TGlzdDo6
aXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKICAgICBIVE1MU2Vs
ZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxl
Y3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRl
bXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1z
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBs
aXN0SXRlbXNbbGlzdEluZGV4XTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBib29sIFJlbmRlck1lbnVM
aXN0OjppdGVtSXNTZXBhcmF0b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5k
ZXJNZW51TGlzdDo6aXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAg
IEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUoKSkpOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBs
aXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIGJvb2wgUmVu
ZGVyTWVudUxpc3Q6Oml0ZW1Jc0xhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIGJvb2wg
UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc1NlbGVjdGVkKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QK
IHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBs
aXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxl
bWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5k
ZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYmFjNTUwOGIyZGYzZjI2ZTIyMmE3ODlmZDM3MjgzNTBlMGM4NTY3YS4uNzhlZjAw
M2JlNTRjYWM0YTM4MWU0NmYxOWZkZjNmYmIzYTc0YjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMC0xNCAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cCBvZiBIVE1MU2VsZWN0RWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDaGFuZ2UgdGhlIEhUTUxT
ZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSByZXR1cm4gdHlwZToKKyAgICAgICAgICBWZWN0b3I8
RWxlbWVudCo+IC0+IFZlY3RvcjxIVE1MRWxlbWVudCo+CisKKyAgICAgICAgKiBzcmMvV2ViU2Vh
cmNoYWJsZUZvcm1EYXRhLmNwcDoKKyAgICAgICAgKEhUTUxOYW1lczo6SXNTZWxlY3RJbkRlZmF1
bHRTdGF0ZSk6CisgICAgICAgICogc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMpOgorCiAyMDExLTEwLTEyICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyBQYXJzZWQg
QWNjZXB0IEF0dHJpYnV0ZSBNSU1FIFR5cGVzIHRvIFdlYktpdCBDbGllbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAppbmRl
eCBlMzQxYzYwOWQ3YTNlZWUzZTlkZDA0ZjM1NGIwMzQwMDU0OWZiMWQ1Li4xYjhhNzI3ZjZjNTM4
Nzk5NWQ4YWE0ZDNiYTk1ODA0OGJlMmFjNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKQEAgLTEwMSw5ICsxMDEsOSBA
QCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBHZXRCdXR0b25Ub0FjdGl2YXRlKEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKIC8vIHNlbGVjdGVkIHN0YXRlLgogYm9vbCBJc1NlbGVjdEluRGVmYXVsdFN0
YXRlKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKKyAgICBjb25zdCBWZWN0b3I8
SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0LT5saXN0SXRlbXMoKTsKICAgICBpZiAo
c2VsZWN0LT5tdWx0aXBsZSgpIHx8IHNlbGVjdC0+c2l6ZSgpID4gMSkgewotICAgICAgICBmb3Ig
KFZlY3RvcjxFbGVtZW50Kj46OmNvbnN0X2l0ZXJhdG9yIGkobGlzdEl0ZW1zLmJlZ2luKCkpOyBp
ICE9IGxpc3RJdGVtcy5lbmQoKTsgKytpKSB7CisgICAgICAgIGZvciAoVmVjdG9yPEhUTUxFbGVt
ZW50Kj46OmNvbnN0X2l0ZXJhdG9yIGkobGlzdEl0ZW1zLmJlZ2luKCkpOyBpICE9IGxpc3RJdGVt
cy5lbmQoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoISgqaSktPmhhc0xvY2FsTmFtZShIVE1M
TmFtZXM6Om9wdGlvblRhZykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxPcHRp
b25FbGVtZW50Kj4oKmkpOwpAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgSXNTZWxlY3RJbkRlZmF1
bHRTdGF0ZShIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0KQogICAgIC8vIFRoZSBzZWxlY3QgaXMg
cmVuZGVyZWQgYXMgYSBjb21ib2JveCAoY2FsbGVkIG1lbnVsaXN0IGluIFdlYktpdCkuIEF0CiAg
ICAgLy8gbGVhc3Qgb25lIGl0ZW0gaXMgc2VsZWN0ZWQsIGRldGVybWluZSB3aGljaCBvbmUuCiAg
ICAgSFRNTE9wdGlvbkVsZW1lbnQqIGluaXRpYWxTZWxlY3RlZCA9IDA7Ci0gICAgZm9yIChWZWN0
b3I8RWxlbWVudCo+Ojpjb25zdF9pdGVyYXRvciBpKGxpc3RJdGVtcy5iZWdpbigpKTsgaSAhPSBs
aXN0SXRlbXMuZW5kKCk7ICsraSkgeworICAgIGZvciAoVmVjdG9yPEhUTUxFbGVtZW50Kj46OmNv
bnN0X2l0ZXJhdG9yIGkobGlzdEl0ZW1zLmJlZ2luKCkpOyBpICE9IGxpc3RJdGVtcy5lbmQoKTsg
KytpKSB7CiAgICAgICAgIGlmICghKCppKS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6b3B0aW9u
VGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCog
b3B0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oKmkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAppbmRleCA3
YWFjNDRhMDQzNTRmYzdhNTAxZmQyMzY1NTE3ZGUzYTA5YjZiMWFlLi4zNzNlYzA1ZjQ3YWRiMGFm
NTAxYzg1MmNkMGExYTAwYTQ0YTAwMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcApAQCAtNTMsMTAgKzUzLDEwIEBAIFdlYlN0cmluZyBX
ZWJTZWxlY3RFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAKIFdlYlZlY3RvcjxXZWJFbGVtZW50PiBX
ZWJTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIHNvdXJjZUl0ZW1zID0gY29uc3RVbndyYXA8SFRNTFNlbGVjdEVsZW1lbnQ+KCkt
Pmxpc3RJdGVtcygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBzb3VyY2VJdGVt
cyA9IGNvbnN0VW53cmFwPEhUTUxTZWxlY3RFbGVtZW50PigpLT5saXN0SXRlbXMoKTsKICAgICBX
ZWJWZWN0b3I8V2ViRWxlbWVudD4gaXRlbXMoc291cmNlSXRlbXMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZUl0ZW1zLnNpemUoKTsgKytpKQotICAgICAgICBpdGVt
c1tpXSA9IFdlYkVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihzb3VyY2VJdGVtc1tp
XSkpOworICAgICAgICBpdGVtc1tpXSA9IFdlYkVsZW1lbnQoc291cmNlSXRlbXNbaV0pOwogCiAg
ICAgcmV0dXJuIGl0ZW1zOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>