<?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>174301</bug_id>
          
          <creation_ts>2017-07-09 14:35:03 -0700</creation_ts>
          <short_desc>Further WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore clean up</short_desc>
          <delta_ts>2017-07-10 10:09:43 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326891</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 14:35:03 -0700</bug_when>
    <thetext>Further WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326894</commentid>
    <comment_count>1</comment_count>
      <attachid>314953</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 14:40:35 -0700</bug_when>
    <thetext>Created attachment 314953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326895</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-09 14:42:36 -0700</bug_when>
    <thetext>Attachment 314953 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326896</commentid>
    <comment_count>3</comment_count>
      <attachid>314954</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 14:43:53 -0700</bug_when>
    <thetext>Created attachment 314954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326898</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-09 14:45:40 -0700</bug_when>
    <thetext>Attachment 314954 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326900</commentid>
    <comment_count>5</comment_count>
      <attachid>314955</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 15:00:46 -0700</bug_when>
    <thetext>Created attachment 314955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326902</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-09 15:02:44 -0700</bug_when>
    <thetext>Attachment 314955 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327013</commentid>
    <comment_count>7</comment_count>
      <attachid>314983</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 08:45:22 -0700</bug_when>
    <thetext>Created attachment 314983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327014</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-10 08:46:43 -0700</bug_when>
    <thetext>Attachment 314983 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327026</commentid>
    <comment_count>9</comment_count>
      <attachid>314983</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-10 09:11:32 -0700</bug_when>
    <thetext>Comment on attachment 314983
Patch

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

r=me, with some minor comments.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:173
&gt; +            return WTFMove(statistic);

Very nice!

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:-322
&gt; -}

I wish the code review tool represented moved code better. It looks like this was lifted to the WK2 layer.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:-156
&gt; -    // Switch to the main thread to get the default website data store

Is this not true anymore? I can&apos;t remember if your other changes ensured that we always were interacting with the right website data store. If you did, then is it really necessary to move to the main runloop?

If your changes did not tie us to the main data store, I think this comment is still useful.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:291
&gt; +    // FIXME: Decide what to call this file.

I don&apos;t think we&apos;re going to change the name at this point. Let&apos;s just remove this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327027</commentid>
    <comment_count>10</comment_count>
      <attachid>314983</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 09:15:27 -0700</bug_when>
    <thetext>Comment on attachment 314983
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:-322
&gt;&gt; -}
&gt; 
&gt; I wish the code review tool represented moved code better. It looks like this was lifted to the WK2 layer.

It was already in WebKit2, I merely moved it to our Telemetry file / namespace.

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:-156
&gt;&gt; -    // Switch to the main thread to get the default website data store
&gt; 
&gt; Is this not true anymore? I can&apos;t remember if your other changes ensured that we always were interacting with the right website data store. If you did, then is it really necessary to move to the main runloop?
&gt; 
&gt; If your changes did not tie us to the main data store, I think this comment is still useful.

This comment is not a &quot;why&quot; comment IMHO. It basically states what the code does which is already obvious by reading the code. AFAIK, we do not have such comments in WebKit, which is why I dropped it.

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:291
&gt;&gt; +    // FIXME: Decide what to call this file.
&gt; 
&gt; I don&apos;t think we&apos;re going to change the name at this point. Let&apos;s just remove this comment.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327030</commentid>
    <comment_count>11</comment_count>
      <attachid>314987</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 09:17:47 -0700</bug_when>
    <thetext>Created attachment 314987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327041</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-10 09:25:56 -0700</bug_when>
    <thetext>Attachment 314987 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327053</commentid>
    <comment_count>13</comment_count>
      <attachid>314987</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-10 10:09:42 -0700</bug_when>
    <thetext>Comment on attachment 314987
Patch

Clearing flags on attachment: 314987

Committed r219297: &lt;http://trac.webkit.org/changeset/219297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327054</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-10 10:09:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314953</attachid>
            <date>2017-07-09 14:40:35 -0700</date>
            <delta_ts>2017-07-09 14:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174301-20170709144034.patch</filename>
            <type>text/plain</type>
            <size>72924</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkxMWQ4Njc2YzY1ZDgy
Y2RmYjkxN2Q0YjY2NWI2MzU2NzgwNmI0My4uY2RjOWEzZDdiN2M5OGU2NTVkOGNiZjYzYzUxOWNh
ODI0NmIzMmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4g
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVk
IHNvbWUgZ2VuZXJpYyBmaWxlIHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucyBkb3duIHRvIHBsYXRm
b3JtJ3MgRmlsZVN5c3RlbS5oLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuQW5kTG9ja0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisK
IDIwMTctMDctMDggIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDdXJsXSBTYWZlIGFjY2VzcyBhbmQgbGlmZSBjeWNsZSBtYW5hZ2VtZW50IG9mIGJh
cmUgQ3VybCBoYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZjIwNmU3YTkzNjcwOTcyZTg0OTQ3YzJhZWY3
ZTA5MTk2ODQ4ODRlLi4zZThiNjQ5NWY2ZGRlZWU5NTQyYWVkNmFmNTc3ODMyOWE4OGI4YWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTctMDctMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSAvIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1cAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MzAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhbCBjbGVhbiB1cCBh
bmQgdmFyaW91cyBzaW1wbGlmaWNhdGlvbnMgLyBvcHRpbWl6YXRpb25zIHRvIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBhbmQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIGNsYXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXM6Zm9ySG9zdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZUVuY29kZXJGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cG9wdWxhdGVGcm9tRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVE
YXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWZyZXNoRnJv
bURpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVP
cldyaXRlU3RvcmVUb0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3Jh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBs
YXRmb3JtRXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
clRvcFByaXZhdGVseU93bmVkRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE3LTA3LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ1YzQyMzE4ZmQzNTJmNmYzNzIz
MmZkYzg3ZGQ4YjhjYWQxMGI0Y2YuLjJjYWZjYTBiMzI0MzI1ODQzYjBkMWZjZGU2YzVjYjE3Yjk5
OTZmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0zMjcsNCAr
MzI3LDI3IEBAIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQogI2VuZGlmCiB9CiAKK1BsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sK
KyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG1vZGUpOworICAgIGlmIChoYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgbG9ja2VkID0g
bG9ja0ZpbGUoaGFuZGxlLCBXZWJDb3JlOjpMb2NrRXhjbHVzaXZlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwor
dm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNp
ZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7
CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xv
c2VGaWxlKGhhbmRsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCA3Yjg5ZGM1MmMyYTUyMjU2M2Q2ZGZmZjdjNTZlZWFk
ZmYwNThjN2FkLi5kZTkzMGViOWI3ZGY1ZTg1ZTYyNWIyYWM2NjU0OGM0ZWRlMzY0NDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xMzUsNiArMTM1LDkgQEAgV0VCQ09S
RV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdy
aXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogV0VCQ09SRV9FWFBPUlQgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwog
CitXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0
IFN0cmluZyYsIEZpbGVPcGVuTW9kZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHVubG9ja0FuZENs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworCiAvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBv
ZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxl
LgogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYg
aXQgd2FzIG5vdC4KIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDhh
YTVlNTkxZWEzMjk5MGQ4MDgyNTQzOTA0ODczNGYwOWQzODgwOTcuLjRiYTA3NGE5ZmFmNjRjYmI4
Y2Y1MWYxMjljMDRmNTAyMjQzM2MxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zNTQsMjUgKzM1
NCwyNSBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcwogICAgIHN0b3JlLT5wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
KCk7CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmcKIHsKICAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICgh
c3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoKTsKKyAgICBzdG9yZS0+dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7
CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXJGb3JPbmVEb21haW46KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBhdXRv
KiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7CisgICAgICAgIHN0b3JlLT51cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyBob3N0IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJG
aXJzdDo6Tm8pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcih7IGhvc3QgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIHN0b3JlLT51cGRh
dGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgaG9zdCB9LCB7IH0sIFdlYktpdDo6U2hv
dWxkQ2xlYXJGaXJzdDo6Tm8pOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3VibWl0VGVsZW1ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGM2N2VhNWRk
YWI3YjgyZTI0MDg4NzJmMGJiMDA1ODFlYTNmODRjMGIuLjYyOTk1NzZjZWRlODYwOGIxMDE3MDU4
NWY1Njc3ZjZjZjg3MzcyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC01OCw4
ICs1OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOihkb3VibGUpc2Vjb25kcyBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNv
bmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7Ci0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihO
U1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggZDAwM2M2MjgxZWFhOGQ1NDAyYWEzNWI5Y2EyMmUwMGFkYmU1
NTA1Ni4uYjE1YTcwODY3NzI0ZjY0ZjBmMGI0NjU0ZmQ3NDE1ZjQzYzQ0NDZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAKKyNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtMzUsMTMgKzM2LDE3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY29uc3QgdW5zaWduZWQgbWlu
aW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9IDM7CiBjb25zdCB1bnNpZ25lZCBv
cGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMwIH07CiBjb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9k
ZWxWZXJzaW9uIHsgNiB9OwogCi1SZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCitSZWY8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnNIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnNIYW5kbGVyKSkpOworfQorCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKQorICAg
IDogbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihXVEZNb3ZlKHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwogfQogCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJp
bmcmIHByaW1hcnlEb21haW4pIGNvbnN0CkBAIC02Myw2ICs2OCwxNSBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNHcmFuZEZhdGhlcmVkKGNvbnN0IFN0cmluZyYgcHJpbWFy
eURvbWFpbikgYwogCiAgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5ncmFuZGZhdGhlcmVkOwog
fQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICBhdXRvIG1hcEVu
dHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChwcmltYXJ5RG9tYWluKTsKKyAgICBp
ZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJh
Y3Rpb24obWFwRW50cnktPnZhbHVlKTsKK30KICAgICAKIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCiB7CkBAIC03Miw4ICs4
Niw2IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6S2V5
VmFsdWVQYWlyVHlwZSBTdGF0aXN0aWNzVmFsdWU7Ci0KIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVu
Y29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRh
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTgxLDcgKzkz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEKICAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIo
InZlcnNpb24iLCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uKTsKICAgICBlbmNvZGVyLT5lbmNvZGVE
b3VibGUoImVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAiLCBtX2VuZE9mR3JhbmRmYXRoZXJp
bmdUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKICAgICAKLSAgICBlbmNv
ZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW10oS2V5ZWRF
bmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3RpY3NWYWx1ZSYgb3JpZ2luKSB7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFtd
KEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBhdXRvJiBvcmlnaW4pIHsKICAgICAg
ICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwogCkBAIC05Miw3
ICsxMDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YQogICAgIHJldHVybiBlbmNvZGVyOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rl
cihLZXllZERlY29kZXImIGRlY29kZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cG9wdWxhdGVGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5pc0VtcHR5KCkpCkBAIC0xNDEsNyArMTUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgdHJ1ZSk7CisgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
RG9tYWlucyh7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKQEAgLTE1MCwzOSArMTYyLDMyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKICAgICBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5jbGVhcigpOwogICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKIAot
ICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgfSwgdHJ1ZSk7Cisg
ICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsgfSwgU2hvdWxkQ2xl
YXJGaXJzdDo6WWVzKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1l
cmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNz
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGZvciAoYXV0byYgc3Rh
dGlzdGljIDogc3RhdGlzdGljcykgewotICAgICAgICAvLyBGSVhNRTogSW4gdGhlIGNhc2Ugd2hl
cmUgdGhlIHN0YXRpc3RpY3MgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgaXQgc2VlbXMgaW5lZmZp
Y2llbnQgdG8gY3JlYXRlCi0gICAgICAgIC8vIGFuIGVtcHR5IG9uZSBqdXN0IHRvIG1lcmdlIHRo
ZSBuZXcgb25lIGludG8gaXQuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIFsmc3RhdGlzdGljXSB7
Ci0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzdGF0aXN0aWMuaGln
aExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRpc3RpYyk7CiAg
ICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJn
ZShzdGF0aXN0aWMpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShzdGF0aXN0aWMpOwogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVh
ckZpcnN0KT4mJiBoYW5kbGVyKQotewotICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKLX0KLQogaW5saW5lIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgKCFzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9u
IHx8IFdhbGxUaW1lOjpub3coKSA+IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSArIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRp
b25pbmcoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVmVjdG9y
PFN0cmluZz4gZG9tYWluc1RvUmVtb3ZlOwogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Fk
ZDsKLSAgICAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb24gPSBz
aG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgaWYgKHJl
c291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nICYmICFzaG91bGRQ
YXJ0aXRpb24pIHsKQEAgLTE5OCwyMyArMjAzLDIxIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8
VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENy
b3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpXSAoKSB7
Ci0gICAgICAgIGlmIChtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikK
LSAgICAgICAgICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBmYWxzZSk7CisgICAgICAgIG1fdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5z
VG9BZGQsIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKGRvbWFpbnNUb1JlbW92ZS5pc0VtcHR5KCkg
JiYgZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgY2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0
b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKLSAg
ICAgICAgaWYgKG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQotICAg
ICAgICAgICAgbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWlu
c1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3QpOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3Ry
aW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRD
b3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKKyAgICAgICAg
bV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihkb21haW5zVG9SZW1v
dmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSk7CiAgICAgCi0gICAg
aWYgKGNsZWFyRmlyc3QpIHsKKyAgICBpZiAoc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVh
ckZpcnN0OjpZZXMpIHsKICAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgcmVzb3VyY2VTdGF0
aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKICAgICB9IGVsc2Ug
ewpAQCAtMjUxLDcgKzI1NCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFJlcwogICAgICAgICBw
cm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMpOwogfQogCi1ib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYgcHJvY2Vzc0Z1bmN0aW9uKSBjb25z
dAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAg
ICAgcHJvY2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsKK30KKworYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlv
bihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKIHsKICAg
ICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjgxLDcgKzI5MSw3IEBAIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXM7CiAgICAgZm9yIChhdXRvJiBz
dGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihzdGF0aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAh
c3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpKQorICAgICAgICBpZiAoc3RhdGlzdGljLmlzUHJldmFs
ZW50UmVzb3VyY2UgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0
aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAhc3RhdGlzdGljLmdy
YW5kZmF0aGVyZWQpKQogICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChzdGF0
aXN0aWMuaGlnaExldmVsRG9tYWluKTsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZh
dGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkKQEAgLTI5MCwzNiArMzAwLDYgQEAg
VmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1RvUmVtb3YKIAogICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZXM7
CiB9Ci0gICAgCi1WZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoKSBjb25z
dAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFZlY3RvcjxQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOwotICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDog
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aXN0
aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxU
aW1lOjpub3coKSAtIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAy
NF9oKTsKLSAgICAgICAgc29ydGVkLmFwcGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7
Ci0gICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkLAotICAgICAgICAgICAg
c3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvLnNpemUoKQotICAgICAgICB9KTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KHNvcnRlZC5zaXplKCkgPCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5KQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgc3RkOjpzb3J0KHNvcnRlZC5iZWdpbigpLCBzb3J0
ZWQuZW5kKCksIFtdKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiBhLCBjb25zdCBQ
cmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYikgewotICAgICAgICByZXR1cm4gYS5zdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
ICsgYS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID4KLSAgICAgICAgYi5zdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsg
Yi5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAgIH0pOwotICAgIAotICAgIHJldHVy
biBzb3J0ZWQ7Ci19CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVT
dGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcHJl
dmFsZW50UmVzb3VyY2VEb21haW5zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCA1ODQ2MDcyNWY1MzcwMmFiOTY1Y2Q3OGVkOGJmMTk4ZDBjZjlkNDA0Li4xYjFlMjAyYmE0NjAw
ZmY3OWZlNTRjZTY0MzM0NjBhYTZiNWY0M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtNDEsMjIgKzQxLDE2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5IHsK
LSAgICB1bnNpZ25lZCBudW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkOwotICAgIGJvb2wg
aGFzSGFkVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbjsKLSAgICB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwotICAgIHVu
c2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAgdW5zaWduZWQgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLX07CitlbnVtIGNsYXNzIFNob3VsZENsZWFyRmly
c3Q7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgY29uc2lkZXIgbWVyZ2luZyB0aGlz
IHdpdGggV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgogY2xhc3MgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoKTsKKyAgICB1c2luZyBVcGRhdGVDb29raWVQYXJ0aXRp
b25pbmdGb3JEb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBTaG91bGRDbGVhckZpcnN0KT47CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IGNyZWF0ZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFu
ZGxlciYmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNy
ZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0OwotICAgIHZvaWQgcmVhZERhdGFGcm9tRGVjb2Rl
cihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKKyAgICB2b2lkIHBvcHVsYXRlRnJvbURlY29kZXIo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKQEAgLTY1LDM4ICs1OSwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc0dyYW5kRmF0
aGVyZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3Mo
VmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogCi0gICAgdm9pZCBz
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk+JiYpOwotCiAgICAgdm9pZCBzZXRUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIHZvaWQgc2V0
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAKLSAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk7CiAKICAgICB2b2lk
IHByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpOworICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3MoY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik+JikgY29uc3Q7CiAKLSAgICBib29sIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCk7
Ci0gICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU3RhdGlzdGljc0ZvclJl
bW92ZWREYXRhUmVjb3Jkcyhjb25zdCBIYXNoU2V0PFN0cmluZz4mIHByZXZhbGVudFJlc291cmNl
RG9tYWlucyk7CiAKICAgICB2b2lkIGhhbmRsZUZyZXNoU3RhcnRXaXRoRW1wdHlPck5vU3RvcmUo
SGFzaFNldDxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0dyYW5kZmF0
aGVyKTsKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShVcGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsKIAogICAgIGJvb2wgc2hvdWxkUGFydGl0
aW9uQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7
CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJikgY29uc3Q7CisgICAgYm9vbCBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwogCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIERlcXVlPFdURjo6V2FsbFRpbWU+IG1fb3BlcmF0aW5n
RGF0ZXM7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wgY2xlYXJGaXJzdCk+IG1fc2hvdWxkUGFydGl0aW9u
Q29va2llc0ZvckRvbWFpbnNIYW5kbGVyOworICAgIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyIG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRs
ZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbjsKICAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgeyAyNF9o
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhM2ZlNDA2OTZiZDI5OWZmZTliYjIyYTFl
ODBmMzA4M2Q5ODVhZTAuLjZjYzllOTQ3MTA1ZmYzMTAzNDdlZWExMmYxZTkzMTQ3OTA1ODM3YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRj
aE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC00NCwyNSArNDUsMTcgQEAKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmluZSBFTkFCTEVfTVVMVElQUk9DRVNT
X0FDQ0VTU19UT19TVEFUSVNUSUNTX1NUT1JFIDEKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0ZXhwciBTZWNvbmRzIG1pbmlt
dW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgeyA1X21pbiB9OworCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVl
KQogewogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZh
bHVlKTsKIH0KIAotY29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJ
bnRlcnZhbCB7IDVfbWluIH07Ci0KLXN0YXRpYyBib29sIG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQgPSBmYWxzZTsKLXN0YXRpYyBib29sIHNob3VsZENsYXNzaWZ5UmVzb3Vy
Y2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdHJ1ZTsKLXN0YXRpYyBhdXRvIHNob3VsZFN1
Ym1pdFRlbGVtZXRyeSA9IHRydWU7Ci0KIHN0YXRpYyBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxXZWJzaXRlRGF0YVR5cGU+KHsKQEAgLTg3LDEyICs4MCwxMSBAQCBzdGF0aWMgY29uc3Qg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIGRhdGFUeXBlc1RvUmVtb3ZlKCkKICAgICByZXR1
cm4gZGF0YVR5cGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciYm
IHVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikKLSAgICA6IG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCisgICAgOiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkpCiAgICAgLCBtX3N0YXRp
c3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVl
dWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3N0YXRpc3RpY3NTdG9yYWdlUGF0aChyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQotICAgICwgbV90ZWxlbWV0cnlPbmVTaG90VGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
dWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSkKLSAgICAsIG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnBlcmZvcm1EYWlseVRhc2tzKQorICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlU
YXNrcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMDAsMzkgKzky
LDIxIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzCiAgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJ
Zk5lZWRlZCgpOwogI2VuZGlmCiAKLSAgICBpZiAodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5z
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soW3VwZGF0ZVBhcnRpdGlvbkNvb2tpZXNG
b3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFp
bnNIYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkgewot
ICAgICAgICAgICAgdXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKGRvbWFp
bnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICAgICAgfSk7
Ci0gICAgfQotCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgcmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKCk7CiAgICAgICAgIHN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CiAgICAg
fSk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX3Nob3VsZFN1Ym1p
dFRlbGVtZXRyeSkKKyAgICAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7CisgICAgfSk7CiAKLSAgICBtX3Rl
bGVtZXRyeU9uZVNob3RUaW1lci5zdGFydE9uZVNob3QoNV9zKTsKLSAgICBtX3RlbGVtZXRyeVJl
cGVhdGVkVGltZXIuc3RhcnRSZXBlYXRpbmcoMjRfaCk7CisgICAgbV9kYWlseVRhc2tzVGltZXIu
c3RhcnRSZXBlYXRpbmcoMjRfaCk7CiB9CiAKIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiB7CiB9Ci0KLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKGJvb2wgYWx3YXlzKQotewotICAgIG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQgPSBhbHdheXM7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChib29sIHZhbHVlKQotewotICAgIHNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsID0gdmFsdWU7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSkKLXsKLSAgICBzaG91
bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsKLX0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjbGFzc2lmeVJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHJlc291cmNlU3RhdGlzdGljKQogewpAQCAtMTUxLDE1ICsxMjUsMTMgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKICAgICBpZiAocHJl
dmFsZW50UmVzb3VyY2VEb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CisgICAgc2V0RGF0YVJlY29yZHNCZWluZ1Jl
bW92ZWQodHJ1ZSk7CiAKLSAgICAvLyBTd2l0Y2ggdG8gdGhlIG1haW4gdGhyZWFkIHRvIGdldCB0
aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3RvcmUKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxT
dHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCB0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1RvUmVtb3ZlKCksIFdURk1vdmUocHJldmFs
ZW50UmVzb3VyY2VEb21haW5zKSwgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIC8vIEJ1dCBhbHdheXMgdG91Y2ggdGhlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mgc3RvcmUgb24gdGhlIHdvcmtlciBxdWV1ZS4KKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJz
aXN0ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92ZSgpLCBXVEZNb3ZlKHByZXZhbGVudFJl
c291cmNlRG9tYWlucyksIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVh
ZENvcGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVE
YXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlU3Rh
dGlzdGljc0ZvclJlbW92ZWREYXRhUmVjb3Jkcyh0b3BEb21haW5zKTsKLSAgICAgICAgICAgICAg
ICBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgICAgICAgICAgICAgc2V0RGF0YVJlY29y
ZHNCZWluZ1JlbW92ZWQoZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAg
IH0pOwpAQCAtMTY4LDE0ICsxNDAsMTQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKIHsKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKCkgewotICAgICAgICBpZiAoc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZv
cmVEYXRhUmVjb3Jkc1JlbW92YWwpIHsKICAgICAgICAgICAgIGNvcmVTdG9yZSgpLnByb2Nlc3NT
dGF0aXN0aWNzKFt0aGlzXSAoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0
aWMpIHsKICAgICAgICAgICAgICAgICBjbGFzc2lmeVJlc291cmNlKHJlc291cmNlU3RhdGlzdGlj
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIHJlbW92ZURhdGFSZWNvcmRz
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAobm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCkgeworICAgICAgICBpZiAobV9zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10g
ewogICAgICAgICAgICAgICAgIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpOwogICAgICAgICAgICAgfSk7CkBAIC0xOTAsMjAgKzE2
MiwxOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUob3JpZ2lu
cykpOwotICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdh
dGUgdXNlcgotICAgIC8vIGludGVyYWN0aW9uIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gdGhlIG5l
dHdvcmsgcHJvY2Vzcy4KLSAgICBjb3JlU3RvcmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKKyAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8g
cHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorICAgIGNvcmVTdG9yZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygp
OwogICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSgpCiB7Ci0gICAgLy8gU3dpdGNoIHRvIHRoZSBtYWluIHRocmVhZCB0byBnZXQgdGhlIGRlZmF1
bHQgd2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYlByb2Nlc3NQcm94eTo6dG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoZGF0YVR5cGVzVG9SZW1vdmUo
KSwgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYgdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewotICAgICAg
ICAgICAgLy8gQnV0IGFsd2F5cyB0b3VjaCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdG9y
ZSBvbiB0aGUgd29ya2VyIHF1ZXVlCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BEb21haW5z
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weSh0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmNvcmVTdG9yZSgpLmhhbmRsZUZyZXNoU3RhcnRXaXRoRW1w
dHlPck5vU3RvcmUoV1RGTW92ZSh0b3BEb21haW5zKSk7CisgICAgICAgIFdlYlByb2Nlc3NQcm94
eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoZGF0YVR5cGVz
VG9SZW1vdmUoKSwgbV9zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChIYXNoU2V0
PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BEb21haW5zID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weSh0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IGNvcmVTdG9yZSgpLmhhbmRsZUZyZXNoU3RhcnRXaXRoRW1wdHlPck5vU3RvcmUoV1RGTW92ZSh0
b3BEb21haW5zKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0y
NDgsNyArMjE5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWRE
YXRhRnJvbURpc2tJZk5lZWRlZCgpCiAgICAgfQogCiAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1l
bW9yeSgpOwotICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOwor
ICAgIGNvcmVTdG9yZSgpLnBvcHVsYXRlRnJvbURlY29kZXIoKmRlY29kZXIpOwogCiAgICAgbV9s
YXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1lOwogCkBAIC0yNzgsNyArMjQ5LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzaygp
CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlU3RvcmUoKS5y
ZWFkRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKKyAgICBjb3JlU3RvcmUoKS5wb3B1bGF0ZUZy
b21EZWNvZGVyKCpkZWNvZGVyKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0g
cmVhZFRpbWU7CiB9CiAgICAgCkBAIC0yOTUsMTIgKzI2NiwxMiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmLAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9u
V2lsbFRlcm1pbmF0ZSgpCiB7CiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICAv
LyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgd29yayBpbiBvdXIgcXVldWUgaXMgZmluaXNoZWQgYmVm
b3JlIHdlIHRlcm1pbmF0ZS4KICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goWyZzZW1h
cGhvcmUsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICAv
LyBXcml0ZSBmaW5hbCBmaWxlIHN0YXRlIHRvIGRpc2suCiAgICAgICAgIGlmIChtX2RpZFNjaGVk
dWxlV3JpdGUpCiAgICAgICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiAKLSAgICAgICAgLy8g
TWFrZSBzdXJlIGFueSBvbmdvaW5nIHdvcmsgaW4gb3VyIHF1ZXVlIGlzIGZpbmlzaGVkIGJlZm9y
ZSB3ZSB0ZXJtaW5hdGUuCiAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9KTsKICAg
ICBzZW1hcGhvcmUud2FpdChXYWxsVGltZTo6aW5maW5pdHkoKSk7CkBAIC0zMTcsNyArMjg4LDcg
QEAgU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxl
UGF0aCgpIGNvbnN0CiAgICAgaWYgKHN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgLy8gVE9ETyBEZWNpZGUgd2hhdCB0
byBjYWxsIHRoaXMgZmlsZQorICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hhdCB0byBjYWxsIHRoaXMg
ZmlsZS4KICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0YXRpc3RpY3NTdG9y
YWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwogfQog
CkBAIC0zMzIsNyArMzAzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OndyaXRlU3RvcmVUb0Rpc2soKQogICAgIGF1dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0
ZUVuY29kZXJGcm9tRGF0YSgpOwogCiAgICAgU3RyaW5nIHJlc291cmNlTG9nID0gcmVzb3VyY2VM
b2dGaWxlUGF0aCgpOwotICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgcmVz
b3VyY2VMb2cpOworICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2RlciwgcmVzb3VyY2VMb2cp
OwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IFdhbGxUaW1lOjpub3coKTsK
ICAgICBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBA
IC0zNDksOCArMzIwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICBpZiAodGltZVNpbmNlTGFzdFdyaXRlIDwg
bWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCkgewogICAgICAgICBpZiAoIW1fZGlk
U2NoZWR1bGVXcml0ZSkgewogICAgICAgICAgICAgbV9kaWRTY2hlZHVsZVdyaXRlID0gdHJ1ZTsK
LSAgICAgICAgICAgIFNlY29uZHMgZGVsYXlVbnRpbCA9IG1pbmltdW1TdGF0aXN0aWNzRmlsZVdy
aXRlSW50ZXJ2YWwgLSB0aW1lU2luY2VMYXN0V3JpdGUgKyAxX3M7Ci0gICAgICAgICAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2hBZnRlcihkZWxheVVudGlsLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBTZWNvbmRzIGRlbGF5ID0gbWlu
aW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5jZUxhc3RXcml0ZSArIDFf
czsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICAgICAg
d3JpdGVTdG9yZVRvRGlzaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTM2MCwz
MSArMzMxLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxl
T3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiB9CiAKLXN0YXRp
YyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBtb2RlKTsKLSAgICBpZiAoaGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwotCi0jaWYgRU5BQkxFKE1VTFRJUFJPQ0VTU19BQ0NFU1NfVE9fU1RBVElT
VElDU19TVE9SRSkKLSAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgV2ViQ29yZTo6
TG9ja0V4Y2x1c2l2ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsb3NlQW5kVW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotI2lmIEVOQUJMRShNVUxUSVBST0NFU1NfQUNDRVNTX1RPX1NUQVRJU1RJQ1Nf
U1RPUkUpCi0gICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7Ci0jZW5kaWYKLSAgICBjbG9zZUZpbGUoaGFu
ZGxlKTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5j
b2RlclRvRGlzayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQwNCw3ICszNTAsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVyVG9EaXNr
KEtleWVkRW5jb2RlciYgZW5jb2RlciwgYwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaW50
NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwg
cmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICB1
bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTogV2Ugb25seSB3cm90ZSAlZCBvdXQgb2YgJWQgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtNDIzLDEy
ICszNjksNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlU3Rv
cmVGcm9tRGlzaygpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MsICJVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3MgZmlsZTogJXMiLCByZXNvdXJjZUxv
Z1BhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhckluTWVtb3J5RGF0YSgpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwotfQotCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3Jh
Z2UoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDQ2LDcgKzM4Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFydE1vbml0b3JpbmdT
dGF0aXN0aWNzU3RvcmFnZSgpCiAgICAgICAgICAgICByZWZyZXNoRnJvbURpc2soKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6
UmVtb3ZhbDoKLSAgICAgICAgICAgIGNsZWFySW5NZW1vcnlEYXRhKCk7CisgICAgICAgICAgICBj
b3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
YWdlTW9uaXRvciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NDcxLDEyICs0MTEsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN5
bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVkKCkKIAogICAgIHJlZnJlc2hG
cm9tRGlzaygpOwogfQotICAgIAotICAgIAorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAo
KSBjb25zdAogewotICAgIC8vIERvIG5vdGhpbmcKIH0KICNlbmRpZgogCkBAIC00ODksMjAgKzQy
NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRAogICAgIAogICAgIGxvbmcgbG9uZyBmaWxl
U2l6ZSA9IDA7CiAgICAgaWYgKCFnZXRGaWxlU2l6ZShoYW5kbGUsIGZpbGVTaXplKSkgewotICAg
ICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICAgICAgdW5sb2NrQW5kQ2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBz
aXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUs
IGJ5dGVzVG9SZWFkKSkgewotICAgICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgIHNp
emVfdCB0b3RhbEJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogCi0gICAgY2xvc2VBbmRVbmxvY2tGaWxlKGhhbmRsZSk7CisgICAg
dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0g
Ynl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTE1LDE4ICs0NTMsOCBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3Mo
KQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBjb3JlU3RvcmUoKS5pbmNs
dWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwotCi0gICAgc3VibWl0VGVsZW1l
dHJ5SWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIAotICAgIGlmICghc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgaWYgKG1fc2hvdWxk
U3VibWl0VGVsZW1ldHJ5KQorICAgICAgICBzdWJtaXRUZWxlbWV0cnkoKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCkBAIC01NDcs
NyArNDc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50
ZXJhY3Rpb24gPSB0cnVlOwogICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwogCi0gICAgICAgIGNvcmVTdG9yZSgpLmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9
LCBmYWxzZSk7CisgICAgICAgIGNvcmVTdG9yZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6
Tm8pOwogICAgIH0pOwogfQogCkBAIC01NzEsMTAgKzQ5OSw5IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmws
IFdURjo6CiAgICAgfQogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3RlbnRpYWxseSBjcmVhdGluZyBh
IHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihw
cmltYXJ5RG9tYWluKHVybCkpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hh
c0hhZFVzZXJJbnRlcmFjdGlvbiA9IGNvcmVTdG9yZSgpLmhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihzdGF0aXN0aWNzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzSGFkVXNlckludGVy
YWN0aW9uKTsKKyAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSBjb3JlU3RvcmUoKS5o
YXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtoYWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGhhZFVzZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0pOwog
fQpAQCAtNjc1LDI3ICs2MDIsMjggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHMKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewotICAgICAgICBjb3JlU3RvcmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoKTsKKyAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZp
cnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBz
aG91bGRDbGVhckZpcnN0KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rp
bmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVt
b3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1Jl
bW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6
Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNU
b0FkZCwgY2xlYXJGaXJzdCk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1JlbW92ZSA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9SZW1vdmUpLCBkb21h
aW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWlu
c1RvQWRkKSwgc2hvdWxkQ2xlYXJGaXJzdF0geworICAgICAgICBjb3JlU3RvcmUoKS51cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRk
LCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkoKQogeworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1l
bW9yeSgpOwogICAgIH0pOwpAQCAtNzAzLDYgKzYzMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCkKIHsKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGNvcmVTdG9y
ZSgpLmNsZWFySW5NZW1vcnkoKTsKICAgICAgICAgZGVsZXRlU3RvcmVGcm9tRGlzaygpOwpAQCAt
NzQxLDI2ICs2NzAsMTggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCiBib29sIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChtX2RhdGFSZWNvcmRzUmVtb3Zh
bFBlbmRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX2xhc3RUaW1lRGF0
YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25vdG9uaWNUaW1lOjpub3coKSA8IChtX2xhc3RUaW1l
RGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1fbWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKSkKKyAgICBpZiAobV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpCi17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92
ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRp
bmcgPSB0cnVlOworICAgIHJldHVybiAhbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQg
fHwgTW9ub3RvbmljVGltZTo6bm93KCkgPj0gKG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1v
dmVkICsgbV9taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWlu
Z1JlbW92ZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSBmYWxzZTsKKyAgICBtX2RhdGFSZWNv
cmRzQmVpbmdSZW1vdmVkID0gdmFsdWU7CisgICAgaWYgKG1fZGF0YVJlY29yZHNCZWluZ1JlbW92
ZWQpCisgICAgICAgIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCAzM2JmNzE5ZTZiN2E3OTc4OWMxNDk2MzZhZmUwMWIyYTJmYzk2YWE0Li5mMmRk
YmU4YzI3MWRmNmIzMTZhNGQxNzUwYmVjYTQxMTE4ZmMxODc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CkBAIC01NCwxOSArNTQsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKK2VudW0gY2xhc3Mg
U2hvdWxkQ2xlYXJGaXJzdDsKKworLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcg
RmlsZVN5c3RlbSBJL08gdG8gYSBzZXBhcmF0ZSBjbGFzcy4KIGNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVXBkYXRlUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9B
ZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIm
JiB1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSB7IH0pCisgICAgdXNp
bmcgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHN0YXRp
YyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNI
YW5kbGVyID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwotICAgIHN0
YXRpYyB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKKyAgICB2b2lkIHNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkgeyBtX3Nob3Vs
ZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bCB2YWx1ZSkgeyBtX3Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZh
bHVlKSB7IG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFsdWU7IH0KIAogICAgIHZvaWQgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+JiYgb3JpZ2lucyk7CiAKQEAgLTg1LDggKzg4LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKKyAgICB2b2lk
IHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0KTsKICAg
ICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN1Ym1p
dFRlbGVtZXRyeSgpOwogCkBAIC0xMDAsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBVcGRhdGVQYXJ0aXRpb25Db29raWVz
Rm9yRG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVy
JiYpOwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSB7IHJl
dHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQogICAgIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KQEAgLTEyNywxNSArMTMwLDEyIEBA
IHByaXZhdGU6CiAgICAgV2FsbFRpbWUgc3RhdGlzdGljc0ZpbGVNb2RpZmljYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1FeGNsdWRlRnJvbUJh
Y2t1cCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlU3RvcmVGcm9tRGlzaygpOwotICAgIHZvaWQg
Y2xlYXJJbk1lbW9yeURhdGEoKTsKICAgICB2b2lkIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNz
U3RvcmFnZUlmTmVlZGVkKCk7CiAgICAgdm9pZCByZWZyZXNoRnJvbURpc2soKTsKLSAgICB2b2lk
IHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRmls
ZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3Q7CiAgICAgdm9p
ZCBwZXJmb3JtRGFpbHlUYXNrcygpOwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMo
KSBjb25zdDsKLSAgICB2b2lkIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7Ci0gICAgdm9pZCBk
YXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgdm9pZCBzZXREYXRhUmVjb3Jkc0JlaW5nUmVt
b3ZlZChib29sKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZCgpOwpAQCAtMTUyLDEyICsxNTIsMTQgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7CiAgICAgV2FsbFRpbWUgbV9sYXN0
U3RhdGlzdGljc0ZpbGVTeW5jVGltZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFN0YXRpc3Rp
Y3NXcml0ZVRpbWU7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcjsKKyAg
ICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fZGFpbHlU
YXNrc1RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJl
bW92ZWQ7CiAgICAgU2Vjb25kcyBtX21pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bCB7IDFfaCB9OwotICAgIGJvb2wgbV9kYXRhUmVjb3Jkc1JlbW92YWxQZW5kaW5nIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9kaWRTY2hlZHVsZVdyaXRlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3No
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9zaG91bGRTdWJtaXRUZWxlbWV0cnkgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAppbmRleCBhYWM1NDBj
YjM5MjA4MjcwOTk5MGQwZDliNmY5ODdlZTliOGRkZGNjLi5lMTIxMjEzYTlmNWZkNTk1NWE5YTll
ZDBkNWEwN2Y4NWY4ZmYxMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCkBAIC0z
OSw5ICszOSw0OSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotICAgIAotc3RhdGljIGF1dG8gbm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQgPSBmYWxzZTsKLSAgICAKKworY29uc3QgdW5zaWduZWQgbWluaW11bVByZXZhbGVudFJlc291
cmNlc0ZvclRlbGVtZXRyeSA9IDM7CitzdGF0aWMgYm9vbCBub3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCA9IGZhbHNlOworCitzdHJ1Y3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnkgeworICAgIHVuc2lnbmVkIG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQ7CisgICAg
Ym9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb247CisgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uOworICAgIHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnM7Cisg
ICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKKyAgICB1bnNpZ25l
ZCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOworfTsKKworc3RhdGljIFZlY3RvcjxQcmV2
YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnko
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnk+IHNvcnRlZDsKKyAgICBzdG9yZS5wcm9jZXNzU3RhdGlzdGljcyhbJnNvcnRlZF0gKGF1dG8m
IHN0YXRpc3RpYykgeworICAgICAgICBpZiAoIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8PSBX
YWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAyNF9oKTsKKyAgICAgICAgc29ydGVkLmFw
cGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7CisgICAgICAgICAgICBzdGF0aXN0aWMu
ZGF0YVJlY29yZHNSZW1vdmVkLAorICAgICAgICAgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFj
dGlvbiwKKyAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKKyAgICAgICAgICAg
IHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKKyAgICAgICAg
ICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKKyAg
ICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGlmIChzb3J0ZWQuc2l6ZSgpIDwgbWluaW11bVBy
ZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHN0ZDo6c29ydChzb3J0ZWQuYmVnaW4oKSwgc29ydGVkLmVuZCgpLCBbXShjb25zdCBQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSYgYSwgY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkm
IGIpIHsKKyAgICAgICAgcmV0dXJuIGEuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbyA+CisgICAgICAgIGIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbzsKKyAgICB9KTsKKworICAgIHJldHVybiBzb3J0ZWQ7Cit9CisKIHN0YXRpYyB1bnNpZ25l
ZCBudW1iZXJPZlJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24oY29uc3QgVmVjdG9yPFByZXZh
bGVudFJlc291cmNlVGVsZW1ldHJ5PiYgcmVzb3VyY2VzLCBzaXplX3QgYmVnaW4sIHNpemVfdCBl
bmQpCiB7CiAgICAgaWYgKHJlc291cmNlcy5pc0VtcHR5KCkgfHwgcmVzb3VyY2VzLnNpemUoKSA8
IGJlZ2luICsgMSB8fCByZXNvdXJjZXMuc2l6ZSgpIDwgZW5kICsgMSkKQEAgLTE4OCw3ICsyMjgs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFu
ZFN1Ym1pdChjb25zdCBSZXNvdXJjZUxvYWRTdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIAotICAgIGF1dG8gc29ydGVkUHJldmFsZW50UmVzb3VyY2VzID0gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KCk7
CisgICAgYXV0byBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMgPSBzb3J0ZWRQcmV2YWxlbnRSZXNv
dXJjZVRlbGVtZXRyeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwogICAgIGlmIChub3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCAmJiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDApOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYjA3ZWVmZWYzYjZlNmViMjI2MzFkY2MwMGQ3
MWQxZGFjNDk0NmViZC4uN2JjZjY5OTU1YTM0YjczOTNhMDMyMzAyNDFiODNmYzIzMjk1ZjU3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTA5OSwxMCArMTA5OSwxMCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucyhPcHRp
b25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
Ci12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFBy
aXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3Zl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmly
c3QpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRv
cFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0
IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQ
cml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3Vs
ZENsZWFyRmlyc3QpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBz
aG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykpOwogfQogI2VuZGlmCiAK
QEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiAgICAgaWYgKGVuYWJsZWQpIHsK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlz
XSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBb
dGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJz
dCkgewogICAgICAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5
T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZp
cnN0KTsKICAgICAgICAgfSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYWIzNTQzYjNiMjAy
ZWJjMWU4Njc5MDVhOGFlY2Q5MGNjNWVjMjBkNi4uMWFjNWZjZTk2YmFiZWFlMzIzMzJlOWM3ZmUy
ZjZkMWJjZTJmYjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02Miw2ICs2Miw4IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2Vu
ZGlmCiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdCB7IE5vLCBZZXMgfTsKKwogY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBw
dWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBD
b25maWd1cmF0aW9uIHsKQEAgLTEwMSw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zLCBGdW5jdGlvbjx2b2lkKEhh
c2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpOworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9w
UHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qp
OwogI2VuZGlmCiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE3YWFkYjIxZTlhMTJlOTIwNDdjMzkzMWUyYTA4Mzg4MGU4OWI2ZjAuLmEzZjc0NTU5YjgwYTQx
NTc0MzZlZDI2MjUwNWZkMzM1YTFkODkxZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNy0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUg
c29tZSBvZiB0aGUgdGVzdFJ1bm5lciBBUEkgZm9yIGNsYXJpdHkgYW5kIHRvIGJldHRlciBtYXRj
aCB3aGF0IGl0IGNhbGxzCisgICAgICAgIGludGVybmFsbHkuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcp
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JIb3N0KToKKwogMjAxNy0wNy0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSAv
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5k
ZXggNWNhYjhhMjJkMDIwMDY4ZGI1NTM4MTIxZmE4ZWYyMmRiNzQxNjJjNy4uOTM2ZWYzMTZiODFm
NmRiNjc3MWM1MTg2NDgwODg2MWU4MzlmOTdjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CkBAIC0yNjYsOCArMjY2LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBz
ZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyRm9yT25lRG9tYWluKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSk7CisgICAg
dm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdm9pZCBzdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3RyaW5nIGhvc3ROYW1l
LCBib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4gdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggNDM0YzU5MTUzNGVjOGFkYmIxNDA2Njc1Y2ZmODJiMTg4MTZjYWRjNi4uODM3Nzg2ODhh
YzA3MjVkMGRiODBlMjg4MjgwMzMwMjlkMGM1NmQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNDE5LDEzICsx
NDE5LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCBudWxs
cHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIpKTsKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihK
U1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlz
dGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIHZhbHVlKQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtl
eXM7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKQEAgLTE0NDQs
NyArMTQ0NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihKU1N0cmluCiAgICAgICAgIHJhd1ZhbHVlc1tp
XSA9IHZhbHVlc1tpXS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWlu
IikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JIb3N0IikpOwogICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVz
c2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdW
YWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOwogICAgIAogICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGFl
YWFkOTZiNWVmYjE4YmM0NmQxYzMyOGE3NzU4ZjU1ZjVhOGM0MzEuLjUxN2VlYmM0NjdiMGZhYmJl
MDE5NzM1N2RkNjgzZmM1NDAyYzE4MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKCk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sodW5zaWduZWQgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwog
ICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAg
ICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAg
ICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVE
b21haW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSk7CiAgICAgYm9vbCBpc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1Jl
ZiBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA2MDNjNjRhYTNiMTMwOTk1ODE0ZGQ3YmJiOWM4MmFlYWEzYTNkNzkuLjQ0ODY5YmNiY2U5
MzUyYzcwYTU4M2JiNjFiNzQxMjFjOGQxNWE1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzAwLDExICsyMzAwLDExIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKIHsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nKCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Zp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiwg
Ym9vbCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdChXS1N0cmluZ1JlZiwgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGE5YzBhM2I2Y2QxZWJlYzUzZGRlNDNlZTY2ZGI2
MTc2OTQ3NmNiZTAuLjk3NTM2ZTIwNzE1NmU2MjYyYWZiODdjNTU2ZGY3YzI3OTEzNWIxY2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE2Miw4ICsxNjIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5h
bWUsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JI
b3N0KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1No
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyZDc3ODFjMTVmMWZk
NGZlNTdhNGMxOGM1NjZkMjI3Mjc0MTE1OTFhLi4yYzQ0Y2MyN2VhYjJmZDQ3ODBmNzVlMTliZmE5
M2I5NzI5MmE2NmZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTA0MiwxMiArMTA0MiwxMiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyIikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0
YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJG
b3JPbmVEb21haW4iKSkgeworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0Iikp
IHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25h
cnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIAogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9k
eSk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0
KCkpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdmFs
dWVLZXkuZ2V0KCkpKTsKICAgICAgICAgCi0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluKGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMDQ0YWRmZjU5ZTQ5OTdjMDhkYzZj
YzZjZmU2OGJhZDg4ZDdiM2FlMy4uOTI2YzM3NGZiZjc0Mzc0YmYyNTdhZjMzMWM2YWVkM2ExNmFk
YzlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQpAQCAtMzA2LDE0ICszMDYsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc107CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCiB7
Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJdOworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJp
bmcoaG9zdE5hbWUpXTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6
dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07CiB9CiAKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxYTBiOTQ1ZjBmNWY1
NzE4ZTU2N2EzN2FkZTYzYTY2ODc0ODVhZjkuLmQ5MjE5OTEwNzk1NzlmNDA3OGNkMmRmNDM1MThl
YTA4MTdlMzFjYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNy0wOSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZV9jbGVhbnVwMgorCisgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGlu
Zy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNv
b2tpZS1kZWxldGlvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRo
LXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5n
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbDoKKwogMjAxNy0wNy0wOCAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046ICJ2aXNpYmlsaXR5Omhp
ZGRlbiIgZG9lcyBub3QgaGlkZSBwbGF5IGJ1dHRvbiBmb3IgdmlkZW8gZWxlbWVudHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFy
dGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKaW5kZXggMmRh
NDRlMzJiYjMzMzlkNzM0MGE4YTFmYmEwM2Y2MDUzOTFhODM0OS4uMTE4NmZkZmJkNDdlZDJhZjU2
Y2QyMDlkZGJmM2ViMzJkNzZjMjQ2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0
aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9u
ZWQtY29va2llLWRlbGV0aW9uLmh0bWwKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwoZmFsc2UpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMCk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKCJs
b2NhbGhvc3QiLCB0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yT25lRG9tYWluKCJsb2NhbGhvc3QiLCB0cnVlKTsKICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhv
c3QiLCB0cnVlKTsKICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJI
b3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
YXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGlt
ZW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0
aW9uaW5nLXRpbWVvdXQuaHRtbAppbmRleCA0OTliODQ5NGYwNDI5NTM2MzJmZGZhYjQwZTlmOTE1
MTEwYmZhOWIxLi5kNDk0YWUzODg5NzI4Y2VhNTlmMzI4ZWYwYmRkM2JhN2QxYmM2OTZjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25p
bmctdGltZW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13
aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJBbmRDb250aW51
ZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpOwogICAgICAgICBydW5UZXN0KCk7CiAgICAgfQogCkBAIC0xMTUsNyAr
MTE1LDcgQEAKICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CiAKLSAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwog
CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13
aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMt
d2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKaW5kZXggZDliMTI1ZDExMTI3
ZWY4MjkzMWU3OWI2YTMxM2NhMzc4MWIzYWIxYi4uMzBlOGY2ZTRkZGFjYjM0NTRiM2QyNDExNGQ1
YTBkOWRmYjE1MmJlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5n
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
YWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5k
LXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCkBAIC03Myw3ICs3Myw3IEBACiAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IHBhcnRpdGlvbkhvc3QgJiYgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9PSAiIiAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxz
KSB7CiAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CiAKLSAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWlu
KCJsb2NhbGhvc3QiLCB0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yT25lRG9tYWluKCJsb2NhbGhvc3QiLCB0cnVlKTsKIAogICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314954</attachid>
            <date>2017-07-09 14:43:53 -0700</date>
            <delta_ts>2017-07-09 15:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174301-20170709144352.patch</filename>
            <type>text/plain</type>
            <size>72951</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkxMWQ4Njc2YzY1ZDgy
Y2RmYjkxN2Q0YjY2NWI2MzU2NzgwNmI0My4uY2RjOWEzZDdiN2M5OGU2NTVkOGNiZjYzYzUxOWNh
ODI0NmIzMmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4g
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVk
IHNvbWUgZ2VuZXJpYyBmaWxlIHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucyBkb3duIHRvIHBsYXRm
b3JtJ3MgRmlsZVN5c3RlbS5oLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuQW5kTG9ja0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisK
IDIwMTctMDctMDggIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDdXJsXSBTYWZlIGFjY2VzcyBhbmQgbGlmZSBjeWNsZSBtYW5hZ2VtZW50IG9mIGJh
cmUgQ3VybCBoYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZjIwNmU3YTkzNjcwOTcyZTg0OTQ3YzJhZWY3
ZTA5MTk2ODQ4ODRlLi4zZThiNjQ5NWY2ZGRlZWU5NTQyYWVkNmFmNTc3ODMyOWE4OGI4YWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTctMDctMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSAvIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1cAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MzAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhbCBjbGVhbiB1cCBh
bmQgdmFyaW91cyBzaW1wbGlmaWNhdGlvbnMgLyBvcHRpbWl6YXRpb25zIHRvIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBhbmQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIGNsYXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXM6Zm9ySG9zdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZUVuY29kZXJGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cG9wdWxhdGVGcm9tRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVE
YXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWZyZXNoRnJv
bURpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVP
cldyaXRlU3RvcmVUb0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3Jh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBs
YXRmb3JtRXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
clRvcFByaXZhdGVseU93bmVkRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE3LTA3LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ1YzQyMzE4ZmQzNTJmNmYzNzIz
MmZkYzg3ZGQ4YjhjYWQxMGI0Y2YuLjJjYWZjYTBiMzI0MzI1ODQzYjBkMWZjZGU2YzVjYjE3Yjk5
OTZmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0zMjcsNCAr
MzI3LDI3IEBAIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQogI2VuZGlmCiB9CiAKK1BsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sK
KyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG1vZGUpOworICAgIGlmIChoYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgbG9ja2VkID0g
bG9ja0ZpbGUoaGFuZGxlLCBXZWJDb3JlOjpMb2NrRXhjbHVzaXZlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGxvY2tlZCwgbG9ja2VkKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwor
dm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNp
ZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7
CisgICAgQVNTRVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xv
c2VGaWxlKGhhbmRsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCA3Yjg5ZGM1MmMyYTUyMjU2M2Q2ZGZmZjdjNTZlZWFk
ZmYwNThjN2FkLi5kZTkzMGViOWI3ZGY1ZTg1ZTYyNWIyYWM2NjU0OGM0ZWRlMzY0NDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xMzUsNiArMTM1LDkgQEAgV0VCQ09S
RV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdy
aXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogV0VCQ09SRV9FWFBPUlQgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwog
CitXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0
IFN0cmluZyYsIEZpbGVPcGVuTW9kZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHVubG9ja0FuZENs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworCiAvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBv
ZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxl
LgogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYg
aXQgd2FzIG5vdC4KIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDhh
YTVlNTkxZWEzMjk5MGQ4MDgyNTQzOTA0ODczNGYwOWQzODgwOTcuLjRiYTA3NGE5ZmFmNjRjYmI4
Y2Y1MWYxMjljMDRmNTAyMjQzM2MxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zNTQsMjUgKzM1
NCwyNSBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcwogICAgIHN0b3JlLT5wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
KCk7CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmcKIHsKICAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICgh
c3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoKTsKKyAgICBzdG9yZS0+dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7
CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXJGb3JPbmVEb21haW46KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBhdXRv
KiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7CisgICAgICAgIHN0b3JlLT51cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyBob3N0IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJG
aXJzdDo6Tm8pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcih7IGhvc3QgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIHN0b3JlLT51cGRh
dGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgaG9zdCB9LCB7IH0sIFdlYktpdDo6U2hv
dWxkQ2xlYXJGaXJzdDo6Tm8pOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3VibWl0VGVsZW1ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGM2N2VhNWRk
YWI3YjgyZTI0MDg4NzJmMGJiMDA1ODFlYTNmODRjMGIuLjYyOTk1NzZjZWRlODYwOGIxMDE3MDU4
NWY1Njc3ZjZjZjg3MzcyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC01OCw4
ICs1OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOihkb3VibGUpc2Vjb25kcyBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNv
bmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7Ci0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihO
U1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggZDAwM2M2MjgxZWFhOGQ1NDAyYWEzNWI5Y2EyMmUwMGFkYmU1
NTA1Ni4uYjE1YTcwODY3NzI0ZjY0ZjBmMGI0NjU0ZmQ3NDE1ZjQzYzQ0NDZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAKKyNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtMzUsMTMgKzM2LDE3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY29uc3QgdW5zaWduZWQgbWlu
aW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9IDM7CiBjb25zdCB1bnNpZ25lZCBv
cGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMwIH07CiBjb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9k
ZWxWZXJzaW9uIHsgNiB9OwogCi1SZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCitSZWY8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnNIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnNIYW5kbGVyKSkpOworfQorCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKQorICAg
IDogbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihXVEZNb3ZlKHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwogfQogCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJp
bmcmIHByaW1hcnlEb21haW4pIGNvbnN0CkBAIC02Myw2ICs2OCwxNSBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNHcmFuZEZhdGhlcmVkKGNvbnN0IFN0cmluZyYgcHJpbWFy
eURvbWFpbikgYwogCiAgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5ncmFuZGZhdGhlcmVkOwog
fQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICBhdXRvIG1hcEVu
dHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChwcmltYXJ5RG9tYWluKTsKKyAgICBp
ZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJh
Y3Rpb24obWFwRW50cnktPnZhbHVlKTsKK30KICAgICAKIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCiB7CkBAIC03Miw4ICs4
Niw2IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6S2V5
VmFsdWVQYWlyVHlwZSBTdGF0aXN0aWNzVmFsdWU7Ci0KIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVu
Y29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRh
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTgxLDcgKzkz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEKICAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIo
InZlcnNpb24iLCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uKTsKICAgICBlbmNvZGVyLT5lbmNvZGVE
b3VibGUoImVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAiLCBtX2VuZE9mR3JhbmRmYXRoZXJp
bmdUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKICAgICAKLSAgICBlbmNv
ZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW10oS2V5ZWRF
bmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3RpY3NWYWx1ZSYgb3JpZ2luKSB7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFtd
KEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBhdXRvJiBvcmlnaW4pIHsKICAgICAg
ICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwogCkBAIC05Miw3
ICsxMDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YQogICAgIHJldHVybiBlbmNvZGVyOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rl
cihLZXllZERlY29kZXImIGRlY29kZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cG9wdWxhdGVGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5pc0VtcHR5KCkpCkBAIC0xNDEsNyArMTUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgdHJ1ZSk7CisgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
RG9tYWlucyh7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKQEAgLTE1MCwzOSArMTYyLDMyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKICAgICBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5jbGVhcigpOwogICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKIAot
ICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgfSwgdHJ1ZSk7Cisg
ICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsgfSwgU2hvdWxkQ2xl
YXJGaXJzdDo6WWVzKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1l
cmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNz
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGZvciAoYXV0byYgc3Rh
dGlzdGljIDogc3RhdGlzdGljcykgewotICAgICAgICAvLyBGSVhNRTogSW4gdGhlIGNhc2Ugd2hl
cmUgdGhlIHN0YXRpc3RpY3MgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgaXQgc2VlbXMgaW5lZmZp
Y2llbnQgdG8gY3JlYXRlCi0gICAgICAgIC8vIGFuIGVtcHR5IG9uZSBqdXN0IHRvIG1lcmdlIHRo
ZSBuZXcgb25lIGludG8gaXQuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIFsmc3RhdGlzdGljXSB7
Ci0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzdGF0aXN0aWMuaGln
aExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRpc3RpYyk7CiAg
ICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJn
ZShzdGF0aXN0aWMpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShzdGF0aXN0aWMpOwogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVh
ckZpcnN0KT4mJiBoYW5kbGVyKQotewotICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKLX0KLQogaW5saW5lIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgKCFzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9u
IHx8IFdhbGxUaW1lOjpub3coKSA+IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSArIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRp
b25pbmcoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVmVjdG9y
PFN0cmluZz4gZG9tYWluc1RvUmVtb3ZlOwogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Fk
ZDsKLSAgICAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb24gPSBz
aG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgaWYgKHJl
c291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nICYmICFzaG91bGRQ
YXJ0aXRpb24pIHsKQEAgLTE5OCwyMyArMjAzLDIxIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8
VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENy
b3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpXSAoKSB7
Ci0gICAgICAgIGlmIChtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikK
LSAgICAgICAgICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBmYWxzZSk7CisgICAgICAgIG1fdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5z
VG9BZGQsIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKGRvbWFpbnNUb1JlbW92ZS5pc0VtcHR5KCkg
JiYgZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgY2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0
b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKLSAg
ICAgICAgaWYgKG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQotICAg
ICAgICAgICAgbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWlu
c1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3QpOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3Ry
aW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRD
b3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKKyAgICAgICAg
bV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihkb21haW5zVG9SZW1v
dmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSk7CiAgICAgCi0gICAg
aWYgKGNsZWFyRmlyc3QpIHsKKyAgICBpZiAoc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVh
ckZpcnN0OjpZZXMpIHsKICAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgcmVzb3VyY2VTdGF0
aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKICAgICB9IGVsc2Ug
ewpAQCAtMjUxLDcgKzI1NCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFJlcwogICAgICAgICBw
cm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMpOwogfQogCi1ib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYgcHJvY2Vzc0Z1bmN0aW9uKSBjb25z
dAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAg
ICAgcHJvY2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsKK30KKworYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlv
bihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKIHsKICAg
ICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjgxLDcgKzI5MSw3IEBAIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXM7CiAgICAgZm9yIChhdXRvJiBz
dGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihzdGF0aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAh
c3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpKQorICAgICAgICBpZiAoc3RhdGlzdGljLmlzUHJldmFs
ZW50UmVzb3VyY2UgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0
aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyB8fCAhc3RhdGlzdGljLmdy
YW5kZmF0aGVyZWQpKQogICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChzdGF0
aXN0aWMuaGlnaExldmVsRG9tYWluKTsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZh
dGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkKQEAgLTI5MCwzNiArMzAwLDYgQEAg
VmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1RvUmVtb3YKIAogICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZXM7
CiB9Ci0gICAgCi1WZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoKSBjb25z
dAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFZlY3RvcjxQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOwotICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDog
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aXN0
aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxU
aW1lOjpub3coKSAtIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAy
NF9oKTsKLSAgICAgICAgc29ydGVkLmFwcGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7
Ci0gICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkLAotICAgICAgICAgICAg
c3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvLnNpemUoKQotICAgICAgICB9KTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KHNvcnRlZC5zaXplKCkgPCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5KQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgc3RkOjpzb3J0KHNvcnRlZC5iZWdpbigpLCBzb3J0
ZWQuZW5kKCksIFtdKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiBhLCBjb25zdCBQ
cmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYikgewotICAgICAgICByZXR1cm4gYS5zdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
ICsgYS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID4KLSAgICAgICAgYi5zdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsg
Yi5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAgIH0pOwotICAgIAotICAgIHJldHVy
biBzb3J0ZWQ7Ci19CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVT
dGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcHJl
dmFsZW50UmVzb3VyY2VEb21haW5zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCA1ODQ2MDcyNWY1MzcwMmFiOTY1Y2Q3OGVkOGJmMTk4ZDBjZjlkNDA0Li4xYjFlMjAyYmE0NjAw
ZmY3OWZlNTRjZTY0MzM0NjBhYTZiNWY0M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtNDEsMjIgKzQxLDE2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5IHsK
LSAgICB1bnNpZ25lZCBudW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkOwotICAgIGJvb2wg
aGFzSGFkVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbjsKLSAgICB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwotICAgIHVu
c2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAgdW5zaWduZWQgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLX07CitlbnVtIGNsYXNzIFNob3VsZENsZWFyRmly
c3Q7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgY29uc2lkZXIgbWVyZ2luZyB0aGlz
IHdpdGggV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgogY2xhc3MgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoKTsKKyAgICB1c2luZyBVcGRhdGVDb29raWVQYXJ0aXRp
b25pbmdGb3JEb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBTaG91bGRDbGVhckZpcnN0KT47CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IGNyZWF0ZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFu
ZGxlciYmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNy
ZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0OwotICAgIHZvaWQgcmVhZERhdGFGcm9tRGVjb2Rl
cihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKKyAgICB2b2lkIHBvcHVsYXRlRnJvbURlY29kZXIo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKQEAgLTY1LDM4ICs1OSwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc0dyYW5kRmF0
aGVyZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3Mo
VmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogCi0gICAgdm9pZCBz
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk+JiYpOwotCiAgICAgdm9pZCBzZXRUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIHZvaWQgc2V0
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAKLSAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk7CiAKICAgICB2b2lk
IHByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpOworICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3MoY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik+JikgY29uc3Q7CiAKLSAgICBib29sIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCk7
Ci0gICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU3RhdGlzdGljc0ZvclJl
bW92ZWREYXRhUmVjb3Jkcyhjb25zdCBIYXNoU2V0PFN0cmluZz4mIHByZXZhbGVudFJlc291cmNl
RG9tYWlucyk7CiAKICAgICB2b2lkIGhhbmRsZUZyZXNoU3RhcnRXaXRoRW1wdHlPck5vU3RvcmUo
SGFzaFNldDxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0dyYW5kZmF0
aGVyKTsKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShVcGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsKIAogICAgIGJvb2wgc2hvdWxkUGFydGl0
aW9uQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7
CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJikgY29uc3Q7CisgICAgYm9vbCBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwogCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIERlcXVlPFdURjo6V2FsbFRpbWU+IG1fb3BlcmF0aW5n
RGF0ZXM7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wgY2xlYXJGaXJzdCk+IG1fc2hvdWxkUGFydGl0aW9u
Q29va2llc0ZvckRvbWFpbnNIYW5kbGVyOworICAgIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyIG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRs
ZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbjsKICAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgeyAyNF9o
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhM2ZlNDA2OTZiZDI5OWZmZTliYjIyYTFl
ODBmMzA4M2Q5ODVhZTAuLjZjYzllOTQ3MTA1ZmYzMTAzNDdlZWExMmYxZTkzMTQ3OTA1ODM3YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRj
aE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC00NCwyNSArNDUsMTcgQEAKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmluZSBFTkFCTEVfTVVMVElQUk9DRVNT
X0FDQ0VTU19UT19TVEFUSVNUSUNTX1NUT1JFIDEKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0ZXhwciBTZWNvbmRzIG1pbmlt
dW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgeyA1X21pbiB9OworCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVl
KQogewogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZh
bHVlKTsKIH0KIAotY29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJ
bnRlcnZhbCB7IDVfbWluIH07Ci0KLXN0YXRpYyBib29sIG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQgPSBmYWxzZTsKLXN0YXRpYyBib29sIHNob3VsZENsYXNzaWZ5UmVzb3Vy
Y2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdHJ1ZTsKLXN0YXRpYyBhdXRvIHNob3VsZFN1
Ym1pdFRlbGVtZXRyeSA9IHRydWU7Ci0KIHN0YXRpYyBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxXZWJzaXRlRGF0YVR5cGU+KHsKQEAgLTg3LDEyICs4MCwxMSBAQCBzdGF0aWMgY29uc3Qg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIGRhdGFUeXBlc1RvUmVtb3ZlKCkKICAgICByZXR1
cm4gZGF0YVR5cGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciYm
IHVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikKLSAgICA6IG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCisgICAgOiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkpCiAgICAgLCBtX3N0YXRp
c3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVl
dWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3N0YXRpc3RpY3NTdG9yYWdlUGF0aChyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQotICAgICwgbV90ZWxlbWV0cnlPbmVTaG90VGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
dWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSkKLSAgICAsIG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnBlcmZvcm1EYWlseVRhc2tzKQorICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlU
YXNrcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMDAsMzkgKzky
LDIxIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzCiAgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJ
Zk5lZWRlZCgpOwogI2VuZGlmCiAKLSAgICBpZiAodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5z
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soW3VwZGF0ZVBhcnRpdGlvbkNvb2tpZXNG
b3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFp
bnNIYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkgewot
ICAgICAgICAgICAgdXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKGRvbWFp
bnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICAgICAgfSk7
Ci0gICAgfQotCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgcmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKCk7CiAgICAgICAgIHN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CiAgICAg
fSk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX3Nob3VsZFN1Ym1p
dFRlbGVtZXRyeSkKKyAgICAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7CisgICAgfSk7CiAKLSAgICBtX3Rl
bGVtZXRyeU9uZVNob3RUaW1lci5zdGFydE9uZVNob3QoNV9zKTsKLSAgICBtX3RlbGVtZXRyeVJl
cGVhdGVkVGltZXIuc3RhcnRSZXBlYXRpbmcoMjRfaCk7CisgICAgbV9kYWlseVRhc2tzVGltZXIu
c3RhcnRSZXBlYXRpbmcoMjRfaCk7CiB9CiAKIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiB7CiB9Ci0KLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKGJvb2wgYWx3YXlzKQotewotICAgIG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQgPSBhbHdheXM7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChib29sIHZhbHVlKQotewotICAgIHNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsID0gdmFsdWU7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSkKLXsKLSAgICBzaG91
bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsKLX0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjbGFzc2lmeVJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHJlc291cmNlU3RhdGlzdGljKQogewpAQCAtMTUxLDE1ICsxMjUsMTMgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKICAgICBpZiAocHJl
dmFsZW50UmVzb3VyY2VEb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CisgICAgc2V0RGF0YVJlY29yZHNCZWluZ1Jl
bW92ZWQodHJ1ZSk7CiAKLSAgICAvLyBTd2l0Y2ggdG8gdGhlIG1haW4gdGhyZWFkIHRvIGdldCB0
aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3RvcmUKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxT
dHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCB0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1RvUmVtb3ZlKCksIFdURk1vdmUocHJldmFs
ZW50UmVzb3VyY2VEb21haW5zKSwgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIC8vIEJ1dCBhbHdheXMgdG91Y2ggdGhlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mgc3RvcmUgb24gdGhlIHdvcmtlciBxdWV1ZS4KKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJz
aXN0ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92ZSgpLCBXVEZNb3ZlKHByZXZhbGVudFJl
c291cmNlRG9tYWlucyksIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVh
ZENvcGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVE
YXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlU3Rh
dGlzdGljc0ZvclJlbW92ZWREYXRhUmVjb3Jkcyh0b3BEb21haW5zKTsKLSAgICAgICAgICAgICAg
ICBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgICAgICAgICAgICAgc2V0RGF0YVJlY29y
ZHNCZWluZ1JlbW92ZWQoZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAg
IH0pOwpAQCAtMTY4LDE0ICsxNDAsMTQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKIHsKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKCkgewotICAgICAgICBpZiAoc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZv
cmVEYXRhUmVjb3Jkc1JlbW92YWwpIHsKICAgICAgICAgICAgIGNvcmVTdG9yZSgpLnByb2Nlc3NT
dGF0aXN0aWNzKFt0aGlzXSAoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0
aWMpIHsKICAgICAgICAgICAgICAgICBjbGFzc2lmeVJlc291cmNlKHJlc291cmNlU3RhdGlzdGlj
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIHJlbW92ZURhdGFSZWNvcmRz
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAobm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCkgeworICAgICAgICBpZiAobV9zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10g
ewogICAgICAgICAgICAgICAgIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpOwogICAgICAgICAgICAgfSk7CkBAIC0xOTAsMjAgKzE2
MiwxOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUob3JpZ2lu
cykpOwotICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdh
dGUgdXNlcgotICAgIC8vIGludGVyYWN0aW9uIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gdGhlIG5l
dHdvcmsgcHJvY2Vzcy4KLSAgICBjb3JlU3RvcmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKKyAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8g
cHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorICAgIGNvcmVTdG9yZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygp
OwogICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSgpCiB7Ci0gICAgLy8gU3dpdGNoIHRvIHRoZSBtYWluIHRocmVhZCB0byBnZXQgdGhlIGRlZmF1
bHQgd2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYlByb2Nlc3NQcm94eTo6dG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoZGF0YVR5cGVzVG9SZW1vdmUo
KSwgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYgdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewotICAgICAg
ICAgICAgLy8gQnV0IGFsd2F5cyB0b3VjaCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdG9y
ZSBvbiB0aGUgd29ya2VyIHF1ZXVlCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BEb21haW5z
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weSh0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmNvcmVTdG9yZSgpLmhhbmRsZUZyZXNoU3RhcnRXaXRoRW1w
dHlPck5vU3RvcmUoV1RGTW92ZSh0b3BEb21haW5zKSk7CisgICAgICAgIFdlYlByb2Nlc3NQcm94
eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoZGF0YVR5cGVz
VG9SZW1vdmUoKSwgbV9zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChIYXNoU2V0
PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BEb21haW5zID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weSh0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IGNvcmVTdG9yZSgpLmhhbmRsZUZyZXNoU3RhcnRXaXRoRW1wdHlPck5vU3RvcmUoV1RGTW92ZSh0
b3BEb21haW5zKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0y
NDgsNyArMjE5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWRE
YXRhRnJvbURpc2tJZk5lZWRlZCgpCiAgICAgfQogCiAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1l
bW9yeSgpOwotICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOwor
ICAgIGNvcmVTdG9yZSgpLnBvcHVsYXRlRnJvbURlY29kZXIoKmRlY29kZXIpOwogCiAgICAgbV9s
YXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1lOwogCkBAIC0yNzgsNyArMjQ5LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzaygp
CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlU3RvcmUoKS5y
ZWFkRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKKyAgICBjb3JlU3RvcmUoKS5wb3B1bGF0ZUZy
b21EZWNvZGVyKCpkZWNvZGVyKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0g
cmVhZFRpbWU7CiB9CiAgICAgCkBAIC0yOTUsMTIgKzI2NiwxMiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmLAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9u
V2lsbFRlcm1pbmF0ZSgpCiB7CiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICAv
LyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgd29yayBpbiBvdXIgcXVldWUgaXMgZmluaXNoZWQgYmVm
b3JlIHdlIHRlcm1pbmF0ZS4KICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goWyZzZW1h
cGhvcmUsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICAv
LyBXcml0ZSBmaW5hbCBmaWxlIHN0YXRlIHRvIGRpc2suCiAgICAgICAgIGlmIChtX2RpZFNjaGVk
dWxlV3JpdGUpCiAgICAgICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiAKLSAgICAgICAgLy8g
TWFrZSBzdXJlIGFueSBvbmdvaW5nIHdvcmsgaW4gb3VyIHF1ZXVlIGlzIGZpbmlzaGVkIGJlZm9y
ZSB3ZSB0ZXJtaW5hdGUuCiAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9KTsKICAg
ICBzZW1hcGhvcmUud2FpdChXYWxsVGltZTo6aW5maW5pdHkoKSk7CkBAIC0zMTcsNyArMjg4LDcg
QEAgU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxl
UGF0aCgpIGNvbnN0CiAgICAgaWYgKHN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgLy8gVE9ETyBEZWNpZGUgd2hhdCB0
byBjYWxsIHRoaXMgZmlsZQorICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hhdCB0byBjYWxsIHRoaXMg
ZmlsZS4KICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0YXRpc3RpY3NTdG9y
YWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwogfQog
CkBAIC0zMzIsNyArMzAzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OndyaXRlU3RvcmVUb0Rpc2soKQogICAgIGF1dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0
ZUVuY29kZXJGcm9tRGF0YSgpOwogCiAgICAgU3RyaW5nIHJlc291cmNlTG9nID0gcmVzb3VyY2VM
b2dGaWxlUGF0aCgpOwotICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgcmVz
b3VyY2VMb2cpOworICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2RlciwgcmVzb3VyY2VMb2cp
OwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IFdhbGxUaW1lOjpub3coKTsK
ICAgICBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBA
IC0zNDksOCArMzIwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICBpZiAodGltZVNpbmNlTGFzdFdyaXRlIDwg
bWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCkgewogICAgICAgICBpZiAoIW1fZGlk
U2NoZWR1bGVXcml0ZSkgewogICAgICAgICAgICAgbV9kaWRTY2hlZHVsZVdyaXRlID0gdHJ1ZTsK
LSAgICAgICAgICAgIFNlY29uZHMgZGVsYXlVbnRpbCA9IG1pbmltdW1TdGF0aXN0aWNzRmlsZVdy
aXRlSW50ZXJ2YWwgLSB0aW1lU2luY2VMYXN0V3JpdGUgKyAxX3M7Ci0gICAgICAgICAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2hBZnRlcihkZWxheVVudGlsLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBTZWNvbmRzIGRlbGF5ID0gbWlu
aW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5jZUxhc3RXcml0ZSArIDFf
czsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICAgICAg
d3JpdGVTdG9yZVRvRGlzaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTM2MCwz
MSArMzMxLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxl
T3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiB9CiAKLXN0YXRp
YyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBtb2RlKTsKLSAgICBpZiAoaGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwotCi0jaWYgRU5BQkxFKE1VTFRJUFJPQ0VTU19BQ0NFU1NfVE9fU1RBVElT
VElDU19TVE9SRSkKLSAgICBib29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgV2ViQ29yZTo6
TG9ja0V4Y2x1c2l2ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsb3NlQW5kVW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotI2lmIEVOQUJMRShNVUxUSVBST0NFU1NfQUNDRVNTX1RPX1NUQVRJU1RJQ1Nf
U1RPUkUpCi0gICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7Ci0jZW5kaWYKLSAgICBjbG9zZUZpbGUoaGFu
ZGxlKTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5j
b2RlclRvRGlzayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQwNCw3ICszNTAsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVyVG9EaXNr
KEtleWVkRW5jb2RlciYgZW5jb2RlciwgYwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaW50
NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwg
cmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICB1
bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTogV2Ugb25seSB3cm90ZSAlZCBvdXQgb2YgJWQgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtNDIzLDEy
ICszNjksNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlU3Rv
cmVGcm9tRGlzaygpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MsICJVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3MgZmlsZTogJXMiLCByZXNvdXJjZUxv
Z1BhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhckluTWVtb3J5RGF0YSgpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwotfQotCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3Jh
Z2UoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDQ2LDcgKzM4Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFydE1vbml0b3JpbmdT
dGF0aXN0aWNzU3RvcmFnZSgpCiAgICAgICAgICAgICByZWZyZXNoRnJvbURpc2soKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6
UmVtb3ZhbDoKLSAgICAgICAgICAgIGNsZWFySW5NZW1vcnlEYXRhKCk7CisgICAgICAgICAgICBj
b3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
YWdlTW9uaXRvciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NDcxLDEyICs0MTEsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN5
bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVkKCkKIAogICAgIHJlZnJlc2hG
cm9tRGlzaygpOwogfQotICAgIAotICAgIAorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAo
KSBjb25zdAogewotICAgIC8vIERvIG5vdGhpbmcKIH0KICNlbmRpZgogCkBAIC00ODksMjAgKzQy
NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRAogICAgIAogICAgIGxvbmcgbG9uZyBmaWxl
U2l6ZSA9IDA7CiAgICAgaWYgKCFnZXRGaWxlU2l6ZShoYW5kbGUsIGZpbGVTaXplKSkgewotICAg
ICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICAgICAgdW5sb2NrQW5kQ2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBz
aXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUs
IGJ5dGVzVG9SZWFkKSkgewotICAgICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgIHNp
emVfdCB0b3RhbEJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogCi0gICAgY2xvc2VBbmRVbmxvY2tGaWxlKGhhbmRsZSk7CisgICAg
dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0g
Ynl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTE1LDE4ICs0NTMsOCBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3Mo
KQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBjb3JlU3RvcmUoKS5pbmNs
dWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwotCi0gICAgc3VibWl0VGVsZW1l
dHJ5SWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIAotICAgIGlmICghc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgaWYgKG1fc2hvdWxk
U3VibWl0VGVsZW1ldHJ5KQorICAgICAgICBzdWJtaXRUZWxlbWV0cnkoKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCkBAIC01NDcs
NyArNDc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50
ZXJhY3Rpb24gPSB0cnVlOwogICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwogCi0gICAgICAgIGNvcmVTdG9yZSgpLmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9
LCBmYWxzZSk7CisgICAgICAgIGNvcmVTdG9yZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6
Tm8pOwogICAgIH0pOwogfQogCkBAIC01NzEsMTAgKzQ5OSw5IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmws
IFdURjo6CiAgICAgfQogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3RlbnRpYWxseSBjcmVhdGluZyBh
IHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihw
cmltYXJ5RG9tYWluKHVybCkpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hh
c0hhZFVzZXJJbnRlcmFjdGlvbiA9IGNvcmVTdG9yZSgpLmhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihzdGF0aXN0aWNzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzSGFkVXNlckludGVy
YWN0aW9uKTsKKyAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSBjb3JlU3RvcmUoKS5o
YXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtoYWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGhhZFVzZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0pOwog
fQpAQCAtNjc1LDI3ICs2MDIsMjggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHMKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewotICAgICAgICBjb3JlU3RvcmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoKTsKKyAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZp
cnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBz
aG91bGRDbGVhckZpcnN0KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rp
bmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVt
b3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1Jl
bW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6
Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNU
b0FkZCwgY2xlYXJGaXJzdCk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1JlbW92ZSA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9SZW1vdmUpLCBkb21h
aW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWlu
c1RvQWRkKSwgc2hvdWxkQ2xlYXJGaXJzdF0geworICAgICAgICBjb3JlU3RvcmUoKS51cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRk
LCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkoKQogeworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1l
bW9yeSgpOwogICAgIH0pOwpAQCAtNzAzLDYgKzYzMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCkKIHsKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGNvcmVTdG9y
ZSgpLmNsZWFySW5NZW1vcnkoKTsKICAgICAgICAgZGVsZXRlU3RvcmVGcm9tRGlzaygpOwpAQCAt
NzQxLDI2ICs2NzAsMTggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCiBib29sIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChtX2RhdGFSZWNvcmRzUmVtb3Zh
bFBlbmRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX2xhc3RUaW1lRGF0
YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25vdG9uaWNUaW1lOjpub3coKSA8IChtX2xhc3RUaW1l
RGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1fbWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKSkKKyAgICBpZiAobV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpCi17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92
ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRp
bmcgPSB0cnVlOworICAgIHJldHVybiAhbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQg
fHwgTW9ub3RvbmljVGltZTo6bm93KCkgPj0gKG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1v
dmVkICsgbV9taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWlu
Z1JlbW92ZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSBmYWxzZTsKKyAgICBtX2RhdGFSZWNv
cmRzQmVpbmdSZW1vdmVkID0gdmFsdWU7CisgICAgaWYgKG1fZGF0YVJlY29yZHNCZWluZ1JlbW92
ZWQpCisgICAgICAgIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCAzM2JmNzE5ZTZiN2E3OTc4OWMxNDk2MzZhZmUwMWIyYTJmYzk2YWE0Li5mMmRk
YmU4YzI3MWRmNmIzMTZhNGQxNzUwYmVjYTQxMTE4ZmMxODc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CkBAIC01NCwxOSArNTQsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKK2VudW0gY2xhc3Mg
U2hvdWxkQ2xlYXJGaXJzdDsKKworLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcg
RmlsZVN5c3RlbSBJL08gdG8gYSBzZXBhcmF0ZSBjbGFzcy4KIGNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVXBkYXRlUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9B
ZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIm
JiB1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSB7IH0pCisgICAgdXNp
bmcgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHN0YXRp
YyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNI
YW5kbGVyID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwotICAgIHN0
YXRpYyB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKKyAgICB2b2lkIHNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkgeyBtX3Nob3Vs
ZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bCB2YWx1ZSkgeyBtX3Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZh
bHVlKSB7IG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFsdWU7IH0KIAogICAgIHZvaWQgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+JiYgb3JpZ2lucyk7CiAKQEAgLTg1LDggKzg4LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKKyAgICB2b2lk
IHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0KTsKICAg
ICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN1Ym1p
dFRlbGVtZXRyeSgpOwogCkBAIC0xMDAsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBVcGRhdGVQYXJ0aXRpb25Db29raWVz
Rm9yRG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVy
JiYpOwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSB7IHJl
dHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQogICAgIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KQEAgLTEyNywxNSArMTMwLDEyIEBA
IHByaXZhdGU6CiAgICAgV2FsbFRpbWUgc3RhdGlzdGljc0ZpbGVNb2RpZmljYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1FeGNsdWRlRnJvbUJh
Y2t1cCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlU3RvcmVGcm9tRGlzaygpOwotICAgIHZvaWQg
Y2xlYXJJbk1lbW9yeURhdGEoKTsKICAgICB2b2lkIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNz
U3RvcmFnZUlmTmVlZGVkKCk7CiAgICAgdm9pZCByZWZyZXNoRnJvbURpc2soKTsKLSAgICB2b2lk
IHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRmls
ZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3Q7CiAgICAgdm9p
ZCBwZXJmb3JtRGFpbHlUYXNrcygpOwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMo
KSBjb25zdDsKLSAgICB2b2lkIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7Ci0gICAgdm9pZCBk
YXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgdm9pZCBzZXREYXRhUmVjb3Jkc0JlaW5nUmVt
b3ZlZChib29sKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZCgpOwpAQCAtMTUyLDEyICsxNTIsMTQgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7CiAgICAgV2FsbFRpbWUgbV9sYXN0
U3RhdGlzdGljc0ZpbGVTeW5jVGltZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFN0YXRpc3Rp
Y3NXcml0ZVRpbWU7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcjsKKyAg
ICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fZGFpbHlU
YXNrc1RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJl
bW92ZWQ7CiAgICAgU2Vjb25kcyBtX21pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bCB7IDFfaCB9OwotICAgIGJvb2wgbV9kYXRhUmVjb3Jkc1JlbW92YWxQZW5kaW5nIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9kaWRTY2hlZHVsZVdyaXRlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3No
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9zaG91bGRTdWJtaXRUZWxlbWV0cnkgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAppbmRleCBhYWM1NDBj
YjM5MjA4MjcwOTk5MGQwZDliNmY5ODdlZTliOGRkZGNjLi5lMTIxMjEzYTlmNWZkNTk1NWE5YTll
ZDBkNWEwN2Y4NWY4ZmYxMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCkBAIC0z
OSw5ICszOSw0OSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotICAgIAotc3RhdGljIGF1dG8gbm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQgPSBmYWxzZTsKLSAgICAKKworY29uc3QgdW5zaWduZWQgbWluaW11bVByZXZhbGVudFJlc291
cmNlc0ZvclRlbGVtZXRyeSA9IDM7CitzdGF0aWMgYm9vbCBub3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCA9IGZhbHNlOworCitzdHJ1Y3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnkgeworICAgIHVuc2lnbmVkIG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQ7CisgICAg
Ym9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb247CisgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uOworICAgIHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnM7Cisg
ICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKKyAgICB1bnNpZ25l
ZCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOworfTsKKworc3RhdGljIFZlY3RvcjxQcmV2
YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnko
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnk+IHNvcnRlZDsKKyAgICBzdG9yZS5wcm9jZXNzU3RhdGlzdGljcyhbJnNvcnRlZF0gKGF1dG8m
IHN0YXRpc3RpYykgeworICAgICAgICBpZiAoIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8PSBX
YWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAyNF9oKTsKKyAgICAgICAgc29ydGVkLmFw
cGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7CisgICAgICAgICAgICBzdGF0aXN0aWMu
ZGF0YVJlY29yZHNSZW1vdmVkLAorICAgICAgICAgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFj
dGlvbiwKKyAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKKyAgICAgICAgICAg
IHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKKyAgICAgICAg
ICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKKyAg
ICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGlmIChzb3J0ZWQuc2l6ZSgpIDwgbWluaW11bVBy
ZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHN0ZDo6c29ydChzb3J0ZWQuYmVnaW4oKSwgc29ydGVkLmVuZCgpLCBbXShjb25zdCBQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSYgYSwgY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkm
IGIpIHsKKyAgICAgICAgcmV0dXJuIGEuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbyA+CisgICAgICAgIGIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbzsKKyAgICB9KTsKKworICAgIHJldHVybiBzb3J0ZWQ7Cit9CisKIHN0YXRpYyB1bnNpZ25l
ZCBudW1iZXJPZlJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24oY29uc3QgVmVjdG9yPFByZXZh
bGVudFJlc291cmNlVGVsZW1ldHJ5PiYgcmVzb3VyY2VzLCBzaXplX3QgYmVnaW4sIHNpemVfdCBl
bmQpCiB7CiAgICAgaWYgKHJlc291cmNlcy5pc0VtcHR5KCkgfHwgcmVzb3VyY2VzLnNpemUoKSA8
IGJlZ2luICsgMSB8fCByZXNvdXJjZXMuc2l6ZSgpIDwgZW5kICsgMSkKQEAgLTE4OCw3ICsyMjgs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFu
ZFN1Ym1pdChjb25zdCBSZXNvdXJjZUxvYWRTdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIAotICAgIGF1dG8gc29ydGVkUHJldmFsZW50UmVzb3VyY2VzID0gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KCk7
CisgICAgYXV0byBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMgPSBzb3J0ZWRQcmV2YWxlbnRSZXNv
dXJjZVRlbGVtZXRyeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwogICAgIGlmIChub3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCAmJiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDApOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYjA3ZWVmZWYzYjZlNmViMjI2MzFkY2MwMGQ3
MWQxZGFjNDk0NmViZC4uN2JjZjY5OTU1YTM0YjczOTNhMDMyMzAyNDFiODNmYzIzMjk1ZjU3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTA5OSwxMCArMTA5OSwxMCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucyhPcHRp
b25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
Ci12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFBy
aXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3Zl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmly
c3QpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRv
cFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0
IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQ
cml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3Vs
ZENsZWFyRmlyc3QpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBz
aG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykpOwogfQogI2VuZGlmCiAK
QEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiAgICAgaWYgKGVuYWJsZWQpIHsK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlz
XSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBb
dGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJz
dCkgewogICAgICAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5
T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZp
cnN0KTsKICAgICAgICAgfSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYWIzNTQzYjNiMjAy
ZWJjMWU4Njc5MDVhOGFlY2Q5MGNjNWVjMjBkNi4uMWFjNWZjZTk2YmFiZWFlMzIzMzJlOWM3ZmUy
ZjZkMWJjZTJmYjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02Miw2ICs2Miw4IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2Vu
ZGlmCiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdCB7IE5vLCBZZXMgfTsKKwogY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBw
dWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBD
b25maWd1cmF0aW9uIHsKQEAgLTEwMSw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zLCBGdW5jdGlvbjx2b2lkKEhh
c2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpOworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9w
UHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qp
OwogI2VuZGlmCiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE3YWFkYjIxZTlhMTJlOTIwNDdjMzkzMWUyYTA4Mzg4MGU4OWI2ZjAuLmEzZjc0NTU5YjgwYTQx
NTc0MzZlZDI2MjUwNWZkMzM1YTFkODkxZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNy0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUg
c29tZSBvZiB0aGUgdGVzdFJ1bm5lciBBUEkgZm9yIGNsYXJpdHkgYW5kIHRvIGJldHRlciBtYXRj
aCB3aGF0IGl0IGNhbGxzCisgICAgICAgIGludGVybmFsbHkuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcp
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JIb3N0KToKKwogMjAxNy0wNy0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSAv
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5k
ZXggNWNhYjhhMjJkMDIwMDY4ZGI1NTM4MTIxZmE4ZWYyMmRiNzQxNjJjNy4uOTM2ZWYzMTZiODFm
NmRiNjc3MWM1MTg2NDgwODg2MWU4MzlmOTdjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CkBAIC0yNjYsOCArMjY2LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBz
ZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyRm9yT25lRG9tYWluKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSk7CisgICAg
dm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdm9pZCBzdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3RyaW5nIGhvc3ROYW1l
LCBib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4gdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggNDM0YzU5MTUzNGVjOGFkYmIxNDA2Njc1Y2ZmODJiMTg4MTZjYWRjNi4uODM3Nzg2ODhh
YzA3MjVkMGRiODBlMjg4MjgwMzMwMjlkMGM1NmQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNDE5LDEzICsx
NDE5LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCBudWxs
cHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIpKTsKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihK
U1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlz
dGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIHZhbHVlKQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtl
eXM7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKQEAgLTE0NDQs
NyArMTQ0NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihKU1N0cmluCiAgICAgICAgIHJhd1ZhbHVlc1tp
XSA9IHZhbHVlc1tpXS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWlu
IikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JIb3N0IikpOwogICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVz
c2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdW
YWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOwogICAgIAogICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGFl
YWFkOTZiNWVmYjE4YmM0NmQxYzMyOGE3NzU4ZjU1ZjVhOGM0MzEuLjUxN2VlYmM0NjdiMGZhYmJl
MDE5NzM1N2RkNjgzZmM1NDAyYzE4MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKCk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sodW5zaWduZWQgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwog
ICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAg
ICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAg
ICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVE
b21haW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSk7CiAgICAgYm9vbCBpc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1Jl
ZiBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA2MDNjNjRhYTNiMTMwOTk1ODE0ZGQ3YmJiOWM4MmFlYWEzYTNkNzkuLjQ0ODY5YmNiY2U5
MzUyYzcwYTU4M2JiNjFiNzQxMjFjOGQxNWE1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzAwLDExICsyMzAwLDExIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKIHsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nKCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Zp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiwg
Ym9vbCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdChXS1N0cmluZ1JlZiwgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGE5YzBhM2I2Y2QxZWJlYzUzZGRlNDNlZTY2ZGI2
MTc2OTQ3NmNiZTAuLjk3NTM2ZTIwNzE1NmU2MjYyYWZiODdjNTU2ZGY3YzI3OTEzNWIxY2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE2Miw4ICsxNjIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5h
bWUsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JI
b3N0KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1No
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyZDc3ODFjMTVmMWZk
NGZlNTdhNGMxOGM1NjZkMjI3Mjc0MTE1OTFhLi4yYzQ0Y2MyN2VhYjJmZDQ3ODBmNzVlMTliZmE5
M2I5NzI5MmE2NmZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTA0MiwxMiArMTA0MiwxMiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyIikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0
YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJG
b3JPbmVEb21haW4iKSkgeworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0Iikp
IHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25h
cnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIAogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9k
eSk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0
KCkpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdmFs
dWVLZXkuZ2V0KCkpKTsKICAgICAgICAgCi0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluKGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMDQ0YWRmZjU5ZTQ5OTdjMDhkYzZj
YzZjZmU2OGJhZDg4ZDdiM2FlMy4uOTI2YzM3NGZiZjc0Mzc0YmYyNTdhZjMzMWM2YWVkM2ExNmFk
YzlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQpAQCAtMzA2LDE0ICszMDYsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc107CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCiB7
Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJdOworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJp
bmcoaG9zdE5hbWUpXTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6
dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07CiB9CiAKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxYTBiOTQ1ZjBmNWY1
NzE4ZTU2N2EzN2FkZTYzYTY2ODc0ODVhZjkuLjAxZjBjZDE3MDRjNWVjZGU3NDk5ZWVkYzUzM2Q3
ZGRlMDJmOTkyNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNy0wOSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVwCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhp
c3RpbmcgbGF5b3V0IHRlc3RzIHRvIHJlZmxlY3QgdGVzdFJ1bm5lciBBUEkgY2hhbmdlcy4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRp
dGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFu
ZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0
aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbDoKKwog
MjAxNy0wNy0wOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT046ICJ2aXNpYmlsaXR5OmhpZGRlbiIgZG9lcyBub3QgaGlkZSBwbGF5IGJ1dHRv
biBmb3IgdmlkZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlv
bmVkLWNvb2tpZS1kZWxldGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5n
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29v
a2llLWRlbGV0aW9uLmh0bWwKaW5kZXggMmRhNDRlMzJiYjMzMzlkNzM0MGE4YTFmYmEwM2Y2MDUz
OTFhODM0OS4uMTE4NmZkZmJkNDdlZDJhZjU2Y2QyMDlkZGJmM2ViMzJkNzZjMjQ2MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKQEAgLTkz
LDcgKzkzLDcgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoZmFsc2UpOwogICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
MCk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKCJsb2NhbGhvc3QiLCB0cnVlKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yT25lRG9tYWluKCJs
b2NhbGhvc3QiLCB0cnVlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlKTsKICAgICAgICAgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0Iikp
CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1j
b29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFy
dGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbAppbmRleCA0OTli
ODQ5NGYwNDI5NTM2MzJmZGZhYjQwZTlmOTE1MTEwYmZhOWIxLi5kNDk0YWUzODg5NzI4Y2VhNTlm
MzI4ZWYwYmRkM2JhN2QxYmM2OTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRp
b25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVk
LWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwK
QEAgLTQwLDcgKzQwLDcgQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiBmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXJBbmRDb250aW51ZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogICAgICAgICBydW5U
ZXN0KCk7CiAgICAgfQogCkBAIC0xMTUsNyArMTE1LDcgQEAKICAgICAgICAgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCiAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogCiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLmh0bWwKaW5kZXggZDliMTI1ZDExMTI3ZWY4MjkzMWU3OWI2YTMxM2NhMzc4MWIzYWIxYi4u
MzBlOGY2ZTRkZGFjYjM0NTRiM2QyNDExNGQ1YTBkOWRmYjE1MmJlYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0
aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
YXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1s
CkBAIC03Myw3ICs3Myw3IEBACiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IHBh
cnRpdGlvbkhvc3QgJiYgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PSAiIiAmJiB3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
dHJ1ZSk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKCJsb2NhbGhvc3QiLCB0cnVlKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yT25lRG9tYWlu
KCJsb2NhbGhvc3QiLCB0cnVlKTsKIAogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314955</attachid>
            <date>2017-07-09 15:00:46 -0700</date>
            <delta_ts>2017-07-10 08:45:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174301-20170709150045.patch</filename>
            <type>text/plain</type>
            <size>74177</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkxMWQ4Njc2YzY1ZDgy
Y2RmYjkxN2Q0YjY2NWI2MzU2NzgwNmI0My4uY2RjOWEzZDdiN2M5OGU2NTVkOGNiZjYzYzUxOWNh
ODI0NmIzMmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4g
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVk
IHNvbWUgZ2VuZXJpYyBmaWxlIHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucyBkb3duIHRvIHBsYXRm
b3JtJ3MgRmlsZVN5c3RlbS5oLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuQW5kTG9ja0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisK
IDIwMTctMDctMDggIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDdXJsXSBTYWZlIGFjY2VzcyBhbmQgbGlmZSBjeWNsZSBtYW5hZ2VtZW50IG9mIGJh
cmUgQ3VybCBoYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZjIwNmU3YTkzNjcwOTcyZTg0OTQ3YzJhZWY3
ZTA5MTk2ODQ4ODRlLi4zZThiNjQ5NWY2ZGRlZWU5NTQyYWVkNmFmNTc3ODMyOWE4OGI4YWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTctMDctMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSAvIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1cAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MzAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhbCBjbGVhbiB1cCBh
bmQgdmFyaW91cyBzaW1wbGlmaWNhdGlvbnMgLyBvcHRpbWl6YXRpb25zIHRvIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBhbmQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIGNsYXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXM6Zm9ySG9zdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZUVuY29kZXJGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cG9wdWxhdGVGcm9tRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVE
YXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWZyZXNoRnJv
bURpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVP
cldyaXRlU3RvcmVUb0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3Jh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBs
YXRmb3JtRXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
clRvcFByaXZhdGVseU93bmVkRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE3LTA3LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAppbmRl
eCAxMzgwMjVhYzM2MjM4MzFmNDE4NzQzNjU5YWNhYTliNDIwZTkyNTE4Li42ZjA4ODM3M2IxODBk
M2M2MzY0NmFjMWJhMThiYzNkMjg4ZmM3YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBP
cmlnaW5Mb2NrOjpsb2NrKCkKICAgICBtX211dGV4LmxvY2soKTsKIAogI2lmIFVTRShGSUxFX0xP
Q0spCi0gICAgbV9sb2NrSGFuZGxlID0gb3BlbkZpbGUobV9sb2NrRmlsZU5hbWUsIE9wZW5Gb3JX
cml0ZSk7CisgICAgbV9sb2NrSGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1l
LCBPcGVuRm9yV3JpdGUpOwogICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkgewogICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGdldCBoZXJlIGlz
IGlmIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgbG9jawogICAgICAgICAvLyBoYXMgYmVl
biBkZWxldGVkIG9yIHdlIHdlcmUgZ2l2ZW4gYSBwYXRoIHRvIGEgbm9uLWV4aXN0YW50IGRpcmVj
dG9yeS4KQEAgLTYwLDggKzYwLDYgQEAgdm9pZCBPcmlnaW5Mb2NrOjpsb2NrKCkKICAgICAgICAg
bV9tdXRleC51bmxvY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGxvY2tGaWxl
KG1fbG9ja0hhbmRsZSwgTG9ja0V4Y2x1c2l2ZSk7CiAjZW5kaWYKIH0KIApAQCAtNzUsOSArNzMs
NyBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSAKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
RmlsZShtX2xvY2tIYW5kbGUpOwotCi0gICAgY2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7CisgICAg
dW5sb2NrQW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7CiAgICAgbV9sb2NrSGFuZGxlID0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDQ1YzQyMzE4ZmQzNTJmNmYzNzIzMmZkYzg3ZGQ4YjhjYWQxMGI0
Y2YuLmMxOTFhMDE5MzZjYmRlOWFiMDllMGNlMTE2MWNiMzEzYzcwOGY1ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0zMjcsNCArMzI3LDI3IEBAIE1hcHBlZEZp
bGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNj
ZXNzKQogI2VuZGlmCiB9CiAKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIEZpbGVMb2NrTW9kZSBsb2Nr
TW9kZSkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG9wZW5Nb2RlKTsKKyAg
ICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVy
biBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworCisjaWYgVVNFKEZJTEVfTE9DSykKKyAgICBi
b29sIGxvY2tlZCA9IGxvY2tGaWxlKGhhbmRsZSwgbG9ja01vZGUpOworICAgIEFTU0VSVF9VTlVT
RUQobG9ja2VkLCBsb2NrZWQpOworI2VuZGlmCisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCit2
b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworI2lm
IFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0ZpbGUoaGFuZGxlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7CisjZW5kaWYKKyAgICBjbG9z
ZUZpbGUoaGFuZGxlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IDdiODlkYzUyYzJhNTIyNTYzZDZkZmZmN2M1NmVlYWRm
ZjA1OGM3YWQuLmFkNTQwNWMzMzkxNmI3NDc0NTRmMDA3MTJmNjE0MjZjNmVmYjg3NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTEzNSw2ICsxMzUsOSBAQCBXRUJDT1JF
X0VYUE9SVCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQogLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3Jp
dHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXRUJDT1JFX0VYUE9SVCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAK
K1dFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3Qg
U3RyaW5nJiwgRmlsZU9wZW5Nb2RlLCBGaWxlTG9ja01vZGUgPSBMb2NrRXhjbHVzaXZlKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7
CisKIC8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0
byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdy
aXRlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBpZiBpdCB3YXMgbm90LgogYm9vbCBhcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOGFhNWU1OTFlYTMyOTkwZDgwODI1NDM5MDQ4NzM0
ZjA5ZDM4ODA5Ny4uNGJhMDc0YTlmYWY2NGNiYjhjZjUxZjEyOWMwNGY1MDIyNDMzYzE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KQEAgLTM1NCwyNSArMzU0LDI1IEBAIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAgICAgc3RvcmUtPnBy
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAotLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcgorLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZwogewogICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgIHN0b3Jl
LT51cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKIH0KIAotLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjoo
Qk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6
KE5TU3RyaW5nICopaG9zdAogewogICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFz
dG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHZhbHVlKQotICAgICAgICBzdG9yZS0+
ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgeyBob3N0IH0sIGZhbHNlKTsK
KyAgICAgICAgc3RvcmUtPnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7
IGhvc3QgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgZWxzZQotICAgICAg
ICBzdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgaG9zdCB9LCB7IH0s
IGZhbHNlKTsKKyAgICAgICAgc3RvcmUtPnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFp
bnMoeyBob3N0IH0sIHsgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7CiB9CiAKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKaW5kZXggYzY3ZWE1ZGRhYjdiODJlMjQwODg3MmYwYmIwMDU4MWVhM2Y4
NGMwYi4uNjI5OTU3NmNlZGU4NjA4YjEwMTcwNTg1ZjU2NzdmNmNmODczNzI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTU4LDggKzU4LDggQEAgdHlwZWRlZiBOU19PUFRJT05T
KE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWw6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEdy
YW5kZmF0aGVyaW5nVGltZTooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25l
RG9tYWluOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2YWx1ZSBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWw6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkMDAzYzYy
ODFlYWE4ZDU0MDJhYTM1YjljYTIyZTAwYWRiZTU1MDU2Li5iMTVhNzA4Njc3MjRmNjRmMGYwYjQ2
NTRmZDc0MTVmNDNjNDQ0NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKIAorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBA
IC0zNSwxMyArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1jb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVs
ZW1ldHJ5ID0gMzsKIGNvbnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93IHsgMzAgfTsK
IGNvbnN0IHVuc2lnbmVkIHN0YXRpc3RpY3NNb2RlbFZlcnNpb24geyA2IH07CiAKLVJlZjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3Jl
YXRlKCkKK1JlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyJiYgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdURk1vdmUo
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7Cit9CisKK1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCisgICAgOiBtX3VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnNIYW5kbGVyKFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWluc0hhbmRsZXIpKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikgY29uc3QKQEAg
LTYzLDYgKzY4LDE1IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc0dyYW5k
RmF0aGVyZWQoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKSBjCiAKICAgICByZXR1cm4gbWFw
RW50cnktPnZhbHVlLmdyYW5kZmF0aGVyZWQ7CiB9CisKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwcmlt
YXJ5RG9tYWluKQoreworICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHByaW1hcnlEb21haW4pOworICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtYXBFbnRyeS0+dmFsdWUpOworfQog
ICAgIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYg
cHJpbWFyeURvbWFpbikKIHsKQEAgLTcyLDggKzg2LDYgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3IKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpLZXlWYWx1ZVBhaXJUeXBlIFN0YXRpc3RpY3NWYWx1
ZTsKLQogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtODEsNyArOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRF
bmNvZGVyPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0
YQogICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigidmVyc2lvbiIsIHN0YXRpc3RpY3NNb2RlbFZl
cnNpb24pOwogICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgiZW5kT2ZHcmFuZGZhdGhlcmluZ1Rp
bWVzdGFtcCIsIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcC5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkpOwogICAgIAotICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoImJyb3dzaW5n
U3RhdGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJlZ2luKCksIG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3Qg
U3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJi
cm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIs
IGNvbnN0IGF1dG8mIG9yaWdpbikgewogICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29k
ZXJJbm5lcik7CiAgICAgfSk7CiAKQEAgLTkyLDcgKzEwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxL
ZXllZEVuY29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZy
b21EYXRhCiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZWFkRGF0YUZyb21EZWNvZGVyKEtleWVkRGVjb2RlciYgZGVjb2RlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwb3B1bGF0ZUZyb21EZWNvZGVyKEtleWVk
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBpZiAoIW1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKSkKQEAgLTE0MSw3ICsxNTMs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rl
cihLZXllZERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFzdWNjZWVkZWQpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCBw
cmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0cnVlKTsKKyAg
ICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgcHJldmFsZW50UmVzb3Vy
Y2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkoKQpA
QCAtMTUwLDM5ICsxNjIsMzIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNs
ZWFySW5NZW1vcnkoKQogICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CiAgICAg
bV9vcGVyYXRpbmdEYXRlcy5jbGVhcigpOwogCi0gICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKHsgfSwgeyB9LCB0cnVlKTsKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zKHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgc3RhdGlzdGljcyBkb2VzIG5vdCBh
bHJlYWR5IGV4aXN0LCBpdCBzZWVtcyBpbmVmZmljaWVudCB0byBjcmVhdGUKLSAgICAgICAgLy8g
YW4gZW1wdHkgb25lIGp1c3QgdG8gbWVyZ2UgdGhlIG5ldyBvbmUgaW50byBpdC4KICAgICAgICAg
YXV0byByZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUoc3RhdGlzdGljLmhp
Z2hMZXZlbERvbWFpbiwgWyZzdGF0aXN0aWNdIHsKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUoc3RhdGlzdGljKTsKICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3RpYyk7CisgICAgICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1l
cmdlKHN0YXRpc3RpYyk7CiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpPiYmIGhhbmRsZXIpCi17Ci0gICAg
bV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRs
ZXIpOwotfQotCiBpbmxpbmUgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGlj
KSBjb25zdAogewogICAgIHJldHVybiBzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAo
IXN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gfHwgV2FsbFRpbWU6Om5vdygpID4gc3RhdGlz
dGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV90aW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9SZW1vdmU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkOwotICAgIAogICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAg
ICAgICBib29sIHNob3VsZFBhcnRpdGlvbiA9IHNob3VsZFBhcnRpdGlvbkNvb2tpZXMocmVzb3Vy
Y2VTdGF0aXN0aWMpOwogICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JD
b29raWVQYXJ0aXRpb25pbmcgJiYgIXNob3VsZFBhcnRpdGlvbikgewpAQCAtMTk4LDIzICsyMDMs
MjEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5z
VG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWlu
c1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmlu
Zz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKLSAgICAgICAgaWYgKG1fc2hvdWxkUGFydGl0
aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQotICAgICAgICAgICAgbV9zaG91bGRQYXJ0aXRp
b25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQs
IGZhbHNlKTsKKyAgICAgICAgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFu
ZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8p
OwogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJG
aXJzdCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hv
dWxkQ2xlYXJGaXJzdCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBp
ZiAoZG9tYWluc1RvUmVtb3ZlLmlzRW1wdHkoKSAmJiBkb21haW5zVG9BZGQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlz
LCBjbGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1Jl
bW92ZSA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9S
ZW1vdmUpLCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46
OmNvcHkoZG9tYWluc1RvQWRkKV0gKCkgewotICAgICAgICBpZiAobV9zaG91bGRQYXJ0aXRpb25D
b29raWVzRm9yRG9tYWluc0hhbmRsZXIpCi0gICAgICAgICAgICBtX3Nob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JEb21haW5zSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xl
YXJGaXJzdCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRDbGVh
ckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1JlbW92ZSA9
IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9SZW1vdmUp
LCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHko
ZG9tYWluc1RvQWRkKV0gKCkgeworICAgICAgICBtX3VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVh
ckZpcnN0KTsKICAgICB9KTsKICAgICAKLSAgICBpZiAoY2xlYXJGaXJzdCkgeworICAgIGlmIChz
aG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykgewogICAgICAgICBmb3Ig
KGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVz
KCkpCiAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRp
dGlvbmluZyA9IGZhbHNlOwogICAgIH0gZWxzZSB7CkBAIC0yNTEsNyArMjU0LDE0IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljcyhjb25zdCBXVEY6
OkZ1bmN0aW9uPHZvaWQoUmVzCiAgICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJjZVN0YXRp
c3RpYyk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRSZWNl
bnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0
aWMpIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRp
c3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik+JiBwcm9jZXNzRnVuY3Rpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICBwcm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VT
dGF0aXN0aWMpOworfQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFk
VW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJl
c291cmNlU3RhdGlzdGljKSBjb25zdAogewogICAgIGlmICghcmVzb3VyY2VTdGF0aXN0aWMuaGFk
VXNlckludGVyYWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODEsNyArMjkxLDcg
QEAgVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluc1RvUmVtb3YKIAogICAgIFZlY3RvcjxTdHJpbmc+IHByZXZhbGVu
dFJlc291cmNlczsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNv
dXJjZSAmJiAhaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpYykgJiYgKCFzaG91
bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkpCisg
ICAgICAgIGlmIChzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhaGFzSGFkVW5leHBp
cmVkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpYykgJiYgKCFzaG91bGRDaGVja0Zvckdy
YW5kZmF0aGVyaW5nIHx8ICFzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkpCiAgICAgICAgICAgICBw
cmV2YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOwogCiAg
ICAgICAgIGlmIChzaG91bGRDbGVhckdyYW5kZmF0aGVyaW5nICYmIHN0YXRpc3RpYy5ncmFuZGZh
dGhlcmVkKQpAQCAtMjkwLDM2ICszMDAsNiBAQCBWZWN0b3I8U3RyaW5nPiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdgogCiAg
ICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKIH0KLSAgICAKLVZlY3RvcjxQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzb3J0ZWRQcmV2
YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0ZWQ7
Ci0gICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1
ZXMoKSkgewotICAgICAgICBpZiAoIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVy
YWN0aW9uID0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIDw9IFdhbGxU
aW1lKCkgPyAwIDogc3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gc3RhdGlzdGljLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSAvIDI0X2gpOwotICAgICAgICBzb3J0ZWQuYXBwZW5k
KFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5IHsKLSAgICAgICAgICAgIHN0YXRpc3RpYy5kYXRh
UmVjb3Jkc1JlbW92ZWQsCi0gICAgICAgICAgICBzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9u
LAotICAgICAgICAgICAgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgc3Rh
dGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpLAotICAgICAgICAgICAg
c3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpLAotICAgICAg
ICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpCi0gICAg
ICAgIH0pOwotICAgIH0KLSAgICAKLSAgICBpZiAoc29ydGVkLnNpemUoKSA8IG1pbmltdW1QcmV2
YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBz
dGQ6OnNvcnQoc29ydGVkLmJlZ2luKCksIHNvcnRlZC5lbmQoKSwgW10oY29uc3QgUHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnkmIGEsIGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiBi
KSB7Ci0gICAgICAgIHJldHVybiBhLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMgKyBhLnN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMgKyBhLnN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8gPgotICAgICAgICBiLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMgKyBiLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMgKyBiLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG87Ci0gICAgfSk7Ci0gICAgCi0gICAgcmV0dXJuIHNvcnRlZDsKLX0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZVN0YXRpc3RpY3NGb3JSZW1vdmVkRGF0YVJlY29y
ZHMoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDU4NDYwNzI1ZjUzNzAyYWI5NjVjZDc4ZWQ4
YmYxOThkMGNmOWQ0MDQuLjFiMWUyMDJiYTQ2MDBmZjc5ZmU1NGNlNjQzMzQ2MGFhNmI1ZjQzZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSwyMiArNDEsMTYgQEAgc3RydWN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3Qg
UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkgewotICAgIHVuc2lnbmVkIG51bWJlck9mVGltZXNE
YXRhUmVjb3Jkc1JlbW92ZWQ7Ci0gICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb247Ci0gICAg
dW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIHN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luczsKLSAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwot
fTsKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdDsKIAogLy8gRklYTUU6IFdlIHNob3VsZCBw
cm9iYWJseSBjb25zaWRlciBtZXJnaW5nIHRoaXMgd2l0aCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZSgpOwor
ICAgIHVzaW5nIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpPjsKKyAg
ICBzdGF0aWMgUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKFVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7
Ci0gICAgdm9pZCByZWFkRGF0YUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVkRGVjb2RlciYpOwor
ICAgIHZvaWQgcG9wdWxhdGVGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY2xlYXJJbk1lbW9yeSgpOwpAQCAtNjUsMzggKzU5LDM3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBib29sIGlzR3JhbmRGYXRoZXJlZChjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBib29sIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmKTsKICAg
ICAKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mJik7CiAKLSAgICB2b2lkIHNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxs
YmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Jl
bW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0
KT4mJik7Ci0KICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc3RkOjpvcHRp
b25hbDxTZWNvbmRzPik7CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShTZWNvbmRzKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKIAot
ICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBj
bGVhckZpcnN0KTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZv
aWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBT
aG91bGRDbGVhckZpcnN0KTsKIAogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+Jik7Cisg
ICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljcyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mKSBjb25zdDsKIAotICAgIGJvb2wg
aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmKSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKTsKLSAgICBWZWN0b3I8UHJldmFsZW50UmVzb3Vy
Y2VUZWxlbWV0cnk+IHNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KCkgY29uc3Q7CiAg
ICAgdm9pZCB1cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VEb21haW5zKTsKIAogICAgIHZvaWQgaGFuZGxl
RnJlc2hTdGFydFdpdGhFbXB0eU9yTm9TdG9yZShIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluc1RvR3JhbmRmYXRoZXIpOwogICAgIHZvaWQgaW5jbHVkZVRvZGF5
QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIAogcHJpdmF0ZToKLSAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVy
JiYpOwogCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKICAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBp
cmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKyAgICBi
b29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgRGVx
dWU8V1RGOjpXYWxsVGltZT4gbV9vcGVyYXRpbmdEYXRlczsKIAotICAgIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgYm9vbCBj
bGVhckZpcnN0KT4gbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXI7Cisg
ICAgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIgbV91cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcjsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uOwogICAgIFNlY29uZHMgbV90aW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggZGEzZmU0MDY5NmJkMjk5ZmZlOWJiMjJhMWU4MGYzMDgzZDk4NWFlMC4uNmNjOWU5NDcxMDVm
ZjMxMDM0N2VlYTEyZjFlOTMxNDc5MDU4MzdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZU1vbml0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KQEAg
LTQ0LDI1ICs0NSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jZGVmaW5lIEVOQUJMRV9NVUxUSVBST0NFU1NfQUNDRVNTX1RPX1NUQVRJU1RJQ1NfU1RPUkUg
MQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZh
bCB7IDVfbWluIH07CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5n
IHByaW1hcnlEb21haW4oY29uc3QgVCYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odmFsdWUpOwogfQogCi1jb25zdGV4cHIgU2Vjb25k
cyBtaW5pbXVtU3RhdGlzdGljc0ZpbGVXcml0ZUludGVydmFsIHsgNV9taW4gfTsKLQotc3RhdGlj
IGJvb2wgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IGZhbHNlOwotc3Rh
dGljIGJvb2wgc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwg
PSB0cnVlOwotc3RhdGljIGF1dG8gc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdHJ1ZTsKLQogc3Rh
dGljIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBkYXRhVHlwZXNUb1JlbW92ZSgp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
PiBkYXRhVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVEYXRhVHlwZT4oewpAQCAt
ODcsMTIgKzgwLDExIEBAIHN0YXRpYyBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYg
ZGF0YVR5cGVzVG9SZW1vdmUoKQogICAgIHJldHVybiBkYXRhVHlwZXM7CiB9CiAKLVdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgVXBkYXRlUGFydGl0
aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKQotICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKSkKK1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
RG9tYWluc0hhbmRsZXImJiB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxl
cikKKyAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWluc0hhbmRsZXIpKSkKICAgICAsIG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1f
c3RhdGlzdGljc1N0b3JhZ2VQYXRoKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCi0g
ICAgLCBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KQot
ICAgICwgbV90ZWxlbWV0cnlSZXBlYXRlZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCisgICAgLCBt
X2RhaWx5VGFza3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTEwMCwzOSArOTIsMjEgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiBy
ZXMKICAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CiAjZW5kaWYKIAotICAgIGlm
ICh1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpIHsKLSAgICAgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxs
YmFjayhbdXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGTW92ZSh1
cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Fk
ZCwgYm9vbCBzaG91bGRDbGVhckZpcnN0KSB7Ci0gICAgICAgICAgICB1cGRhdGVQYXJ0aXRpb25D
b29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNo
b3VsZENsZWFyRmlyc3QpOwotICAgICAgICB9KTsKLSAgICB9Ci0KICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewog
ICAgICAgICByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKICAgICAgICAgc3RhcnRNb25pdG9y
aW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKICAgICB9KTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+
ZGlzcGF0Y2hBZnRlcig1X3MsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICAgICAgaWYgKG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQorICAgICAgICAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KGNvcmVT
dG9yZSgpKTsKKyAgICB9KTsKIAotICAgIG1fdGVsZW1ldHJ5T25lU2hvdFRpbWVyLnN0YXJ0T25l
U2hvdCg1X3MpOwotICAgIG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lci5zdGFydFJlcGVhdGluZygy
NF9oKTsKKyAgICBtX2RhaWx5VGFza3NUaW1lci5zdGFydFJlcGVhdGluZygyNF9oKTsKIH0KIAog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKCkKIHsKIH0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCBhbHdheXMpCi17Ci0g
ICAgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IGFsd2F5czsKLX0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCi17Ci0gICAgc2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB2YWx1ZTsKLX0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFN1Ym1pdFRlbGVt
ZXRyeShib29sIHZhbHVlKQotewotICAgIHNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHZhbHVlOwot
fQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsYXNzaWZ5UmVz
b3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpCiB7CkBAIC0x
NTEsMTUgKzEyNSwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVt
b3ZlRGF0YVJlY29yZHMoKQogICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQo
KTsKKyAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCh0cnVlKTsKIAotICAgIC8vIFN3aXRj
aCB0byB0aGUgbWFpbiB0aHJlYWQgdG8gZ2V0IHRoZSBkZWZhdWx0IHdlYnNpdGUgZGF0YSBzdG9y
ZQogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJldmFsZW50UmVzb3VyY2VEb21haW5z
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KHByZXZhbGVudFJlc291
cmNlRG9tYWlucyksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoZGF0YVR5
cGVzVG9SZW1vdmUoKSwgV1RGTW92ZShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBub3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyldKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgZG9tYWluc1dpdGhE
ZWxldGVkV2Vic2l0ZURhdGEpIG11dGFibGUgewotICAgICAgICAgICAgLy8gQnV0IGFsd2F5cyB0
b3VjaCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdG9yZSBvbiB0aGUgd29ya2VyIHF1ZXVl
LgorICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1Rv
UmVtb3ZlKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbV9zaG91bGROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgZG9tYWluc1dp
dGhEZWxldGVkV2Vic2l0ZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdG9wRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPEhhc2hTZXQ8U3RyaW5nPj46OmNv
cHkoZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBjb3JlU3RvcmUoKS51cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRz
KHRvcERvbWFpbnMpOwotICAgICAgICAgICAgICAgIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsK
KyAgICAgICAgICAgICAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChmYWxzZSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xNjgsMTQgKzE0MCwxNCBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKQogewogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSB7Ci0gICAgICAgIGlmIChzaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCkgeworICAgICAgICBpZiAo
bV9zaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCkgewogICAg
ICAgICAgICAgY29yZVN0b3JlKCkucHJvY2Vzc1N0YXRpc3RpY3MoW3RoaXNdIChSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgewogICAgICAgICAgICAgICAgIGNsYXNz
aWZ5UmVzb3VyY2UocmVzb3VyY2VTdGF0aXN0aWMpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KICAgICAgICAgcmVtb3ZlRGF0YVJlY29yZHMoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChu
b3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKSB7CisgICAgICAgIGlmIChtX3No
b3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQpIHsKICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgICAgICAgICAgV2ViUHJvY2Vz
c1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKCk7CiAg
ICAgICAgICAgICB9KTsKQEAgLTE5MCwyMCArMTYyLDE5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2Vi
Q29yCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBjb3JlU3RvcmUoKS5t
ZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShvcmlnaW5zKSk7Ci0gICAgLy8gRmlyZSBiZWZvcmUgcHJv
Y2Vzc2luZyBzdGF0aXN0aWNzIHRvIHByb3BhZ2F0ZSB1c2VyCi0gICAgLy8gaW50ZXJhY3Rpb24g
YXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIGNvcmVTdG9y
ZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgIC8vIEZpcmUgYmVm
b3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNlciBpbnRlcmFjdGlvbiBh
cyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisgICAgY29yZVN0b3Jl
KCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCkKIHsKLSAgICAvLyBTd2l0Y2ggdG8gdGhl
IG1haW4gdGhyZWFkIHRvIGdldCB0aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3RvcmUKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBub3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIChIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAvLyBCdXQgYWx3YXlzIHRvdWNoIHRo
ZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0b3JlIG9uIHRoZSB3b3JrZXIgcXVldWUKLSAgICAg
ICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxIYXNoU2V0
PFN0cmluZz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVE
YXRhKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29yZVN0
b3JlKCkuaGFuZGxlRnJlc2hTdGFydFdpdGhFbXB0eU9yTm9TdG9yZShXVEZNb3ZlKHRvcERvbWFp
bnMpKTsKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBtX3Nob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxIYXNoU2V0PFN0cmlu
Zz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29yZVN0b3JlKCkuaGFuZGxlRnJlc2hTdGFy
dFdpdGhFbXB0eU9yTm9TdG9yZShXVEZNb3ZlKHRvcERvbWFpbnMpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTI0OCw3ICsyMTksNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCkKICAgICB9
CiAKICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7Ci0gICAgY29yZVN0b3JlKCkucmVh
ZERhdGFGcm9tRGVjb2RlcigqZGVjb2Rlcik7CisgICAgY29yZVN0b3JlKCkucG9wdWxhdGVGcm9t
RGVjb2RlcigqZGVjb2Rlcik7CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0g
cmVhZFRpbWU7CiAKQEAgLTI3OCw3ICsyNDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVmcmVzaEZyb21EaXNrKCkKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJvbURlY29kZXIoKmRlY29kZXIp
OworICAgIGNvcmVTdG9yZSgpLnBvcHVsYXRlRnJvbURlY29kZXIoKmRlY29kZXIpOwogICAgIG1f
bGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWUgPSByZWFkVGltZTsKIH0KICAgICAKQEAgLTI5NSwx
MiArMjY2LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNz
RGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWluYXRlKCkKIHsKICAgICBCaW5h
cnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIC8vIE1ha2Ugc3VyZSBhbnkgcGVuZGluZyB3b3Jr
IGluIG91ciBxdWV1ZSBpcyBmaW5pc2hlZCBiZWZvcmUgd2UgdGVybWluYXRlLgogICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbJnNlbWFwaG9yZSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIC8vIFdyaXRlIGZpbmFsIGZpbGUgc3RhdGUgdG8g
ZGlzay4KICAgICAgICAgaWYgKG1fZGlkU2NoZWR1bGVXcml0ZSkKICAgICAgICAgICAgIHdyaXRl
U3RvcmVUb0Rpc2soKTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgYW55IG9uZ29pbmcgd29yayBp
biBvdXIgcXVldWUgaXMgZmluaXNoZWQgYmVmb3JlIHdlIHRlcm1pbmF0ZS4KICAgICAgICAgc2Vt
YXBob3JlLnNpZ25hbCgpOwogICAgIH0pOwogICAgIHNlbWFwaG9yZS53YWl0KFdhbGxUaW1lOjpp
bmZpbml0eSgpKTsKQEAgLTMxNyw3ICsyODgsNyBAQCBTdHJpbmcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvZ0ZpbGVQYXRoKCkgY29uc3QKICAgICBpZiAoc3RhdGlz
dGljc1N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKLSAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhpcyBmaWxlCisgICAgLy8gRklY
TUU6IERlY2lkZSB3aGF0IHRvIGNhbGwgdGhpcyBmaWxlLgogICAgIHJldHVybiBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoc3RhdGlzdGljc1N0b3JhZ2VQYXRoLCAiZnVsbF9icm93c2luZ19zZXNz
aW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiB9CiAKQEAgLTMzMiw3ICszMDMsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzaygpCiAgICAgYXV0
byBlbmNvZGVyID0gY29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CiAKICAgICBT
dHJpbmcgcmVzb3VyY2VMb2cgPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7Ci0gICAgd3JpdGVFbmNv
ZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCByZXNvdXJjZUxvZyk7CisgICAgd3JpdGVFbmNvZGVy
VG9EaXNrKCplbmNvZGVyLCByZXNvdXJjZUxvZyk7CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmls
ZVN5bmNUaW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTM0OSw4ICszMjAsOCBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVPcldyaXRlU3RvcmVUb0Rpc2soKQog
ICAgIGlmICh0aW1lU2luY2VMYXN0V3JpdGUgPCBtaW5pbXVtU3RhdGlzdGljc0ZpbGVXcml0ZUlu
dGVydmFsKSB7CiAgICAgICAgIGlmICghbV9kaWRTY2hlZHVsZVdyaXRlKSB7CiAgICAgICAgICAg
ICBtX2RpZFNjaGVkdWxlV3JpdGUgPSB0cnVlOwotICAgICAgICAgICAgU2Vjb25kcyBkZWxheVVu
dGlsID0gbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5jZUxhc3RX
cml0ZSArIDFfczsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaEFmdGVy
KGRlbGF5VW50aWwsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgICAgIFNlY29uZHMgZGVsYXkgPSBtaW5pbXVtU3RhdGlzdGljc0ZpbGVXcml0ZUludGVy
dmFsIC0gdGltZVNpbmNlTGFzdFdyaXRlICsgMV9zOworICAgICAgICAgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoQWZ0ZXIoZGVsYXksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQpAQCAtMzYwLDMxICszMzEsNiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVPcldyaXRlU3RvcmVUb0Rpc2soKQogICAgIHdy
aXRlU3RvcmVUb0Rpc2soKTsKIH0KIAotc3RhdGljIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5k
TG9ja0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKLXsKLSAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBh
dGgsIG1vZGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
LSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0KLSNpZiBFTkFCTEUo
TVVMVElQUk9DRVNTX0FDQ0VTU19UT19TVEFUSVNUSUNTX1NUT1JFKQotICAgIGJvb2wgbG9ja2Vk
ID0gbG9ja0ZpbGUoaGFuZGxlLCBXZWJDb3JlOjpMb2NrRXhjbHVzaXZlKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGxvY2tlZCwgbG9ja2VkKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGhhbmRsZTsKLX0K
LQotc3RhdGljIHZvaWQgY2xvc2VBbmRVbmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0jaWYgRU5BQkxFKE1VTFRJ
UFJPQ0VTU19BQ0NFU1NfVE9fU1RBVElTVElDU19TVE9SRSkKLSAgICBib29sIHVubG9ja2VkID0g
dW5sb2NrRmlsZShoYW5kbGUpOwotICAgIEFTU0VSVF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2Vk
KTsKLSNlbmRpZgotICAgIGNsb3NlRmlsZShoYW5kbGUpOwotfQotCiB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVyVG9EaXNrKEtleWVkRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtNDA0LDcgKzM1MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9G
aWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOwotICAgIGNsb3Nl
QW5kVW5sb2NrRmlsZShoYW5kbGUpOworICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwog
CiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRhLT5z
aXplKCkpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOiBXZSBvbmx5IHdyb3RlICVkIG91dCBv
ZiAlZCBieXRlcyB0byBkaXNrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdyaXR0ZW5CeXRlcyks
IHJhd0RhdGEtPnNpemUoKSk7CkBAIC00MjMsMTIgKzM2OSw2IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVTdG9yZUZyb21EaXNrKCkKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlVuYWJsZSB0byBkZWxldGUgc3Rh
dGlzdGljcyBmaWxlOiAlcyIsIHJlc291cmNlTG9nUGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlEYXRhKCkK
LXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBjb3JlU3RvcmUoKS5jbGVh
ckluTWVtb3J5KCk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
dGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC00NDYsNyArMzg2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCkKICAgICAgICAg
ICAgIHJlZnJlc2hGcm9tRGlzaygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpSZW1vdmFsOgotICAgICAgICAgICAgY2xlYXJJ
bk1lbW9yeURhdGEoKTsKKyAgICAgICAgICAgIGNvcmVTdG9yZSgpLmNsZWFySW5NZW1vcnkoKTsK
ICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JhZ2VNb25pdG9yID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00NzEsMTIgKzQxMSwxMCBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3luY1dpdGhFeGlzdGluZ1N0YXRpc3RpY3NTdG9y
YWdlSWZOZWVkZWQoKQogCiAgICAgcmVmcmVzaEZyb21EaXNrKCk7CiB9Ci0gICAgCi0gICAgCisK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cGxhdGZvcm1FeGNsdWRlRnJvbUJhY2t1cCgpIGNvbnN0CiB7Ci0gICAgLy8gRG8gbm90aGlu
ZwogfQogI2VuZGlmCiAKQEAgLTQ4OSwyMCArNDI3LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXll
ZERlY29kZXI+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRGVjb2RlckZy
b21ECiAgICAgCiAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKICAgICBpZiAoIWdldEZpbGVT
aXplKGhhbmRsZSwgZmlsZVNpemUpKSB7Ci0gICAgICAgIGNsb3NlQW5kVW5sb2NrRmlsZShoYW5k
bGUpOworICAgICAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIAogICAgIHNpemVfdCBieXRlc1RvUmVhZDsKICAgICBpZiAo
IVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgYnl0ZXNUb1JlYWQpKSB7Ci0gICAgICAgIGNs
b3NlQW5kVW5sb2NrRmlsZShoYW5kbGUpOworICAgICAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gcmVhZEZy
b21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBjbG9z
ZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsK
IAogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01MTUsMTggKzQ1Myw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcygpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIGNvcmVTdG9yZSgpLmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVj
ZXNzYXJ5KCk7Ci0KLSAgICBzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5SWZOZWNlc3Nh
cnkoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgCi0gICAgaWYgKCFz
aG91bGRTdWJtaXRUZWxlbWV0cnkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzdWJtaXRU
ZWxlbWV0cnkoKTsKKyAgICBpZiAobV9zaG91bGRTdWJtaXRUZWxlbWV0cnkpCisgICAgICAgIHN1
Ym1pdFRlbGVtZXRyeSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c3VibWl0VGVsZW1ldHJ5KCkKQEAgLTU0Nyw3ICs0NzUsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQog
ICAgICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgICAgIHN0
YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7
CiAKLSAgICAgICAgY29yZVN0b3JlKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KHsgcHJpbWFyeURvbWFpblN0cmluZyB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgY29yZVN0b3Jl
KCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IHByaW1hcnlEb21haW5TdHJp
bmcgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgfSk7CiB9CiAKQEAgLTU3MSwx
MCArNDk5LDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCwgV1RGOjoKICAgICB9CiAKICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlp
bmc/Ci0gICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaGFzSGFkVXNlckludGVyYWN0aW9uID0gY29yZVN0
b3JlKCkuaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihoYXNIYWRVc2VySW50ZXJhY3Rpb24pOworICAgICAgICBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiA9IGNvcmVTdG9yZSgpLmhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihw
cmltYXJ5RG9tYWluKHVybCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hh
ZFVzZXJJbnRlcmFjdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0geworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFkVXNlckludGVyYWN0
aW9uKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC02NzUsMjcgKzYwMiwyOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKGNvbnN0IFVSTCYgcwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91
bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgICAgICBjb3JlU3RvcmUoKS51
cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0
b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmly
c3RdIHsKLSAgICAgICAgY29yZVN0b3JlKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKKyAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+
Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVy
PFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBzaG91bGRDbGVhckZpcnN0XSB7
CisgICAgICAgIGNvcmVTdG9yZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMo
ZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwogICAgIH0p
OwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9y
eSgpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewog
ICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CiAgICAgfSk7CkBAIC03MDMsNiAr
NjMxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1v
cnkoKQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
bV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwogICAgICAg
ICBkZWxldGVTdG9yZUZyb21EaXNrKCk7CkBAIC03NDEsMjYgKzY3MCwxOCBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMg
c2Vjb25kcykKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3JkcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgaWYgKG1fZGF0YVJlY29yZHNSZW1vdmFsUGVuZGluZykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkICYmIE1vbm90
b25pY1RpbWU6Om5vdygpIDwgKG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkICsgbV9t
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpKQorICAgIGlmIChtX2RhdGFSZWNv
cmRzQmVpbmdSZW1vdmVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRhdGFSZWNvcmRz
QmVpbmdSZW1vdmVkKCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBt
X2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwot
ICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVuZGluZyA9IHRydWU7CisgICAgcmV0dXJuICFtX2xh
c3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCB8fCBNb25vdG9uaWNUaW1lOjpub3coKSA+PSAo
bV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBtX21pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChib29sIHZhbHVlKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVu
ZGluZyA9IGZhbHNlOworICAgIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgPSB2YWx1ZTsKKyAg
ICBpZiAobV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCkKKyAgICAgICAgbV9sYXN0VGltZURhdGFS
ZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDMzYmY3MTllNmI3YTc5Nzg5
YzE0OTYzNmFmZTAxYjJhMmZjOTZhYTQuLmYyZGRiZThjMjcxZGY2YjMxNmE0ZDE3NTBiZWNhNDEx
MThmYzE4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTU0LDE5ICs1NCwyMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKIAorZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OworCisvLyBGSVhN
RTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBGaWxlU3lzdGVtIEkvTyB0byBhIHNlcGFyYXRl
IGNsYXNzLgogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICB1c2luZyBVcGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRDbGVhckZpcnN0KT47
Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0ZVBhcnRp
dGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JE
b21haW5zSGFuZGxlciA9IHsgfSkKKyAgICB1c2luZyBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBT
aG91bGRDbGVhckZpcnN0KT47CisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIgPSB7IH0pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh1cGRhdGVQYXJ0aXRpb25Db29r
aWVzRm9yRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkp
OwogICAgIH0KIAogICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKIAotICAg
IHN0YXRpYyB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRh
UmVjb3Jkc1JlbW92YWwoYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVs
ZW1ldHJ5KGJvb2wpOworICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sIHZhbHVlKSB7IG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZhbHVlKSB7IG1fc2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpIHsgbV9zaG91bGRTdWJtaXRUZWxlbWV0
cnkgPSB2YWx1ZTsgfQogCiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKTsKIApAQCAt
ODUsOCArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0
b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFt
ZSk7CiAgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29y
ZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRUbyk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAg
ICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIGNsZWFyRmlyc3QpOworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7
CisgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7CiAKQEAgLTEwMCw3ICsx
MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7
CiAKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0
cmluZyYsIFVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciYmKTsKKyAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiwgVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJik7CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmdldCgpOyB9CiAgICAgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBj
b3JlU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5n
ZXQoKTsgfQpAQCAtMTI3LDE1ICsxMzAsMTIgQEAgcHJpdmF0ZToKICAgICBXYWxsVGltZSBzdGF0
aXN0aWNzRmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3Q7CiAg
ICAgdm9pZCBwbGF0Zm9ybUV4Y2x1ZGVGcm9tQmFja3VwKCkgY29uc3Q7CiAgICAgdm9pZCBkZWxl
dGVTdG9yZUZyb21EaXNrKCk7Ci0gICAgdm9pZCBjbGVhckluTWVtb3J5RGF0YSgpOwogICAgIHZv
aWQgc3luY1dpdGhFeGlzdGluZ1N0YXRpc3RpY3NTdG9yYWdlSWZOZWVkZWQoKTsKICAgICB2b2lk
IHJlZnJlc2hGcm9tRGlzaygpOwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5SWZOZWNlc3Nhcnko
KTsKICAgICBib29sIGhhc1N0YXRpc3RpY3NGaWxlQ2hhbmdlZFNpbmNlTGFzdFN5bmMoY29uc3Qg
U3RyaW5nJiBwYXRoKSBjb25zdDsKICAgICB2b2lkIHBlcmZvcm1EYWlseVRhc2tzKCk7CiAgICAg
Ym9vbCBzaG91bGRSZW1vdmVEYXRhUmVjb3JkcygpIGNvbnN0OwotICAgIHZvaWQgZGF0YVJlY29y
ZHNCZWluZ1JlbW92ZWQoKTsKLSAgICB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsKKyAg
ICB2b2lkIHNldERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CkBAIC0xNTIs
MTIgKzE1MiwxNCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX3N0YXRpc3RpY3NTdG9y
YWdlUGF0aDsKICAgICBXYWxsVGltZSBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lOwogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0U3RhdGlzdGljc1dyaXRlVGltZTsKLSAgICBSdW5Mb29wOjpU
aW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1ldHJ5T25lU2hvdFRp
bWVyOwotICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4g
bV90ZWxlbWV0cnlSZXBlYXRlZFRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9kYWlseVRhc2tzVGltZXI7CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZDsKICAgICBTZWNvbmRzIG1fbWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIHsgMV9oIH07Ci0gICAgYm9vbCBtX2RhdGFS
ZWNvcmRzUmVtb3ZhbFBlbmRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kYXRhUmVjb3Jkc0Jl
aW5nUmVtb3ZlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFNjaGVkdWxlV3JpdGUgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN1Ym1pdFRlbGVt
ZXRyeSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwCmluZGV4IGFhYzU0MGNiMzkyMDgyNzA5OTkwZDBkOWI2Zjk4N2VlOWI4
ZGRkY2MuLmUxMjEyMTNhOWY1ZmQ1OTU1YTlhOWVkMGQ1YTA3Zjg1ZjhmZjExNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKQEAgLTM5LDkgKzM5LDQ5IEBACiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi1zdGF0aWMgYXV0byBub3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9IGZhbHNlOwotICAgIAorCitjb25zdCB1
bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKK3N0YXRp
YyBib29sIG5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkID0gZmFsc2U7CisKK3N0
cnVjdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZU
aW1lc0RhdGFSZWNvcmRzUmVtb3ZlZDsKKyAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbjsK
KyAgICB1bnNpZ25lZCBkYXlzU2luY2VVc2VySW50ZXJhY3Rpb247CisgICAgdW5zaWduZWQgc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKKyAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zOworICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG87Cit9OworCitzdGF0aWMgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0
ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmIHN0b3JlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFZl
Y3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOworICAgIHN0b3JlLnByb2Nl
c3NTdGF0aXN0aWNzKFsmc29ydGVkXSAoYXV0byYgc3RhdGlzdGljKSB7CisgICAgICAgIGlmICgh
c3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uID0gc3RhdGlzdGljLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIDw9IFdhbGxUaW1lKCkgPyAwIDogc3RkOjpmbG9vcigo
V2FsbFRpbWU6Om5vdygpIC0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
KSAvIDI0X2gpOworICAgICAgICBzb3J0ZWQuYXBwZW5kKFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5IHsKKyAgICAgICAgICAgIHN0YXRpc3RpYy5kYXRhUmVjb3Jkc1JlbW92ZWQsCisgICAgICAg
ICAgICBzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uLAorICAgICAgICAgICAgZGF5c1NpbmNl
VXNlckludGVyYWN0aW9uLAorICAgICAgICAgICAgc3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnMuc2l6ZSgpLAorICAgICAgICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpLAorICAgICAgICAgICAgc3RhdGlzdGljLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpCisgICAgICAgIH0pOworICAgIH0pOworCisgICAg
aWYgKHNvcnRlZC5zaXplKCkgPCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgc3RkOjpzb3J0KHNvcnRlZC5iZWdpbigpLCBz
b3J0ZWQuZW5kKCksIFtdKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiBhLCBjb25z
dCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYikgeworICAgICAgICByZXR1cm4gYS5zdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zICsgYS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID4KKyAgICAgICAgYi5zdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
ICsgYi5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOworICAgIH0pOworCisgICAgcmV0dXJu
IHNvcnRlZDsKK30KKwogc3RhdGljIHVuc2lnbmVkIG51bWJlck9mUmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbihjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiByZXNv
dXJjZXMsIHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkKIHsKICAgICBpZiAocmVzb3VyY2VzLmlz
RW1wdHkoKSB8fCByZXNvdXJjZXMuc2l6ZSgpIDwgYmVnaW4gKyAxIHx8IHJlc291cmNlcy5zaXpl
KCkgPCBlbmQgKyAxKQpAQCAtMTg4LDcgKzIyOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KGNvbnN0IFJlc291cmNlTG9hZFN0
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgYXV0byBzb3J0
ZWRQcmV2YWxlbnRSZXNvdXJjZXMgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuc29ydGVk
UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoKTsKKyAgICBhdXRvIHNvcnRlZFByZXZhbGVudFJl
c291cmNlcyA9IHNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KHJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSk7CiAgICAgaWYgKG5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkICYmIHNvcnRlZFByZXZhbGVudFJlc291cmNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgbm90
aWZ5UGFnZXMoMCwgMCwgMCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCBiMDdlZWZlZjNiNmU2ZWIyMjYzMWRjYzAwZDcxZDFkYWM0OTQ2ZWJkLi43YmNmNjk5NTVhMzRi
NzM5M2EwMzIzMDI0MWI4M2ZjMjMyOTVmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xMDk5
LDEwICsxMDk5LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YUZvclRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzCiB9CiAKICNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6dXBk
YXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkKIHsKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQ
b29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhkb21haW5z
VG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCkpOworICAgICAgICBwcm9j
ZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9t
YWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xl
YXJGaXJzdDo6WWVzKSk7CiB9CiAjZW5kaWYKIApAQCAtMTI2Myw3ICsxMjYzLDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVu
YWJsZWQpCiAKICAgICBpZiAoZW5hYmxlZCkgewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgW3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpIHsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hv
dWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CiAgICAgICAgICAgICB1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3Zl
LCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwogICAgICAgICB9KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAppbmRleCBhYjM1NDNiM2IyMDJlYmMxZTg2NzkwNWE4YWVjZDkwY2M1ZWMyMGQ2
Li4xYWM1ZmNlOTZiYWJlYWUzMjMzMmU5YzdmZTJmNmQxYmNlMmZiMTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTYyLDYgKzYyLDggQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwog
c3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKIAorZW51bSBjbGFzcyBTaG91bGRDbGVh
ckZpcnN0IHsgTm8sIFllcyB9OworCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBXZWJQcm9jZXNzTGlmZXRpbWVPYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewpAQCAtMTAxLDcgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhRmV0Y2hPcHRpb24+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnMsIEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQot
ICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21h
aW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgdm9pZCB1
cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk7CiAjZW5kaWYKICAgICB2b2lkIHJlc29sdmVE
aXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdhYWRiMjFlOWExMmU5MjA0N2MzOTMxZTJh
MDgzODgwZTg5YjZmMC4uYTNmNzQ1NTliODBhNDE1NzQzNmVkMjYyNTA1ZmQzMzVhMWQ4OTFkZSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE3LTA3LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBzb21lIG9mIHRoZSB0ZXN0UnVubmVyIEFQSSBm
b3IgY2xhcml0eSBhbmQgdG8gYmV0dGVyIG1hdGNoIHdoYXQgaXQgY2FsbHMKKyAgICAgICAgaW50
ZXJuYWxseS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
dGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorCiAyMDE3LTA3LTA4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA1Y2FiOGEyMmQwMjAwNjhkYjU1MzgxMjFm
YThlZjIyZGI3NDE2MmM3Li45MzZlZjMxNmI4MWY2ZGI2NzcxYzUxODY0ODA4ODYxZTgzOWY5N2M0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI2Niw4ICsyNjYsOCBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGlj
c1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oRE9NU3RyaW5nIGhv
c3ROYW1lLCBib29sZWFuIHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQ
YXJ0aXRpb25pbmcoKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9ySG9zdChET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQg
c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoYm9vbGVhbiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA0MzRjNTkxNTM0ZWM4YWRiYjE0MDY2
NzVjZmY4MmIxODgxNmNhZGM2Li44Mzc3ODY4OGFjMDcyNWQwZGI4MGUyODgyODAzMzAyOWQwYzU2
ZDg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTE0MTksMTMgKzE0MTksMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpCiAgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQordm9pZCBUZXN0
UnVubmVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nIikpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCBudWxs
cHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlKQordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
c0Zvckhvc3QoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgVmVjdG9y
PFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8
V0tUeXBlUmVmPj4gdmFsdWVzOwpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBUZXN0UnVubmVy
OjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWlu
KEpTU3RyaW4KICAgICAgICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOwogICAgIH0K
ICAgICAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QiKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25h
cnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgp
KSk7CiAgICAgCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggYWVhYWQ5NmI1ZWZiMThiYzQ2ZDFjMzI4YTc3NThm
NTVmNWE4YzQzMS4uNTE3ZWViYzQ2N2IwZmFiYmUwMTk3MzU3ZGQ2ODNmYzU0MDJjMTgyZiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGlkU2Nh
bkRhdGFSZWNvcmRzQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0
cnlDYWxsYmFjayh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90
YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihKU1N0cmluZ1JlZiBob3N0TmFtZSwg
Ym9vbCB2YWx1ZSk7CisgICAgdm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5n
KCk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
SlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc3RhdGlzdGljc1N1
Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICBib29sIGlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDYwM2M2NGFhM2IxMzA5OTU4MTRkZDdi
YmI5YzgyYWVhYTNhM2Q3OS4uNDQ4NjliY2JjZTkzNTJjNzBhNTgzYmI2MWI3NDEyMWM4ZDE1YTVk
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIzMDAs
MTEgKzIzMDAsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogewogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0
aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKQogewogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmLCBib29sKQordm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmLCBi
b29sKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXgg
YTljMGEzYjZjZDFlYmVjNTNkZGU0M2VlNjZkYjYxNzY5NDc2Y2JlMC4uOTc1MzZlMjA3MTU2ZTYy
NjJhZmI4N2M1NTZkZjdjMjc5MTM1YjFjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaApAQCAtMTYyLDggKzE2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25k
cyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcygp
OwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZv
ck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBz
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdm9pZCBzdGF0aXN0aWNz
U2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpOwogICAgIHZvaWQgc3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCmluZGV4IDJkNzc4MWMxNWYxZmQ0ZmU1N2E0YzE4YzU2NmQyMjcyNzQxMTU5MWEu
LjJjNDRjYzI3ZWFiMmZkNDc4MGY3NWUxOWJmYTkzYjk3MjkyYTY2ZmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMDQyLDEyICsxMDQyLDEyIEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0
YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIiKSkgewotICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc0ZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbiIpKSB7CisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzU2V0U2hv
dWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKICAgICAgICAgCiAg
ICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2Fz
dDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOwogICAgICAgICBXS0Jvb2xlYW5SZWYg
dmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB2YWx1ZUtleS5nZXQoKSkpOwogICAgICAgICAKLSAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oaG9zdE5hbWUsIFdLQm9vbGVhbkdldFZh
bHVlKHZhbHVlKSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoaG9zdE5hbWUsIFdLQm9vbGVhbkdl
dFZhbHVlKHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCAwNDRhZGZmNTllNDk5N2MwOGRjNmNjNmNmZTY4YmFkODhkN2IzYWUzLi45MjZjMzc0
ZmJmNzQzNzRiZjI1N2FmMzMxYzZhZWQzYTE2YWRjOWQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMDYsMTQgKzMw
NiwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcygpCiAgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFS
ZWNvcmRzXTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
VXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcl07CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmddOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1NldFNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQog
ewotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25l
RG9tYWluOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9z
dE5hbWUpXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1N1Ym1pdFRlbGVt
ZXRyeSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzFhMGI5NDVmMGY1ZjU3MThlNTY3YTM3YWRlNjNhNjY4NzQ4NWFmOS4u
MDFmMGNkMTcwNGM1ZWNkZTc0OTllZWRjNTMzZDdkZGUwMmY5OTI0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE3LTA3LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRnVydGhlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NDMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBsYXlvdXQgdGVzdHMgdG8gcmVmbGVj
dCB0ZXN0UnVubmVyIEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5n
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29v
a2llLWRlbGV0aW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgt
cGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhv
dXQtdXNlci1pbnRlcmFjdGlvbi5odG1sOgorCiAyMDE3LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogInZpc2liaWxpdHk6aGlk
ZGVuIiBkb2VzIG5vdCBoaWRlIHBsYXkgYnV0dG9uIGZvciB2aWRlbyBlbGVtZW50cwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0
aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRpb24uaHRtbAppbmRleCAyZGE0
NGUzMmJiMzMzOWQ3MzQwYThhMWZiYTAzZjYwNTM5MWE4MzQ5Li4xMTg2ZmRmYmQ0N2VkMmFmNTZj
ZDIwOWRkYmYzZWIzMmQ3NmMyNDYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRp
b25lZC1jb29raWUtZGVsZXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
YWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25l
ZC1jb29raWUtZGVsZXRpb24uaHRtbApAQCAtOTMsNyArOTMsNyBAQAogICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChmYWxzZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oImxv
Y2FsaG9zdCIsIHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JPbmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUpOwogICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9z
dCIsIHRydWUpOwogICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1l
b3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRp
b25pbmctdGltZW91dC5odG1sCmluZGV4IDQ5OWI4NDk0ZjA0Mjk1MzYzMmZkZmFiNDBlOWY5MTUx
MTBiZmE5YjEuLmQ0OTRhZTM4ODk3MjhjZWE1OWYzMjhlZjBiZGQzYmE3ZDFiYzY5NmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmlu
Zy10aW1lb3V0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdp
dGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbApAQCAtNDAsNyArNDAsNyBAQAogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckFuZENvbnRpbnVl
KCkgewotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nKCk7CiAgICAgICAgIHJ1blRlc3QoKTsKICAgICB9CiAKQEAgLTExNSw3ICsx
MTUsNyBAQAogICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qg
ZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKIAotICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAK
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdp
dGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13
aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAppbmRleCBkOWIxMjVkMTExMjdl
ZjgyOTMxZTc5YjZhMzEzY2EzNzgxYjNhYjFiLi4zMGU4ZjZlNGRkYWNiMzQ1NGIzZDI0MTE0ZDVh
MGQ5ZGZiMTUyYmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhv
dXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9h
ZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQt
d2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKQEAgLTczLDcgKzczLDcgQEAKICAgICBpZiAo
ZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID09ICIiICYmIHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMp
IHsKICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4o
ImxvY2FsaG9zdCIsIHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JPbmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUpOwogCiAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314983</attachid>
            <date>2017-07-10 08:45:22 -0700</date>
            <delta_ts>2017-07-10 09:17:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174301-20170710084521.patch</filename>
            <type>text/plain</type>
            <size>74209</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OTBmZTI0YjAzOTVm
ODQzMzhiZTQyYTg5MzNiZTMyNDJjYmRiNy4uNDQ4MzU4YzlkMWQ1MjBjOTY4YWM5MmFjOGIzM2Uz
MjViYWI1MDNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4g
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVk
IHNvbWUgZ2VuZXJpYyBmaWxlIHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucyBkb3duIHRvIHBsYXRm
b3JtJ3MgRmlsZVN5c3RlbS5oLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuQW5kTG9ja0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisK
IDIwMTctMDctMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtTT1VQXSBTb3VwQ29va2llSmFyIGlzIG5ldmVyIHJlbGVhc2VkIChyZXN1bHRp
bmcgaW4gc3FsaXRlIHRlbXAgZmlsZXMgbHlpbmcgYXJvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDViYzJk
MWQ1Nzc3MTg0NzQ4MDFkODIyYjUzYTMzODRmMDVmZTk5MzkuLmNmMmYzNDQ1ZWE2MjlkZGVjMzc4
M2YyY2JhYTQ1YmQ5MjRkNTMxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxNy0w
Ny0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHZW5lcmFsIGNsZWFuIHVwIGFuZCB2YXJpb3VzIHNpbXBsaWZpY2F0aW9ucyAvIG9wdGlt
aXphdGlvbnMgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCisgICAgICAgIGFuZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3Nlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdd
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0U2hvdWxkUGFydGl0aW9uQ29va2llczpmb3JIb3N0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhh
c0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwb3B1bGF0ZUZyb21EZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0
YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNU
b1JlbW92ZVdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0
YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvZ0Zp
bGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojp3cml0ZVN0b3JlVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzY2hlZHVsZU9yV3JpdGVTdG9yZVRvRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVyVG9EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFydE1v
bml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cGxhdGZvcm1FeGNsdWRlRnJvbUJhY2t1cCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRGVjb2RlckZy
b21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpwZXJmb3JtRGFpbHlUYXNrcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3Zl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Ojpj
YWxjdWxhdGVBbmRTdWJtaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dXBk
YXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisKIDIwMTctMDctMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtTT1VQXSBTb3VwQ29va2llSmFyIGlzIG5ldmVyIHJlbGVhc2VkIChy
ZXN1bHRpbmcgaW4gc3FsaXRlIHRlbXAgZmlsZXMgbHlpbmcgYXJvdW5kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggMTM4MDI1
YWMzNjIzODMxZjQxODc0MzY1OWFjYWE5YjQyMGU5MjUxOC4uNmYwODgzNzNiMTgwZDNjNjM2NDZh
YzFiYTE4YmMzZDI4OGZjN2EzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgT3JpZ2luTG9j
azo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NLKQotICAg
IG1fbG9ja0hhbmRsZSA9IG9wZW5GaWxlKG1fbG9ja0ZpbGVOYW1lLCBPcGVuRm9yV3JpdGUpOwor
ICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3BlbkZv
cldyaXRlKTsKICAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpIHsKICAgICAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgaGVyZSBpcyBpZiB0aGUg
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGxvY2sKICAgICAgICAgLy8gaGFzIGJlZW4gZGVsZXRl
ZCBvciB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1leGlzdGFudCBkaXJlY3RvcnkuCkBA
IC02MCw4ICs2MCw2IEBAIHZvaWQgT3JpZ2luTG9jazo6bG9jaygpCiAgICAgICAgIG1fbXV0ZXgu
dW5sb2NrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBsb2NrRmlsZShtX2xvY2tI
YW5kbGUsIExvY2tFeGNsdXNpdmUpOwogI2VuZGlmCiB9CiAKQEAgLTc1LDkgKzczLDcgQEAgdm9p
ZCBPcmlnaW5Mb2NrOjp1bmxvY2soKQogICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkgCiAgICAgICAgIHJldHVybjsKIAotICAgIHVubG9ja0ZpbGUobV9s
b2NrSGFuZGxlKTsKLQotICAgIGNsb3NlRmlsZShtX2xvY2tIYW5kbGUpOworICAgIHVubG9ja0Fu
ZENsb3NlRmlsZShtX2xvY2tIYW5kbGUpOwogICAgIG1fbG9ja0hhbmRsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVt
LmNwcAppbmRleCA0NWM0MjMxOGZkMzUyZjZmMzcyMzJmZGM4N2RkOGI4Y2FkMTBiNGNmLi5jMTkx
YTAxOTM2Y2JkZTlhYjA5ZTBjZTExNjFjYjMxM2M3MDhmNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmNwcApAQCAtMzI3LDQgKzMyNywyNyBAQCBNYXBwZWRGaWxlRGF0YTo6
TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKICNl
bmRpZgogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBGaWxlTG9ja01vZGUgbG9ja01vZGUpCit7
CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVuTW9kZSk7CisgICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworI2lmIFVTRShGSUxFX0xPQ0spCisgICAgYm9vbCBsb2Nr
ZWQgPSBsb2NrRmlsZShoYW5kbGUsIGxvY2tNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvY2tl
ZCwgbG9ja2VkKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCB1bmxv
Y2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sKKyNpZiBVU0UoRklM
RV9MT0NLKQorICAgIGJvb2wgdW5sb2NrZWQgPSB1bmxvY2tGaWxlKGhhbmRsZSk7CisgICAgQVNT
RVJUX1VOVVNFRCh1bmxvY2tlZCwgdW5sb2NrZWQpOworI2VuZGlmCisgICAgY2xvc2VGaWxlKGhh
bmRsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uaAppbmRleCA3Yjg5ZGM1MmMyYTUyMjU2M2Q2ZGZmZjdjNTZlZWFkZmYwNThjN2Fk
Li5hZDU0MDVjMzM5MTZiNzQ3NDU0ZjAwNzEyZjYxNDI2YzZlZmI4NzU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xMzUsNiArMTM1LDkgQEAgV0VCQ09SRV9FWFBPUlQg
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYg
c3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogV0VCQ09SRV9FWFBPUlQgaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCitXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYs
IEZpbGVPcGVuTW9kZSwgRmlsZUxvY2tNb2RlID0gTG9ja0V4Y2x1c2l2ZSk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOworCiAvLyBB
cHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9w
ZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3cml0ZSB3YXMg
c3VjY2Vzc2Z1bCwgZmFsc2UgaWYgaXQgd2FzIG5vdC4KIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRz
VG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCmluZGV4IDhhYTVlNTkxZWEzMjk5MGQ4MDgyNTQzOTA0ODczNGYwOWQzODgw
OTcuLjRiYTA3NGE5ZmFmNjRjYmI4Y2Y1MWYxMjljMDRmNTAyMjQzM2MxODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCkBAIC0zNTQsMjUgKzM1NCwyNSBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcwogICAgIHN0b3JlLT5wcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIKKy0gKHZvaWQpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcKIHsKICAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3Jl
LT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICBzdG9yZS0+dXBkYXRl
Q29va2llUGFydGl0aW9uaW5nKCk7CiB9CiAKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW46KEJPT0wpdmFs
dWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmlu
ZyAqKWhvc3QKIHsKICAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7CisgICAgICAg
IHN0b3JlLT51cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyBob3N0IH0s
IFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUt
PmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IGhvc3QgfSwgeyB9LCBmYWxzZSk7
CisgICAgICAgIHN0b3JlLT51cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgaG9z
dCB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogfQogCiAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oCmluZGV4IGM2N2VhNWRkYWI3YjgyZTI0MDg4NzJmMGJiMDA1ODFlYTNmODRjMGIuLjYy
OTk1NzZjZWRlODYwOGIxMDE3MDU4NWY1Njc3ZjZjZjg3MzcyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCkBAIC01OCw4ICs1OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOihk
b3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhl
cmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjoo
Qk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNT
dHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRy
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZDAwM2M2MjgxZWFhOGQ1
NDAyYWEzNWI5Y2EyMmUwMGFkYmU1NTA1Ni4uYjE1YTcwODY3NzI0ZjY0ZjBmMGI0NjU0ZmQ3NDE1
ZjQzYzQ0NDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCiAKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtMzUsMTMg
KzM2LDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotY29uc3QgdW5zaWduZWQgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9
IDM7CiBjb25zdCB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7IDMwIH07CiBjb25zdCB1
bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uIHsgNiB9OwogCi1SZWY8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCitS
ZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXVEZNb3ZlKHVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkpOworfQorCitSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShVcGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyKQorICAgIDogbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUpOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pIGNvbnN0CkBAIC02Myw2ICs2
OCwxNSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNHcmFuZEZhdGhlcmVk
KGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikgYwogCiAgICAgcmV0dXJuIG1hcEVudHJ5LT52
YWx1ZS5ncmFuZGZhdGhlcmVkOwogfQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFp
bikKK3sKKyAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChw
cmltYXJ5RG9tYWluKTsKKyAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBoYXNIYWRVbmV4
cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obWFwRW50cnktPnZhbHVlKTsKK30KICAgICAKIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlE
b21haW4pCiB7CkBAIC03Miw4ICs4Niw2IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yCiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPjo6S2V5VmFsdWVQYWlyVHlwZSBTdGF0aXN0aWNzVmFsdWU7Ci0KIHN0
ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKQEAgLTgxLDcgKzkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEKICAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIoInZlcnNpb24iLCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uKTsK
ICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoImVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAi
LCBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpKTsKICAgICAKLSAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3Rp
Y3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5lbmQoKSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3Rp
Y3NWYWx1ZSYgb3JpZ2luKSB7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdT
dGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBh
dXRvJiBvcmlnaW4pIHsKICAgICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIp
OwogICAgIH0pOwogCkBAIC05Miw3ICsxMDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNv
ZGVyPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YQog
ICAgIHJldHVybiBlbmNvZGVyOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVhZERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29kZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9wdWxhdGVGcm9tRGVjb2RlcihLZXllZERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCkpCkBAIC0xNDEsNyArMTUzLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWRE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgcHJldmFsZW50
UmVzb3VyY2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdHJ1ZSk7CisgICAgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWlu
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKQEAgLTE1MCwz
OSArMTYyLDMyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVt
b3J5KCkKICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwogICAgIG1fb3BlcmF0
aW5nRGF0ZXMuY2xlYXIoKTsKIAotICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cih7IH0sIHsgfSwgdHJ1ZSk7CisgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlu
cyh7IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4mJiBzdGF0aXN0aWNzKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykgewotICAgICAgICAvLyBG
SVhNRTogSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHN0YXRpc3RpY3MgZG9lcyBub3QgYWxyZWFkeSBl
eGlzdCwgaXQgc2VlbXMgaW5lZmZpY2llbnQgdG8gY3JlYXRlCi0gICAgICAgIC8vIGFuIGVtcHR5
IG9uZSBqdXN0IHRvIG1lcmdlIHRoZSBuZXcgb25lIGludG8gaXQuCiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5oaWdoTGV2ZWxE
b21haW4sIFsmc3RhdGlzdGljXSB7Ci0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIHJldHVybiBX
VEZNb3ZlKHN0YXRpc3RpYyk7CiAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShzdGF0aXN0aWMpOworICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShzdGF0
aXN0aWMpOwogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KT4mJiBoYW5kbGVyKQotewotICAgIG1fc2hvdWxk
UGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKLX0K
LQogaW5saW5lIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0aXRp
b25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29uc3QK
IHsKICAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgKCFzdGF0aXN0
aWMuaGFkVXNlckludGVyYWN0aW9uIHx8IFdhbGxUaW1lOjpub3coKSA+IHN0YXRpc3RpYy5tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZy
ZWUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCiAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvUmVtb3ZlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGRvbWFpbnNUb0FkZDsKLSAgICAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3Rh
dGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYm9v
bCBzaG91bGRQYXJ0aXRpb24gPSBzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlU3RhdGlz
dGljKTsKICAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFy
dGl0aW9uaW5nICYmICFzaG91bGRQYXJ0aXRpb24pIHsKQEAgLTE5OCwyMyArMjAzLDIxIEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3Zl
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92
ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29w
eShkb21haW5zVG9BZGQpXSAoKSB7Ci0gICAgICAgIGlmIChtX3Nob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlcikKLSAgICAgICAgICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2ll
c0ZvckRvbWFpbnNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBmYWxzZSk7
CisgICAgICAgIG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIoZG9t
YWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICB9
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3Zl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFy
Rmlyc3QpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKGRvbWFp
bnNUb1JlbW92ZS5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgY2xlYXJG
aXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBD
cm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwg
ZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRv
bWFpbnNUb0FkZCldICgpIHsKLSAgICAgICAgaWYgKG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0Zv
ckRvbWFpbnNIYW5kbGVyKQotICAgICAgICAgICAgbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
RG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3Qp
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1Ro
cmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWlu
c1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNU
b0FkZCldICgpIHsKKyAgICAgICAgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7
CiAgICAgfSk7CiAgICAgCi0gICAgaWYgKGNsZWFyRmlyc3QpIHsKKyAgICBpZiAoc2hvdWxkQ2xl
YXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpIHsKICAgICAgICAgZm9yIChhdXRvJiBy
ZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQogICAg
ICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcg
PSBmYWxzZTsKICAgICB9IGVsc2UgewpAQCAtMjUxLDcgKzI1NCwxNCBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFJlcwogICAgICAgICBwcm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMpOwog
fQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25z
dAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYg
cHJvY2Vzc0Z1bmN0aW9uKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC52YWx1ZXMoKSkKKyAgICAgICAgcHJvY2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGlj
KTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVuZXhwaXJl
ZFJlY2VudFVzZXJJbnRlcmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0
YXRpc3RpYykgY29uc3QKIHsKICAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRl
cmFjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgxLDcgKzI5MSw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNUb1JlbW92CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJj
ZXM7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52
YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYg
IWhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWMpICYmICghc2hvdWxkQ2hlY2tG
b3JHcmFuZGZhdGhlcmluZyB8fCAhc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpKQorICAgICAgICBp
ZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhl
cmluZyB8fCAhc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpKQogICAgICAgICAgICAgcHJldmFsZW50
UmVzb3VyY2VzLmFwcGVuZChzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKIAogICAgICAgICBp
ZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCkK
QEAgLTI5MCwzNiArMzAwLDYgQEAgVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUmVtb3YKIAogICAgIHJldHVy
biBwcmV2YWxlbnRSZXNvdXJjZXM7CiB9Ci0gICAgCi1WZWN0b3I8UHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c29ydGVkUHJldmFsZW50UmVz
b3VyY2VUZWxlbWV0cnkoKSBjb25zdAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOwotICAgIGZv
ciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKCFzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9
IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8PSBXYWxsVGltZSgpID8g
MCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSkgLyAyNF9oKTsKLSAgICAgICAgc29ydGVkLmFwcGVuZChQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSB7Ci0gICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNS
ZW1vdmVkLAotICAgICAgICAgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiwKLSAgICAg
ICAgICAgIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5z
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3Rp
Yy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0
YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQotICAgICAgICB9KTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKHNvcnRlZC5zaXplKCkgPCBtaW5pbXVtUHJldmFsZW50UmVz
b3VyY2VzRm9yVGVsZW1ldHJ5KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgc3RkOjpzb3J0
KHNvcnRlZC5iZWdpbigpLCBzb3J0ZWQuZW5kKCksIFtdKGNvbnN0IFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5JiBhLCBjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYikgewotICAg
ICAgICByZXR1cm4gYS5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID4K
LSAgICAgICAgYi5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAg
IH0pOwotICAgIAotICAgIHJldHVybiBzb3J0ZWQ7Ci19CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjp1cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VEb21haW5zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCA1ODQ2MDcyNWY1MzcwMmFiOTY1Y2Q3OGVkOGJmMTk4ZDBj
ZjlkNDA0Li4xYjFlMjAyYmE0NjAwZmY3OWZlNTRjZTY0MzM0NjBhYTZiNWY0M2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDEsMjIgKzQxLDE2IEBAIHN0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IFByZXZhbGVu
dFJlc291cmNlVGVsZW1ldHJ5IHsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlRpbWVzRGF0YVJlY29y
ZHNSZW1vdmVkOwotICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVk
IGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zOwotICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bnM7Ci0gICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLX07CitlbnVt
IGNsYXNzIFNob3VsZENsZWFyRmlyc3Q7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkg
Y29uc2lkZXIgbWVyZ2luZyB0aGlzIHdpdGggV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoKTsKKyAgICB1c2lu
ZyBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rp
b248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0KT47CisgICAgc3RhdGlj
IFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0OwotICAgIHZv
aWQgcmVhZERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKKyAgICB2b2lk
IHBvcHVsYXRlRnJvbURlY29kZXIoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5
KCk7IH0KICAgICB2b2lkIGNsZWFySW5NZW1vcnkoKTsKQEAgLTY1LDM4ICs1OSwzNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgYm9vbCBpc0dyYW5kRmF0aGVyZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9v
bCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAg
dm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYpOwogCi0gICAgdm9pZCBzZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk+JiYpOwot
CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4pOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25k
cyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAKLSAgICB2b2lk
IGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9S
ZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJz
dCk7CisgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICB2b2lkIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xl
YXJGaXJzdCk7CiAKICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpOworICAgIHZvaWQg
cHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JikgY29uc3Q7CiAKLSAgICBib29sIGhhc0hhZFJl
Y2VudFVzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29u
c3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1Jl
bW92ZVdlYnNpdGVEYXRhRm9yKCk7Ci0gICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5PiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSgpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlU3RhdGlzdGljc0ZvclJlbW92ZWREYXRhUmVjb3Jkcyhjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIHByZXZhbGVudFJlc291cmNlRG9tYWlucyk7CiAKICAgICB2b2lkIGhhbmRsZUZyZXNoU3Rh
cnRXaXRoRW1wdHlPck5vU3RvcmUoSGFzaFNldDxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNUb0dyYW5kZmF0aGVyKTsKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsKIAog
ICAgIGJvb2wgc2hvdWxkUGFydGl0aW9uQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CisgICAgYm9vbCBoYXNI
YWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpIGNvbnN0OwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIERlcXVlPFdURjo6
V2FsbFRpbWU+IG1fb3BlcmF0aW5nRGF0ZXM7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wgY2xlYXJGaXJz
dCk+IG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyOworICAgIFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyIG1fdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1f
dGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbjsKICAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUgeyAyNF9oIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhM2Zl
NDA2OTZiZDI5OWZmZTliYjIyYTFlODBmMzA4M2Q5ODVhZTAuLjZjYzllOTQ3MTA1ZmYzMTAzNDdl
ZWExMmYxZTkzMTQ3OTA1ODM3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVNb25pdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC00NCwyNSAr
NDUsMTcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmlu
ZSBFTkFCTEVfTVVMVElQUk9DRVNTX0FDQ0VTU19UT19TVEFUSVNUSUNTX1NUT1JFIDEKLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Nv
bnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgeyA1X21p
biB9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5
RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogewogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKIH0KIAotY29uc3RleHByIFNlY29uZHMgbWluaW11
bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCB7IDVfbWluIH07Ci0KLXN0YXRpYyBib29sIG5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBmYWxzZTsKLXN0YXRpYyBib29s
IHNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdHJ1ZTsK
LXN0YXRpYyBhdXRvIHNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHRydWU7Ci0KIHN0YXRpYyBjb25z
dCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPj4gZGF0YVR5
cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXZWJzaXRlRGF0YVR5cGU+KHsKQEAgLTg3LDEyICs4
MCwxMSBAQCBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIGRhdGFUeXBl
c1RvUmVtb3ZlKCkKICAgICByZXR1cm4gZGF0YVR5cGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0ZVBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFu
ZGxlcikKLSAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNI
YW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCisgICAg
OiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZShXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyKSkpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6
VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3N0YXRpc3Rp
Y3NTdG9yYWdlUGF0aChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQotICAgICwgbV90
ZWxlbWV0cnlPbmVTaG90VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSkKLSAgICAsIG1f
dGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQorICAgICwgbV9kYWlseVRh
c2tzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0xMDAsMzkgKzkyLDIxIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzCiAgICAg
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2VuZGlmCiAKLSAgICBpZiAodXBkYXRl
UGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLT5zZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soW3Vw
ZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUodXBkYXRlUGFy
dGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wg
c2hvdWxkQ2xlYXJGaXJzdCkgewotICAgICAgICAgICAgdXBkYXRlUGFydGl0aW9uQ29va2llc0Zv
ckRvbWFpbnNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVh
ckZpcnN0KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAg
cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CiAgICAgICAgIHN0YXJ0TW9uaXRvcmluZ1N0YXRp
c3RpY3NTdG9yYWdlKCk7CiAgICAgfSk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNo
QWZ0ZXIoNV9zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGlmIChtX3Nob3VsZFN1Ym1pdFRlbGVtZXRyeSkKKyAgICAgICAgICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7
CisgICAgfSk7CiAKLSAgICBtX3RlbGVtZXRyeU9uZVNob3RUaW1lci5zdGFydE9uZVNob3QoNV9z
KTsKLSAgICBtX3RlbGVtZXRyeVJlcGVhdGVkVGltZXIuc3RhcnRSZXBlYXRpbmcoMjRfaCk7Cisg
ICAgbV9kYWlseVRhc2tzVGltZXIuc3RhcnRSZXBlYXRpbmcoMjRfaCk7CiB9CiAKIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgp
CiB7CiB9Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgYWx3YXlzKQotewotICAgIG5vdGlm
eVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBhbHdheXM7Ci19Ci0KLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZhbHVlKQotewotICAgIHNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdmFsdWU7Ci19Ci0KLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9v
bCB2YWx1ZSkKLXsKLSAgICBzaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsKLX0KICAgICAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGFzc2lmeVJlc291cmNlKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKQogewpAQCAtMTUxLDE1ICsx
MjUsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFS
ZWNvcmRzKCkKICAgICBpZiAocHJldmFsZW50UmVzb3VyY2VEb21haW5zLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CisgICAg
c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKLSAgICAvLyBTd2l0Y2ggdG8gdGhl
IG1haW4gdGhyZWFkIHRvIGdldCB0aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3RvcmUKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFp
bnMpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewot
ICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1RvUmVt
b3ZlKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpXShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdl
YnNpdGVEYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIC8vIEJ1dCBhbHdheXMgdG91Y2ggdGhl
IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3RvcmUgb24gdGhlIHdvcmtlciBxdWV1ZS4KKyAgICAg
ICAgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92ZSgp
LCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIG1fc2hvdWxkTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpXShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRl
ZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRv
cERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFp
bnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
Y29yZVN0b3JlKCkudXBkYXRlU3RhdGlzdGljc0ZvclJlbW92ZWREYXRhUmVjb3Jkcyh0b3BEb21h
aW5zKTsKLSAgICAgICAgICAgICAgICBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgICAg
ICAgICAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoZmFsc2UpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTY4LDE0ICsxNDAsMTQgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCkKIHsKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgewotICAgICAgICBpZiAoc2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpIHsKICAgICAgICAgICAg
IGNvcmVTdG9yZSgpLnByb2Nlc3NTdGF0aXN0aWNzKFt0aGlzXSAoUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIHsKICAgICAgICAgICAgICAgICBjbGFzc2lmeVJlc291
cmNlKHJlc291cmNlU3RhdGlzdGljKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
ICAgIHJlbW92ZURhdGFSZWNvcmRzKCk7CiAgICAgICAgIAotICAgICAgICBpZiAobm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCkgeworICAgICAgICBpZiAobV9zaG91bGROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKSB7CiAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICAgICAgICAgIFdlYlByb2Nlc3NQcm94eTo6
bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpOwogICAgICAgICAg
ICAgfSk7CkBAIC0xOTAsMjAgKzE2MiwxOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0
aXN0aWNzKFdURk1vdmUob3JpZ2lucykpOwotICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcg
c3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNlcgotICAgIC8vIGludGVyYWN0aW9uIGFzIGZhc3Qg
YXMgcG9zc2libGUgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBjb3JlU3RvcmUoKS5maXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICAvLyBGaXJlIGJlZm9yZSBwcm9j
ZXNzaW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBh
cyBwb3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIGNvcmVTdG9yZSgpLnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHMoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0
aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpCiB7Ci0gICAgLy8gU3dpdGNoIHRvIHRoZSBtYWluIHRo
cmVhZCB0byBnZXQgdGhlIGRlZmF1bHQgd2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdl
YlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURh
dGEoZGF0YVR5cGVzVG9SZW1vdmUoKSwgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFz
aFNldDxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURh
dGEpIG11dGFibGUgewotICAgICAgICAgICAgLy8gQnV0IGFsd2F5cyB0b3VjaCB0aGUgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyBzdG9yZSBvbiB0aGUgd29ya2VyIHF1ZXVlCi0gICAgICAgICAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0b3BEb21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+
Pjo6Y29weSh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNvcmVTdG9yZSgpLmhh
bmRsZUZyZXNoU3RhcnRXaXRoRW1wdHlPck5vU3RvcmUoV1RGTW92ZSh0b3BEb21haW5zKSk7Cisg
ICAgICAgIFdlYlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRo
V2Vic2l0ZURhdGEoZGF0YVR5cGVzVG9SZW1vdmUoKSwgbV9zaG91bGROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyldIChIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluc1dpdGhXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0b3BEb21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29w
eSh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGNvcmVTdG9yZSgpLmhhbmRsZUZyZXNoU3RhcnRXaXRoRW1w
dHlPck5vU3RvcmUoV1RGTW92ZSh0b3BEb21haW5zKSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CkBAIC0yNDgsNyArMjE5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCiAgICAgfQogCiAgICAg
Y29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwotICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJv
bURlY29kZXIoKmRlY29kZXIpOworICAgIGNvcmVTdG9yZSgpLnBvcHVsYXRlRnJvbURlY29kZXIo
KmRlY29kZXIpOwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1l
OwogCkBAIC0yNzgsNyArMjQ5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlZnJlc2hGcm9tRGlzaygpCiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb3JlU3RvcmUoKS5yZWFkRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKKyAgICBj
b3JlU3RvcmUoKS5wb3B1bGF0ZUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKICAgICBtX2xhc3RTdGF0
aXN0aWNzRmlsZVN5bmNUaW1lID0gcmVhZFRpbWU7CiB9CiAgICAgCkBAIC0yOTUsMTIgKzI2Niwx
MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc0RpZENsb3Nl
Q29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpCiB7CiAgICAgQmluYXJ5U2VtYXBo
b3JlIHNlbWFwaG9yZTsKKyAgICAvLyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgd29yayBpbiBvdXIg
cXVldWUgaXMgZmluaXNoZWQgYmVmb3JlIHdlIHRlcm1pbmF0ZS4KICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goWyZzZW1hcGhvcmUsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gewogICAgICAgICAvLyBXcml0ZSBmaW5hbCBmaWxlIHN0YXRlIHRvIGRpc2suCiAg
ICAgICAgIGlmIChtX2RpZFNjaGVkdWxlV3JpdGUpCiAgICAgICAgICAgICB3cml0ZVN0b3JlVG9E
aXNrKCk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIGFueSBvbmdvaW5nIHdvcmsgaW4gb3VyIHF1
ZXVlIGlzIGZpbmlzaGVkIGJlZm9yZSB3ZSB0ZXJtaW5hdGUuCiAgICAgICAgIHNlbWFwaG9yZS5z
aWduYWwoKTsKICAgICB9KTsKICAgICBzZW1hcGhvcmUud2FpdChXYWxsVGltZTo6aW5maW5pdHko
KSk7CkBAIC0zMTcsNyArMjg4LDcgQEAgU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCgpIGNvbnN0CiAgICAgaWYgKHN0YXRpc3RpY3NTdG9y
YWdlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAg
Ly8gVE9ETyBEZWNpZGUgd2hhdCB0byBjYWxsIHRoaXMgZmlsZQorICAgIC8vIEZJWE1FOiBEZWNp
ZGUgd2hhdCB0byBjYWxsIHRoaXMgZmlsZS4KICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNv
dXJjZUxvZy5wbGlzdCIpOwogfQogCkBAIC0zMzIsNyArMzAzLDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlU3RvcmVUb0Rpc2soKQogICAgIGF1dG8gZW5jb2Rl
ciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpOwogCiAgICAgU3RyaW5nIHJl
c291cmNlTG9nID0gcmVzb3VyY2VMb2dGaWxlUGF0aCgpOwotICAgIHdyaXRlRW5jb2RlclRvRGlz
aygqZW5jb2Rlci5nZXQoKSwgcmVzb3VyY2VMb2cpOworICAgIHdyaXRlRW5jb2RlclRvRGlzaygq
ZW5jb2RlciwgcmVzb3VyY2VMb2cpOwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGlt
ZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CkBAIC0zNDksOCArMzIwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICBpZiAo
dGltZVNpbmNlTGFzdFdyaXRlIDwgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCkg
ewogICAgICAgICBpZiAoIW1fZGlkU2NoZWR1bGVXcml0ZSkgewogICAgICAgICAgICAgbV9kaWRT
Y2hlZHVsZVdyaXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIFNlY29uZHMgZGVsYXlVbnRpbCA9IG1p
bmltdW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgLSB0aW1lU2luY2VMYXN0V3JpdGUgKyAx
X3M7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2hBZnRlcihkZWxheVVu
dGlsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAg
ICBTZWNvbmRzIGRlbGF5ID0gbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCAtIHRp
bWVTaW5jZUxhc3RXcml0ZSArIDFfczsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5k
aXNwYXRjaEFmdGVyKGRlbGF5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgICAgICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KQEAgLTM2MCwzMSArMzMxLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNjaGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICB3cml0ZVN0b3Jl
VG9EaXNrKCk7CiB9CiAKLXN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBtb2Rl
KTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
IHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0jaWYgRU5BQkxFKE1VTFRJUFJP
Q0VTU19BQ0NFU1NfVE9fU1RBVElTVElDU19TVE9SRSkKLSAgICBib29sIGxvY2tlZCA9IGxvY2tG
aWxlKGhhbmRsZSwgV2ViQ29yZTo6TG9ja0V4Y2x1c2l2ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChs
b2NrZWQsIGxvY2tlZCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLXN0YXRp
YyB2b2lkIGNsb3NlQW5kVW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotI2lmIEVOQUJMRShNVUxUSVBST0NFU1Nf
QUNDRVNTX1RPX1NUQVRJU1RJQ1NfU1RPUkUpCi0gICAgYm9vbCB1bmxvY2tlZCA9IHVubG9ja0Zp
bGUoaGFuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tlZCk7Ci0jZW5k
aWYKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTQwNCw3ICszNTAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6d3JpdGVFbmNvZGVyVG9EaXNrKEtleWVkRW5jb2RlciYgZW5jb2RlciwgYwogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5k
bGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBjbG9zZUFuZFVubG9j
a0ZpbGUoaGFuZGxlKTsKKyAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGlm
ICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTogV2Ugb25seSB3cm90ZSAlZCBvdXQgb2YgJWQgYnl0
ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRh
LT5zaXplKCkpOwpAQCAtNDIzLDEyICszNjksNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZGVsZXRlU3RvcmVGcm9tRGlzaygpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3Mg
ZmlsZTogJXMiLCByZXNvdXJjZUxvZ1BhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5RGF0YSgpCi17Ci0gICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9y
eSgpOwotfQotCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25p
dG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwpAQCAtNDQ2LDcgKzM4Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpCiAgICAgICAgICAgICByZWZy
ZXNoRnJvbURpc2soKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbDoKLSAgICAgICAgICAgIGNsZWFySW5NZW1vcnlE
YXRhKCk7CisgICAgICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CiAgICAgICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yYWdlTW9uaXRvciA9IG51bGxwdHI7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtNDcxLDEyICs0MTEsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVl
ZGVkKCkKIAogICAgIHJlZnJlc2hGcm9tRGlzaygpOwogfQotICAgIAotICAgIAorCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRm
b3JtRXhjbHVkZUZyb21CYWNrdXAoKSBjb25zdAogewotICAgIC8vIERvIG5vdGhpbmcKIH0KICNl
bmRpZgogCkBAIC00ODksMjAgKzQyNywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVy
PiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9tRAogICAg
IAogICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7CiAgICAgaWYgKCFnZXRGaWxlU2l6ZShoYW5k
bGUsIGZpbGVTaXplKSkgewotICAgICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICAKICAgICBzaXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoZmlsZVNpemUsIGJ5dGVzVG9SZWFkKSkgewotICAgICAgICBjbG9zZUFuZFVu
bG9ja0ZpbGUoaGFuZGxlKTsKKyAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBidWZmZXIo
Ynl0ZXNUb1JlYWQpOwogICAgIHNpemVfdCB0b3RhbEJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZSho
YW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCi0gICAgY2xvc2VBbmRVbmxv
Y2tGaWxlKGhhbmRsZSk7CisgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBp
ZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTE1LDE4ICs0NTMsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cGVyZm9ybURhaWx5VGFza3MoKQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBjb3JlU3RvcmUoKS5pbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgp
OwotCi0gICAgc3VibWl0VGVsZW1ldHJ5SWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCkKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIGlmICghc2hvdWxkU3Vi
bWl0VGVsZW1ldHJ5KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc3VibWl0VGVsZW1ldHJ5
KCk7CisgICAgaWYgKG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQorICAgICAgICBzdWJtaXRUZWxl
bWV0cnkoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1p
dFRlbGVtZXRyeSgpCkBAIC01NDcsNyArNDc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKICAgICAgICAg
c3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgICAgICBzdGF0aXN0aWNz
Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwogCi0gICAg
ICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1h
cnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIGNvcmVTdG9yZSgpLnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsg
fSwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIH0pOwogfQogCkBAIC01NzEsMTAgKzQ5OSw5
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJh
Y3Rpb24oY29uc3QgVVJMJiB1cmwsIFdURjo6CiAgICAgfQogCiAgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBw
b3RlbnRpYWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPwotICAg
ICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2hhc0hhZFVzZXJJbnRlcmFjdGlvbiA9IGNvcmVTdG9yZSgpLmhh
c0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFzSGFkVXNlckludGVyYWN0aW9uKTsKKyAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24gPSBjb3JlU3RvcmUoKS5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocHJpbWFyeURv
bWFpbih1cmwpKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtoYWRVc2VySW50
ZXJhY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhZFVzZXJJbnRlcmFjdGlvbik7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNjc1LDI3ICs2MDIsMjggQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhj
b25zdCBVUkwmIHMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBjb3JlU3RvcmUoKS5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Fk
ZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQogewogICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJv
bSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmlu
Zz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29w
aWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Ci0g
ICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21h
aW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRv
bWFpbnNUb1JlbW92ZSA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShk
b21haW5zVG9SZW1vdmUpLCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8
U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvQWRkKSwgc2hvdWxkQ2xlYXJGaXJzdF0geworICAgICAg
ICBjb3JlU3RvcmUoKS51cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGRvbWFpbnNU
b1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9KTsKIH0KIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkoKQogewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAg
Y29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwogICAgIH0pOwpAQCAtNzAzLDYgKzYzMSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KCkKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fc3RhdGlz
dGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgIGNvcmVTdG9yZSgpLmNsZWFySW5NZW1vcnkoKTsKICAgICAgICAgZGVsZXRl
U3RvcmVGcm9tRGlzaygpOwpAQCAtNzQxLDI2ICs2NzAsMTggQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMp
CiBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUmVtb3ZlRGF0YVJl
Y29yZHMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlm
IChtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25vdG9uaWNUaW1l
Ojpub3coKSA8IChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1fbWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKSkKKyAgICBpZiAobV9kYXRhUmVjb3Jkc0JlaW5n
UmVtb3ZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkYXRhUmVjb3Jkc0JlaW5nUmVt
b3ZlZCgpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9sYXN0VGlt
ZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2Rh
dGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSB0cnVlOworICAgIHJldHVybiAhbV9sYXN0VGltZURh
dGFSZWNvcmRzV2VyZVJlbW92ZWQgfHwgTW9ub3RvbmljVGltZTo6bm93KCkgPj0gKG1fbGFzdFRp
bWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkICsgbV9taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGF0
YVJlY29yZHNXZXJlUmVtb3ZlZCgpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSBm
YWxzZTsKKyAgICBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVkID0gdmFsdWU7CisgICAgaWYgKG1f
ZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQpCisgICAgICAgIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dl
cmVSZW1vdmVkID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzM2JmNzE5ZTZiN2E3OTc4OWMxNDk2MzZh
ZmUwMWIyYTJmYzk2YWE0Li5mMmRkYmU4YzI3MWRmNmIzMTZhNGQxNzUwYmVjYTQxMTE4ZmMxODc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01NCwxOSArNTQsMjIgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJQcm9jZXNz
UHJveHk7CiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdDsKKworLy8gRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtb3ZpbmcgRmlsZVN5c3RlbSBJL08gdG8gYSBzZXBhcmF0ZSBjbGFzcy4K
IGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNp
bmcgVXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk+OwotICAgIHN0
YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVQYXJ0aXRpb25Db29r
aWVzRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hh
bmRsZXIgPSB7IH0pCisgICAgdXNpbmcgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlu
c0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xl
YXJGaXJzdCk+OworICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBV
cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RG
TW92ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikpKTsKICAgICB9
CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKLSAgICBzdGF0aWMg
dm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwotICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShi
b29sKTsKKyAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
Ym9vbCB2YWx1ZSkgeyBtX3Nob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1
Ym1pdFRlbGVtZXRyeShib29sIHZhbHVlKSB7IG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFs
dWU7IH0KIAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucyk7CiAKQEAgLTg1LDggKzg4
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUp
OwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYg
c3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwot
ICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBj
bGVhckZpcnN0KTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZv
aWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBT
aG91bGRDbGVhckZpcnN0KTsKICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHMoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogCkBAIC0xMDAsNyArMTAzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwogCiBwcml2
YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBV
cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlJiBjb3JlU3RvcmUoKSB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5n
ZXQoKTsgfQogICAgIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0K
QEAgLTEyNywxNSArMTMwLDEyIEBAIHByaXZhdGU6CiAgICAgV2FsbFRpbWUgc3RhdGlzdGljc0Zp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwogICAgIHZvaWQg
cGxhdGZvcm1FeGNsdWRlRnJvbUJhY2t1cCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlU3RvcmVG
cm9tRGlzaygpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeURhdGEoKTsKICAgICB2b2lkIHN5bmNX
aXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVkKCk7CiAgICAgdm9pZCByZWZyZXNo
RnJvbURpc2soKTsKLSAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCk7CiAgICAg
Ym9vbCBoYXNTdGF0aXN0aWNzRmlsZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0IFN0cmluZyYg
cGF0aCkgY29uc3Q7CiAgICAgdm9pZCBwZXJmb3JtRGFpbHlUYXNrcygpOwogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdDsKLSAgICB2b2lkIGRhdGFSZWNvcmRzQmVpbmdS
ZW1vdmVkKCk7Ci0gICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CisgICAgdm9pZCBz
ZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChib29sKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwpAQCAtMTUyLDEyICsxNTIs
MTQgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7
CiAgICAgV2FsbFRpbWUgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZTsKICAgICBNb25vdG9u
aWNUaW1lIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcjsKLSAg
ICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1l
dHJ5UmVwZWF0ZWRUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IG1fZGFpbHlUYXNrc1RpbWVyOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQ7CiAgICAgU2Vjb25kcyBtX21pbmltdW1UaW1lQmV0
d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9OwotICAgIGJvb2wgbV9kYXRhUmVjb3Jkc1Jl
bW92YWxQZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRTY2hlZHVsZVdyaXRlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRTdWJtaXRUZWxlbWV0cnkgeyB0
cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcAppbmRleCBhYWM1NDBjYjM5MjA4MjcwOTk5MGQwZDliNmY5ODdlZTliOGRkZGNjLi5l
MTIxMjEzYTlmNWZkNTk1NWE5YTllZDBkNWEwN2Y4NWY4ZmYxMTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwCkBAIC0zOSw5ICszOSw0OSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotc3RhdGljIGF1dG8gbm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQgPSBmYWxzZTsKLSAgICAKKworY29uc3QgdW5zaWduZWQg
bWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9IDM7CitzdGF0aWMgYm9vbCBu
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9IGZhbHNlOworCitzdHJ1Y3QgUHJl
dmFsZW50UmVzb3VyY2VUZWxlbWV0cnkgeworICAgIHVuc2lnbmVkIG51bWJlck9mVGltZXNEYXRh
UmVjb3Jkc1JlbW92ZWQ7CisgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb247CisgICAgdW5z
aWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uOworICAgIHVuc2lnbmVkIHN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2luczsKKyAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOworfTsK
Kworc3RhdGljIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkUHJldmFs
ZW50UmVzb3VyY2VUZWxlbWV0cnkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBz
dG9yZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBWZWN0b3I8UHJl
dmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZDsKKyAgICBzdG9yZS5wcm9jZXNzU3RhdGlz
dGljcyhbJnNvcnRlZF0gKGF1dG8mIHN0YXRpc3RpYykgeworICAgICAgICBpZiAoIXN0YXRpc3Rp
Yy5pc1ByZXZhbGVudFJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVu
c2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1l
Ojpub3coKSAtIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAyNF9o
KTsKKyAgICAgICAgc29ydGVkLmFwcGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7Cisg
ICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkLAorICAgICAgICAgICAgc3Rh
dGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiwKKyAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvbiwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zLnNpemUoKSwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW5zLnNpemUoKSwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLnNpemUoKQorICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGlmIChzb3J0
ZWQuc2l6ZSgpIDwgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHN0ZDo6c29ydChzb3J0ZWQuYmVnaW4oKSwgc29ydGVkLmVu
ZCgpLCBbXShjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYSwgY29uc3QgUHJldmFs
ZW50UmVzb3VyY2VUZWxlbWV0cnkmIGIpIHsKKyAgICAgICAgcmV0dXJuIGEuc3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA+CisgICAgICAgIGIuc3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICB9KTsKKworICAgIHJldHVybiBzb3J0ZWQ7
Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24oY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgcmVzb3VyY2VzLCBz
aXplX3QgYmVnaW4sIHNpemVfdCBlbmQpCiB7CiAgICAgaWYgKHJlc291cmNlcy5pc0VtcHR5KCkg
fHwgcmVzb3VyY2VzLnNpemUoKSA8IGJlZ2luICsgMSB8fCByZXNvdXJjZXMuc2l6ZSgpIDwgZW5k
ICsgMSkKQEAgLTE4OCw3ICsyMjgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb25zdCBSZXNvdXJjZUxvYWRTdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIGF1dG8gc29ydGVkUHJldmFs
ZW50UmVzb3VyY2VzID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLnNvcnRlZFByZXZhbGVu
dFJlc291cmNlVGVsZW1ldHJ5KCk7CisgICAgYXV0byBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMg
PSBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUpOwogICAgIGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCAmJiBz
b3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vdGlmeVBhZ2Vz
KDAsIDAsIDApOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYjA3ZWVm
ZWYzYjZlNmViMjI2MzFkY2MwMGQ3MWQxZGFjNDk0NmViZC4uN2JjZjY5OTU1YTM0YjczOTNhMDMy
MzAyNDFiODNmYzIzMjk1ZjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTA5OSwxMCArMTA5
OSwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWlucyhPcHRpb25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3Zl
LCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1Jl
bW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6
OlllcykpOwogfQogI2VuZGlmCiAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
CiAgICAgaWYgKGVuYWJsZWQpIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Jl
bW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRDbGVh
ckZpcnN0KSB7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFy
Rmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgewogICAgICAgICAgICAgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWlu
c1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICAgICAgfSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggYWIzNTQzYjNiMjAyZWJjMWU4Njc5MDVhOGFlY2Q5MGNjNWVjMjBkNi4uMWFjNWZj
ZTk2YmFiZWFlMzIzMzJlOWM3ZmUyZjZkMWJjZTJmYjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02
Miw2ICs2Miw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIHN0cnVjdCBQ
bHVnaW5Nb2R1bGVJbmZvOwogI2VuZGlmCiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdCB7
IE5vLCBZZXMgfTsKKwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIgewog
cHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKQEAgLTEwMSw3ICsxMDMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zLCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lk
IHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmlyc3QpOworICAgIHZvaWQgdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9B
ZGQsIFNob3VsZENsZWFyRmlyc3QpOwogI2VuZGlmCiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3Jp
ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI5N2ZmMzBhYzFkMTJjOWRjNWMwY2E0NmNiNzQyOWFlOTAx
OGEyYjUuLjk1MTI4NzFmYThkNGU3MjA3ZWFkN2M5ZTFhNTQyOWU1MTdlNWY2MmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxNy0wNy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEZ1cnRoZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW5hbWUgc29tZSBvZiB0aGUgdGVzdFJ1bm5lciBBUEkgZm9yIGNsYXJp
dHkgYW5kIHRvIGJldHRlciBtYXRjaCB3aGF0IGl0IGNhbGxzCisgICAgICAgIGludGVybmFsbHku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NVcGRh
dGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGlj
c1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KToKKwogMjAxNy0wNy0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIFdlYkdMMiBjb25m
aWd1cmF0aW9uIG9wdGlvbiB0byBidWlsZC13ZWJraXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CmluZGV4IDVjYWI4YTIyZDAyMDA2OGRiNTUzODEyMWZhOGVmMjJkYjc0MTYyYzcuLjkzNmVmMzE2
YjgxZjZkYjY3NzFjNTE4NjQ4MDg4NjFlODM5Zjk3YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbApAQCAtMjY2LDggKzI2Niw4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3Vi
bGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRh
UmVjb3JkcygpOwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlcigpOwotICAgIHZvaWQgc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlckZvck9uZURvbWFpbihET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUpOwor
ICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQg
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KERPTVN0cmluZyBob3N0
TmFtZSwgYm9vbGVhbiB2YWx1ZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5
KCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sZWFuIHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDQzNGM1OTE1MzRlYzhhZGJiMTQwNjY3NWNmZjgyYjE4ODE2Y2FkYzYuLjgzNzc4
Njg4YWMwNzI1ZDBkYjgwZTI4ODI4MDMzMDI5ZDBjNTZkODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTQxOSwx
MyArMTQxOSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCkKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwg
bnVsbHB0cik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmcoKQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGlj
c0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlciIpKTsKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmciKSk7CiAgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RSdW5uZXI6OnN0
YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSkKIHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
PiBrZXlzOwogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CkBAIC0x
NDQ0LDcgKzE0NDQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oSlNTdHJpbgogICAgICAgICByYXdWYWx1
ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CiAgICAgfQogICAgIAotICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURv
bWFpbiIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdCIpKTsKICAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+
IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwg
cmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKICAgICAKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCBhZWFhZDk2YjVlZmIxOGJjNDZkMWMzMjhhNzc1OGY1NWY1YThjNDMxLi41MTdlZWJjNDY3YjBm
YWJiZTAxOTczNTdkZDY4M2ZjNTQwMmMxODJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzU0LDggKzM1NCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjaygpOwog
ICAgIHZvaWQgc3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKHVuc2lnbmVkIHRvdGFs
UHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7
Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7
Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9y
T25lRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHN0
YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpOwogICAgIGJvb2wgaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJp
bmdSZWYgaG9zdE5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAppbmRleCAwNjAzYzY0YWEzYjEzMDk5NTgxNGRkN2JiYjljODJhZWFhM2EzZDc5Li40NDg2OWJj
YmNlOTM1MmM3MGE1ODNiYjYxYjc0MTIxYzhkMTVhNWRmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjMwMCwxMSArMjMwMCwxMSBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpCiB7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZygpCiB7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3Rp
Y3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdS
ZWYsIGJvb2wpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0
aW9uQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBhOWMwYTNiNmNkMWViZWM1M2RkZTQzZWU2
NmRiNjE3Njk0NzZjYmUwLi45NzUzNmUyMDcxNTZlNjI2MmFmYjg3YzU1NmRmN2MyNzkxMzViMWNm
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xNjIsOCArMTYy
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmcoKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdChXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmQ3NzgxYzE1
ZjFmZDRmZTU3YTRjMThjNTY2ZDIyNzI3NDExNTkxYS4uMmM0NGNjMjdlYWIyZmQ0NzgwZjc1ZTE5
YmZhOTNiOTcyOTJhNjZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKQEAgLTEwNDIsMTIgKzEwNDIsMTIgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlciIpKSB7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyRm9yT25lRG9tYWluIikpIHsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9z
dCIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICAKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2Fn
ZUJvZHkpOwpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAg
ICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5
LmdldCgpKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9v
bGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IHZhbHVlS2V5LmdldCgpKSk7CiAgICAgICAgIAotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihob3N0TmFtZSwgV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpKTsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9ySG9zdChob3N0TmFtZSwgV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDA0NGFkZmY1OWU0OTk3YzA4
ZGM2Y2M2Y2ZlNjhiYWQ4OGQ3YjNhZTMuLjkyNmMzNzRmYmY3NDM3NGJmMjU3YWYzMzFjNmFlZDNh
MTZhZGM5ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KQEAgLTMwNiwxNCArMzA2LDE0IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKICAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNdOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KQogewotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyXTsK
KyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ107CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJG
b3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoV0tT
dHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW46dmFsdWUgZm9ySG9zdDp0b05T
U3RyaW5nKGhvc3ROYW1lKV07CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOwogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTBjN2U2M2Mx
NzdiMDA5YjQ1MThmMTU1NjU0ZDVhZTAwMDI0YzMwLi5hYzg5ZmNjZmZiYmRiMTAwOTc5MzlmM2Nm
MTVkNDY2NWJlMWQ5Y2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDctMDkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSAvIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MzAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGV4aXN0aW5nIGxheW91dCB0ZXN0cyB0byByZWZsZWN0IHRlc3RSdW5uZXIgQVBJIGNoYW5nZXMu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
YXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRpb24uaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25l
ZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWw6
CisKIDIwMTctMDctMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBVc2VyIGludGVyYWN0aW9uIHNob3VsZCBh
bHdheXMgZ28gdG8gdG9wIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0
aXRpb25lZC1jb29raWUtZGVsZXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9h
ZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVk
LWNvb2tpZS1kZWxldGlvbi5odG1sCmluZGV4IDJkYTQ0ZTMyYmIzMzM5ZDczNDBhOGExZmJhMDNm
NjA1MzkxYTgzNDkuLjExODZmZGZiZDQ3ZWQyYWY1NmNkMjA5ZGRiZjNlYjMyZDc2YzI0NjMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sCkBA
IC05Myw3ICs5Myw3IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKDApOwogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbigibG9jYWxob3N0IiwgdHJ1ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zvck9uZURvbWFp
bigibG9jYWxob3N0IiwgdHJ1ZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSk7CiAgICAgICAgIGlmICgh
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9z
dCIpKQogICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9u
ZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11
bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwKaW5kZXgg
NDk5Yjg0OTRmMDQyOTUzNjMyZmRmYWI0MGU5ZjkxNTExMGJmYTliMS4uZDQ5NGFlMzg4OTcyOGNl
YTU5ZjMyOGVmMGJkZDNiYTdkMWJjNjk2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFy
dGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRp
b25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5o
dG1sCkBAIC00MCw3ICs0MCw3IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyQW5kQ29udGludWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKICAgICAgICAg
cnVuVGVzdCgpOwogICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgICAgIGlmICghdGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIp
KQogICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFs
ZW50IHJlc291cmNlLiIpOwogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKIAogICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRl
cmFjdGlvbi5odG1sCmluZGV4IGQ5YjEyNWQxMTEyN2VmODI5MzFlNzliNmEzMTNjYTM3ODFiM2Fi
MWIuLjMwZThmNmU0ZGRhY2IzNDU0YjNkMjQxMTRkNWEwZDlkZmIxNTJiZWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24u
aHRtbApAQCAtNzMsNyArNzMsNyBAQAogICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09
PSBwYXJ0aXRpb25Ib3N0ICYmIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT0gIiIgJiYgd2luZG93
LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUpOwogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbigibG9jYWxob3N0IiwgdHJ1ZSk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zvck9uZURv
bWFpbigibG9jYWxob3N0IiwgdHJ1ZSk7CiAKICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314987</attachid>
            <date>2017-07-10 09:17:47 -0700</date>
            <delta_ts>2017-07-10 10:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174301-20170710091745.patch</filename>
            <type>text/plain</type>
            <size>74159</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OTBmZTI0YjAzOTVm
ODQzMzhiZTQyYTg5MzNiZTMyNDJjYmRiNy4uNjAzYjliZTIzM2FhNjUzZWU3MDBjZjNiMzZjNjMx
YjkwMzFlNTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4g
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDMw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgTW92ZWQg
c29tZSBnZW5lcmljIGZpbGUgc3lzdGVtIHV0aWxpdHkgZnVuY3Rpb25zIGRvd24gdG8gcGxhdGZv
cm0ncyBGaWxlU3lzdGVtLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5BbmRMb2NrRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1
bmxvY2tBbmRDbG9zZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKwog
MjAxNy0wNy0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1NPVVBdIFNvdXBDb29raWVKYXIgaXMgbmV2ZXIgcmVsZWFzZWQgKHJlc3VsdGlu
ZyBpbiBzcWxpdGUgdGVtcCBmaWxlcyBseWluZyBhcm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWJjMmQx
ZDU3NzcxODQ3NDgwMWQ4MjJiNTNhMzM4NGYwNWZlOTkzOS4uYTEzNGUwNTA2ZTkwMmYyMTg3Y2Fi
ZjAxMjhlZWQzYmUxZDM1MWI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTA3
LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAg
ICAgR2VuZXJhbCBjbGVhbiB1cCBhbmQgdmFyaW91cyBzaW1wbGlmaWNhdGlvbnMgLyBvcHRpbWl6
YXRpb25zIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBhbmQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsYXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6Zm9ySG9zdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNI
YWRSZWNlbnRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9wdWxhdGVGcm9tRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1
cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNI
YWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9S
ZW1vdmVXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFG
cm9tRGlza0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZWZyZXNoRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2dGaWxl
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
d3JpdGVTdG9yZVRvRGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVPcldyaXRlU3RvcmVUb0Rpc2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25p
dG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJGcm9t
RGlzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cGVyZm9ybURhaWx5VGFza3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzaG91bGRSZW1vdmVEYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2Fs
Y3VsYXRlQW5kU3VibWl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDE3LTA3LTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbU09VUF0gU291cENvb2tpZUphciBpcyBuZXZlciByZWxlYXNlZCAocmVz
dWx0aW5nIGluIHNxbGl0ZSB0ZW1wIGZpbGVzIGx5aW5nIGFyb3VuZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmluZGV4IDEzODAyNWFj
MzYyMzgzMWY0MTg3NDM2NTlhY2FhOWI0MjBlOTI1MTguLjZmMDg4MzczYjE4MGQzYzYzNjQ2YWMx
YmExOGJjM2QyODhmYzdhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIE9yaWdpbkxvY2s6
OmxvY2soKQogICAgIG1fbXV0ZXgubG9jaygpOwogCiAjaWYgVVNFKEZJTEVfTE9DSykKLSAgICBt
X2xvY2tIYW5kbGUgPSBvcGVuRmlsZShtX2xvY2tGaWxlTmFtZSwgT3BlbkZvcldyaXRlKTsKKyAg
ICBtX2xvY2tIYW5kbGUgPSBvcGVuQW5kTG9ja0ZpbGUobV9sb2NrRmlsZU5hbWUsIE9wZW5Gb3JX
cml0ZSk7CiAgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQg
b3Igd2Ugd2VyZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgpAQCAt
NjAsOCArNjAsNiBAQCB2b2lkIE9yaWdpbkxvY2s6OmxvY2soKQogICAgICAgICBtX211dGV4LnVu
bG9jaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbG9ja0ZpbGUobV9sb2NrSGFu
ZGxlLCBMb2NrRXhjbHVzaXZlKTsKICNlbmRpZgogfQogCkBAIC03NSw5ICs3Myw3IEBAIHZvaWQg
T3JpZ2luTG9jazo6dW5sb2NrKCkKICAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpIAogICAgICAgICByZXR1cm47CiAKLSAgICB1bmxvY2tGaWxlKG1fbG9j
a0hhbmRsZSk7Ci0KLSAgICBjbG9zZUZpbGUobV9sb2NrSGFuZGxlKTsKKyAgICB1bmxvY2tBbmRD
bG9zZUZpbGUobV9sb2NrSGFuZGxlKTsKICAgICBtX2xvY2tIYW5kbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5j
cHAKaW5kZXggNDVjNDIzMThmZDM1MmY2ZjM3MjMyZmRjODdkZDhiOGNhZDEwYjRjZi4uYzE5MWEw
MTkzNmNiZGU5YWIwOWUwY2UxMTYxY2IzMTNjNzA4ZjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5jcHAKQEAgLTMyNyw0ICszMjcsMjcgQEAgTWFwcGVkRmlsZURhdGE6Ok1h
cHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCiAjZW5k
aWYKIH0KIAorUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgRmlsZUxvY2tNb2RlIGxvY2tNb2RlKQorewor
ICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgb3Blbk1vZGUpOworICAgIGlmIChoYW5k
bGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7CisKKyNpZiBVU0UoRklMRV9MT0NLKQorICAgIGJvb2wgbG9ja2Vk
ID0gbG9ja0ZpbGUoaGFuZGxlLCBsb2NrTW9kZSk7CisgICAgQVNTRVJUX1VOVVNFRChsb2NrZWQs
IGxvY2tlZCk7CisjZW5kaWYKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgdW5sb2Nr
QW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCit7CisjaWYgVVNFKEZJTEVf
TE9DSykKKyAgICBib29sIHVubG9ja2VkID0gdW5sb2NrRmlsZShoYW5kbGUpOworICAgIEFTU0VS
VF9VTlVTRUQodW5sb2NrZWQsIHVubG9ja2VkKTsKKyNlbmRpZgorICAgIGNsb3NlRmlsZShoYW5k
bGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmgKaW5kZXggN2I4OWRjNTJjMmE1MjI1NjNkNmRmZmY3YzU2ZWVhZGZmMDU4YzdhZC4u
YWQ1NDA1YzMzOTE2Yjc0NzQ1NGYwMDcxMmY2MTQyNmM2ZWZiODc1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTM1LDYgKzEzNSw5IEBAIFdFQkNPUkVfRVhQT1JUIGlu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1
Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdFQkNPUkVfRVhQT1JUIGludCByZWFkRnJvbUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAorV0VCQ09SRV9F
WFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBG
aWxlT3Blbk1vZGUsIEZpbGVMb2NrTW9kZSA9IExvY2tFeGNsdXNpdmUpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKKwogLy8gQXBw
ZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVu
IFBsYXRmb3JtRmlsZUhhbmRsZS4KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1
Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0IHdhcyBub3QuCiBib29sIGFwcGVuZEZpbGVDb250ZW50c1Rv
RmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQppbmRleCA4YWE1ZTU5MWVhMzI5OTBkODA4MjU0MzkwNDg3MzRmMDlkMzg4MDk3
Li40YmEwNzRhOWZhZjY0Y2JiOGNmNTFmMTI5YzA0ZjUwMjI0MzNjMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQpAQCAtMzU0LDI1ICszNTQsMjUgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMKICAgICBzdG9yZS0+cHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpOwogfQogCi0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyCistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nCiB7CiAgICAgYXV0byogc3RvcmUg
PSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+
ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgc3RvcmUtPnVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZygpOwogfQogCi0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluOihCT09MKXZhbHVl
IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAorLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0CiB7CiAgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBpZiAoIXN0b3JlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCB7IGhvc3QgfSwgZmFsc2UpOworICAgICAgICBz
dG9yZS0+dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsgaG9zdCB9LCBX
ZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5m
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBob3N0IH0sIHsgfSwgZmFsc2UpOwor
ICAgICAgICBzdG9yZS0+dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IGhvc3Qg
fSwgeyB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKIH0KIAogLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaAppbmRleCBjNjdlYTVkZGFiN2I4MmUyNDA4ODcyZjBiYjAwNTgxZWEzZjg0YzBiLi42Mjk5
NTc2Y2VkZTg2MDhiMTAxNzA1ODVmNTY3N2Y2Y2Y4NzM3MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaApAQCAtNTgsOCArNTgsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbDooZG91
YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0R3JhbmRmYXRoZXJp
bmdUaW1lOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW46KEJP
T0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAt
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29y
ZHNXZXJlU2Nhbm5lZDooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbDooQk9PTCl2
YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGQwMDNjNjI4MWVhYThkNTQw
MmFhMzViOWNhMjJlMDBhZGJlNTUwNTYuLmIxNWE3MDg2NzcyNGY2NGYwZjBiNDY1NGZkNzQxNWY0
M2M0NDQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIgogCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTM1LDEzICsz
NiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LWNvbnN0IHVuc2lnbmVkIG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkgPSAz
OwogY29uc3QgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3cgeyAzMCB9OwogY29uc3QgdW5z
aWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDYgfTsKIAotUmVmPFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKQorUmVm
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjcmVhdGUoVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRh
dGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV1RGTW92ZSh1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikpKTsKK30KKworUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zSGFuZGxlcikKKyAgICA6IG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlu
c0hhbmRsZXIoV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxl
cikpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKSBjb25zdApAQCAtNjMsNiArNjgs
MTUgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRGYXRoZXJlZChj
b25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pIGMKIAogICAgIHJldHVybiBtYXBFbnRyeS0+dmFs
dWUuZ3JhbmRmYXRoZXJlZDsKIH0KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Omhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4p
Cit7CisgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQocHJp
bWFyeURvbWFpbik7CisgICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaGFzSGFkVW5leHBp
cmVkUmVjZW50VXNlckludGVyYWN0aW9uKG1hcEVudHJ5LT52YWx1ZSk7Cit9CiAgICAgCiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9t
YWluKQogewpAQCAtNzIsOCArODYsNiBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvcgogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFpclR5cGUgU3RhdGlzdGljc1ZhbHVlOwotCiBzdGQ6
OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNy
ZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC04MSw3ICs5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRhCiAgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKCJ2ZXJzaW9uIiwgc3RhdGlzdGljc01vZGVsVmVyc2lvbik7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJlbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wIiwg
bV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSk7CiAgICAgCi0gICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNz
IiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBTdGF0aXN0aWNz
VmFsdWUmIG9yaWdpbikgeworICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoImJyb3dzaW5nU3Rh
dGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJlZ2luKCksIG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgYXV0
byYgb3JpZ2luKSB7CiAgICAgICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyKTsK
ICAgICB9KTsKIApAQCAtOTIsNyArMTA0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rl
cj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEKICAg
ICByZXR1cm4gZW5jb2RlcjsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBvcHVsYXRlRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmICghbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpKQpAQCAtMTQxLDcgKzE1Myw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EZWNvZGVyKEtleWVkRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIXN1Y2NlZWRlZCkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHByZXZhbGVudFJl
c291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRydWUpOworICAgIHVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNX
aXRob3V0VXNlckludGVyYWN0aW9uLCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSgpCkBAIC0xNTAsMzkg
KzE2MiwzMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9y
eSgpCiAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBtX29wZXJhdGlu
Z0RhdGVzLmNsZWFyKCk7CiAKLSAgICBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
eyB9LCB7IH0sIHRydWUpOworICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMo
eyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRp
c3RpY3M+JiYgc3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3MpIHsKLSAgICAgICAgLy8gRklY
TUU6IEluIHRoZSBjYXNlIHdoZXJlIHRoZSBzdGF0aXN0aWNzIGRvZXMgbm90IGFscmVhZHkgZXhp
c3QsIGl0IHNlZW1zIGluZWZmaWNpZW50IHRvIGNyZWF0ZQotICAgICAgICAvLyBhbiBlbXB0eSBv
bmUganVzdCB0byBtZXJnZSB0aGUgbmV3IG9uZSBpbnRvIGl0LgogICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0aWMuaGlnaExldmVsRG9t
YWluLCBbJnN0YXRpc3RpY10gewotICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRp
c3RpY3Moc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShzdGF0aXN0aWMpOwogICAgICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubWVyZ2Uoc3RhdGlz
dGljKTsKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
aG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk+JiYgaGFuZGxlcikKLXsKLSAgICBtX3Nob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7Ci19Ci0K
IGlubGluZSBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUGFydGl0aW9u
Q29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmICghc3RhdGlzdGlj
LmhhZFVzZXJJbnRlcmFjdGlvbiB8fCBXYWxsVGltZTo6bm93KCkgPiBzdGF0aXN0aWMubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBtX3RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKwogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92ZTsKICAgICBWZWN0b3I8
U3RyaW5nPiBkb21haW5zVG9BZGQ7Ci0gICAgCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRp
c3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGJvb2wg
c2hvdWxkUGFydGl0aW9uID0gc2hvdWxkUGFydGl0aW9uQ29va2llcyhyZXNvdXJjZVN0YXRpc3Rp
Yyk7CiAgICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRp
dGlvbmluZyAmJiAhc2hvdWxkUGFydGl0aW9uKSB7CkBAIC0xOTgsMjMgKzIwMywyMSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1JlbW92ZSA9
IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9SZW1vdmUp
LCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHko
ZG9tYWluc1RvQWRkKV0gKCkgewotICAgICAgICBpZiAobV9zaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9yRG9tYWluc0hhbmRsZXIpCi0gICAgICAgICAgICBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JEb21haW5zSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgZmFsc2UpOwor
ICAgICAgICBtX3VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKGRvbWFp
bnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZp
cnN0KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmIChkb21haW5z
VG9SZW1vdmUuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0FkZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNsZWFyRmly
c3QsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRv
bWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21h
aW5zVG9BZGQpXSAoKSB7Ci0gICAgICAgIGlmIChtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JE
b21haW5zSGFuZGxlcikKLSAgICAgICAgICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHNob3VsZENsZWFyRmlyc3QsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNU
b0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9B
ZGQpXSAoKSB7CisgICAgICAgIG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hh
bmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwog
ICAgIH0pOwogICAgIAotICAgIGlmIChjbGVhckZpcnN0KSB7CisgICAgaWYgKHNob3VsZENsZWFy
Rmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVz
b3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKICAgICAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0g
ZmFsc2U7CiAgICAgfSBlbHNlIHsKQEAgLTI1MSw3ICsyNTQsMTQgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248
dm9pZChSZXMKICAgICAgICAgcHJvY2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsKIH0K
IAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljcyhjb25z
dCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mIHBy
b2Nlc3NGdW5jdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAudmFsdWVzKCkpCisgICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJjZVN0YXRpc3RpYyk7
Cit9CisKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVbmV4cGlyZWRS
ZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0
aXN0aWMpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJh
Y3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4MSw3ICsyOTEsNyBAQCBWZWN0b3I8
U3RyaW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zVG9SZW1vdgogCiAgICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2Vz
OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFs
dWVzKCkpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmICFo
YXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljKSAmJiAoIXNob3VsZENoZWNrRm9y
R3JhbmRmYXRoZXJpbmcgfHwgIXN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKSkKKyAgICAgICAgaWYg
KHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRV
c2VySW50ZXJhY3Rpb24oc3RhdGlzdGljKSAmJiAoIXNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJp
bmcgfHwgIXN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKSkKICAgICAgICAgICAgIHByZXZhbGVudFJl
c291cmNlcy5hcHBlbmQoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CiAKICAgICAgICAgaWYg
KHNob3VsZENsZWFyR3JhbmRmYXRoZXJpbmcgJiYgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpCkBA
IC0yOTAsMzYgKzMwMCw2IEBAIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92CiAKICAgICByZXR1cm4g
cHJldmFsZW50UmVzb3VyY2VzOwogfQotICAgIAotVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVs
ZW1ldHJ5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNvcnRlZFByZXZhbGVudFJlc291
cmNlVGVsZW1ldHJ5KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZDsKLSAgICBmb3Ig
KGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmICghc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICB1bnNpZ25lZCBkYXlzU2luY2VVc2VySW50ZXJhY3Rpb24gPSBz
dGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPD0gV2FsbFRpbWUoKSA/IDAg
OiBzdGQ6OmZsb29yKChXYWxsVGltZTo6bm93KCkgLSBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUpIC8gMjRfaCk7Ci0gICAgICAgIHNvcnRlZC5hcHBlbmQoUHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnkgewotICAgICAgICAgICAgc3RhdGlzdGljLmRhdGFSZWNvcmRzUmVt
b3ZlZCwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24sCi0gICAgICAg
ICAgICBkYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sCi0gICAgICAgICAgICBzdGF0aXN0aWMuc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCksCi0gICAgICAgICAgICBzdGF0aXN0aWMu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCksCi0gICAgICAgICAgICBzdGF0
aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkKLSAgICAgICAgfSk7Ci0g
ICAgfQotICAgIAotICAgIGlmIChzb3J0ZWQuc2l6ZSgpIDwgbWluaW11bVByZXZhbGVudFJlc291
cmNlc0ZvclRlbGVtZXRyeSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHN0ZDo6c29ydChz
b3J0ZWQuYmVnaW4oKSwgc29ydGVkLmVuZCgpLCBbXShjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeSYgYSwgY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIGIpIHsKLSAgICAg
ICAgcmV0dXJuIGEuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA+Ci0g
ICAgICAgIGIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICB9
KTsKLSAgICAKLSAgICByZXR1cm4gc29ydGVkOwotfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlU3RhdGlzdGljc0ZvclJlbW92ZWREYXRhUmVjb3Jkcyhjb25zdCBI
YXNoU2V0PFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlRG9tYWlucykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggNTg0NjA3MjVmNTM3MDJhYjk2NWNkNzhlZDhiZjE5OGQwY2Y5
ZDQwNC4uMWIxZTIwMmJhNDYwMGZmNzlmZTU0Y2U2NDMzNDYwYWE2YjVmNDNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQxLDIyICs0MSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeSB7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRz
UmVtb3ZlZDsKLSAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBk
YXlzU2luY2VVc2VySW50ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luczsKLSAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
OwotICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87Ci19OworZW51bSBj
bGFzcyBTaG91bGRDbGVhckZpcnN0OwogCiAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGNv
bnNpZGVyIG1lcmdpbmcgdGhpcyB3aXRoIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4K
IGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKCk7CisgICAgdXNpbmcg
VXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHN0YXRpYyBS
ZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoVXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyPiBjcmVhdGVFbmNvZGVyRnJvbURhdGEoKSBjb25zdDsKLSAgICB2b2lk
IHJlYWREYXRhRnJvbURlY29kZXIoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CisgICAgdm9pZCBw
b3B1bGF0ZUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVkRGVjb2RlciYpOwogCiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgp
OyB9CiAgICAgdm9pZCBjbGVhckluTWVtb3J5KCk7CkBAIC02NSwzOCArNTksMzcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIGJvb2wgaXNHcmFuZEZhdGhlcmVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wg
aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHZv
aWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmKTsKIAotICAgIHZvaWQgc2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpPiYmKTsKLQog
ICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+KTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMp
OwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwogCi0gICAgdm9pZCBm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIGZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3Qp
OworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdm9pZCB1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFy
Rmlyc3QpOwogCiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljcyhjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mKTsKKyAgICB2b2lkIHBy
b2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNIYWRSZWNl
bnRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0
OwogICAgIFZlY3RvcjxTdHJpbmc+IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1v
dmVXZWJzaXRlRGF0YUZvcigpOwotICAgIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRy
eT4gc29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZVN0YXRpc3RpY3NGb3JSZW1vdmVkRGF0YVJlY29yZHMoY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpOwogCiAgICAgdm9pZCBoYW5kbGVGcmVzaFN0YXJ0
V2l0aEVtcHR5T3JOb1N0b3JlKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zVG9HcmFuZGZhdGhlcik7CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGlu
Z0RhdGVJZk5lY2Vzc2FyeSgpOwogCiBwcml2YXRlOgotICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJik7CiAKICAg
ICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OworICAgIGJvb2wgaGFzSGFk
VW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKSBjb25zdDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKICAgICBEZXF1ZTxXVEY6Oldh
bGxUaW1lPiBtX29wZXJhdGluZ0RhdGVzOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIGNsZWFyRmlyc3Qp
PiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcjsKKyAgICBVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciBtX3VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvckRvbWFpbnNIYW5kbGVyOwogCiAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX3Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb247CiAgICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlIHsgMjRfaCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkYTNmZTQw
Njk2YmQyOTlmZmU5YmIyMmExZTgwZjMwODNkOTg1YWUwLi5mNThjNWI4YmYyZTdkYjZkYTQ2YTUx
YTA4MDNiNzI5MmFhODA5YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
TW9uaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgpAQCAtNDQsMjUgKzQ1
LDE3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Ro
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNkZWZpbmUg
RU5BQkxFX01VTFRJUFJPQ0VTU19BQ0NFU1NfVE9fU1RBVElTVElDU19TVE9SRSAxCi0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjb25z
dGV4cHIgU2Vjb25kcyBtaW5pbXVtU3RhdGlzdGljc0ZpbGVXcml0ZUludGVydmFsIHsgNV9taW4g
fTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURv
bWFpbihjb25zdCBUJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6cHJpbWFyeURvbWFpbih2YWx1ZSk7CiB9CiAKLWNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1T
dGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgeyA1X21pbiB9OwotCi1zdGF0aWMgYm9vbCBub3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBz
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHRydWU7Ci1z
dGF0aWMgYXV0byBzaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB0cnVlOwotCiBzdGF0aWMgY29uc3Qg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIGRhdGFUeXBlc1RvUmVtb3ZlKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IGRhdGFUeXBl
cyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V2Vic2l0ZURhdGFUeXBlPih7CkBAIC04NywxMiArODAs
MTEgQEAgc3RhdGljIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBkYXRhVHlwZXNU
b1JlbW92ZSgpCiAgICAgcmV0dXJuIGRhdGFUeXBlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVQYXJ0aXRpb25Db29raWVz
Rm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRs
ZXIpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSgpKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFu
ZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKQorICAgIDog
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjcmVhdGUoV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxl
cikpKQogICAgICwgbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKQogICAgICwgbV9zdGF0aXN0aWNz
U3RvcmFnZVBhdGgocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAsIG1fdGVs
ZW1ldHJ5T25lU2hvdFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5SWZOZWNlc3NhcnkpCi0gICAgLCBtX3Rl
bGVtZXRyeVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKKyAgICAsIG1fZGFpbHlUYXNr
c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtMTAwLDM5ICs5MiwyMSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlcwogICAgIHJl
Z2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKICNlbmRpZgogCi0gICAgaWYgKHVwZGF0ZVBh
cnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikgewotICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS0+c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKFt1cGRh
dGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSBXVEZNb3ZlKHVwZGF0ZVBhcnRp
dGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcildIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpIHsKLSAgICAgICAgICAgIHVwZGF0ZVBhcnRpdGlvbkNvb2tpZXNGb3JE
b21haW5zSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJG
aXJzdCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIHJl
YWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwogICAgICAgICBzdGFydE1vbml0b3JpbmdTdGF0aXN0
aWNzU3RvcmFnZSgpOwogICAgIH0pOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaEFm
dGVyKDVfcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAg
ICBpZiAobV9zaG91bGRTdWJtaXRUZWxlbWV0cnkpCisgICAgICAgICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxhdGVBbmRTdWJtaXQoY29yZVN0b3JlKCkpOwor
ICAgIH0pOwogCi0gICAgbV90ZWxlbWV0cnlPbmVTaG90VGltZXIuc3RhcnRPbmVTaG90KDVfcyk7
Ci0gICAgbV90ZWxlbWV0cnlSZXBlYXRlZFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDI0X2gpOworICAg
IG1fZGFpbHlUYXNrc1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDI0X2gpOwogfQogCiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKQog
ewogfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIGFsd2F5cykKLXsKLSAgICBub3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkID0gYWx3YXlzOwotfQotCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZv
cmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKLXsKLSAgICBzaG91bGRDbGFzc2lmeVJl
c291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHZhbHVlOwotfQotCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wg
dmFsdWUpCi17Ci0gICAgc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFsdWU7Ci19CiAgICAgCiB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xhc3NpZnlSZXNvdXJjZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKIHsKQEAgLTE1MSwxNSArMTI1
LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVj
b3JkcygpCiAgICAgaWYgKHByZXZhbGVudFJlc291cmNlRG9tYWlucy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpOworICAgIHNl
dERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKHRydWUpOwogCi0gICAgLy8gU3dpdGNoIHRvIHRoZSBt
YWluIHRocmVhZCB0byBnZXQgdGhlIGRlZmF1bHQgd2Vic2l0ZSBkYXRhIHN0b3JlCiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBDcm9zc1Ro
cmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkocHJldmFsZW50UmVzb3VyY2VEb21haW5z
KSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92
ZSgpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIG5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJz
aXRlRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAvLyBCdXQgYWx3YXlzIHRvdWNoIHRoZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0b3JlIG9uIHRoZSB3b3JrZXIgcXVldWUuCisgICAgICAg
IFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoZGF0YVR5cGVzVG9SZW1vdmUoKSwg
V1RGTW92ZShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBtX3Nob3VsZE5vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkb21haW5zV2l0aERlbGV0ZWRX
ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BE
b21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weShkb21haW5z
V2l0aERlbGV0ZWRXZWJzaXRlRGF0YSldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNv
cmVTdG9yZSgpLnVwZGF0ZVN0YXRpc3RpY3NGb3JSZW1vdmVkRGF0YVJlY29yZHModG9wRG9tYWlu
cyk7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgpOworICAgICAgICAg
ICAgICAgIHNldERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKGZhbHNlKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE2OCwxNCArMTQwLDE0IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcygpCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
cygpCiB7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKLSAgICAgICAgaWYgKHNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKSB7CisgICAgICAgIGlmIChtX3Nob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKSB7CiAgICAgICAgICAgICBj
b3JlU3RvcmUoKS5wcm9jZXNzU3RhdGlzdGljcyhbdGhpc10gKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIHJlc291cmNlU3RhdGlzdGljKSB7CiAgICAgICAgICAgICAgICAgY2xhc3NpZnlSZXNvdXJj
ZShyZXNvdXJjZVN0YXRpc3RpYyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAg
ICByZW1vdmVEYXRhUmVjb3JkcygpOwogICAgICAgICAKLSAgICAgICAgaWYgKG5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCkgewogICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgICAgICAgICBXZWJQcm9jZXNzUHJveHk6Om5v
dGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTkwLDIwICsxNjIsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3IKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlz
dGljcyhXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0
YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIKLSAgICAvLyBpbnRlcmFjdGlvbiBhcyBmYXN0IGFz
IHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgY29yZVN0b3JlKCkuZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgLy8gRmlyZSBiZWZvcmUgcHJvY2Vz
c2luZyBzdGF0aXN0aWNzIHRvIHByb3BhZ2F0ZSB1c2VyIGludGVyYWN0aW9uIGFzIGZhc3QgYXMg
cG9zc2libGUgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBjb3JlU3RvcmUoKS51cGRhdGVD
b29raWVQYXJ0aXRpb25pbmcoKTsKICAgICBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
KCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZhdGhl
ckV4aXN0aW5nV2Vic2l0ZURhdGEoKQogewotICAgIC8vIFN3aXRjaCB0byB0aGUgbWFpbiB0aHJl
YWQgdG8gZ2V0IHRoZSBkZWZhdWx0IHdlYnNpdGUgZGF0YSBzdG9yZQorICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBXZWJQ
cm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRh
KGRhdGFUeXBlc1RvUmVtb3ZlKCksIG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hT
ZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRh
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIC8vIEJ1dCBhbHdheXMgdG91Y2ggdGhlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3Mgc3RvcmUgb24gdGhlIHdvcmtlciBxdWV1ZQotICAgICAgICAgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdG9wRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPEhhc2hTZXQ8U3RyaW5nPj46
OmNvcHkodG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jb3JlU3RvcmUoKS5oYW5k
bGVGcmVzaFN0YXJ0V2l0aEVtcHR5T3JOb1N0b3JlKFdURk1vdmUodG9wRG9tYWlucykpOworICAg
ICAgICBXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdl
YnNpdGVEYXRhKGRhdGFUeXBlc1RvUmVtb3ZlKCksIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgeworICAgICAgICAgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdG9wRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPEhhc2hTZXQ8U3RyaW5nPj46OmNvcHko
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBjb3JlU3RvcmUoKS5oYW5kbGVGcmVzaFN0YXJ0V2l0aEVtcHR5
T3JOb1N0b3JlKFdURk1vdmUodG9wRG9tYWlucykpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwpAQCAtMjQ4LDcgKzIxOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKQogICAgIH0KIAogICAgIGNv
cmVTdG9yZSgpLmNsZWFySW5NZW1vcnkoKTsKLSAgICBjb3JlU3RvcmUoKS5yZWFkRGF0YUZyb21E
ZWNvZGVyKCpkZWNvZGVyKTsKKyAgICBjb3JlU3RvcmUoKS5wb3B1bGF0ZUZyb21EZWNvZGVyKCpk
ZWNvZGVyKTsKIAogICAgIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWUgPSByZWFkVGltZTsK
IApAQCAtMjc4LDcgKzI0OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWZyZXNoRnJvbURpc2soKQogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY29yZVN0b3JlKCkucmVhZERhdGFGcm9tRGVjb2RlcigqZGVjb2Rlcik7CisgICAgY29y
ZVN0b3JlKCkucG9wdWxhdGVGcm9tRGVjb2RlcigqZGVjb2Rlcik7CiAgICAgbV9sYXN0U3RhdGlz
dGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1lOwogfQogICAgIApAQCAtMjk1LDEyICsyNjYsMTIg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKQogewogICAgIEJpbmFyeVNlbWFwaG9y
ZSBzZW1hcGhvcmU7CisgICAgLy8gTWFrZSBzdXJlIGFueSBwZW5kaW5nIHdvcmsgaW4gb3VyIHF1
ZXVlIGlzIGZpbmlzaGVkIGJlZm9yZSB3ZSB0ZXJtaW5hdGUuCiAgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFsmc2VtYXBob3JlLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIHsKICAgICAgICAgLy8gV3JpdGUgZmluYWwgZmlsZSBzdGF0ZSB0byBkaXNrLgogICAg
ICAgICBpZiAobV9kaWRTY2hlZHVsZVdyaXRlKQogICAgICAgICAgICAgd3JpdGVTdG9yZVRvRGlz
aygpOwogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkgb25nb2luZyB3b3JrIGluIG91ciBxdWV1
ZSBpcyBmaW5pc2hlZCBiZWZvcmUgd2UgdGVybWluYXRlLgogICAgICAgICBzZW1hcGhvcmUuc2ln
bmFsKCk7CiAgICAgfSk7CiAgICAgc2VtYXBob3JlLndhaXQoV2FsbFRpbWU6OmluZmluaXR5KCkp
OwpAQCAtMzE3LDcgKzI4OCw2IEBAIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9nRmlsZVBhdGgoKSBjb25zdAogICAgIGlmIChzdGF0aXN0aWNzU3RvcmFn
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIC8v
IFRPRE8gRGVjaWRlIHdoYXQgdG8gY2FsbCB0aGlzIGZpbGUKICAgICByZXR1cm4gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwogfQogCkBAIC0zMzIsNyArMzAyLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlU3RvcmVUb0Rpc2soKQogICAgIGF1
dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpOwogCiAgICAg
U3RyaW5nIHJlc291cmNlTG9nID0gcmVzb3VyY2VMb2dGaWxlUGF0aCgpOwotICAgIHdyaXRlRW5j
b2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgcmVzb3VyY2VMb2cpOworICAgIHdyaXRlRW5jb2Rl
clRvRGlzaygqZW5jb2RlciwgcmVzb3VyY2VMb2cpOwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0Zp
bGVTeW5jVGltZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzV3JpdGVU
aW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0zNDksOCArMzE5LDggQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkK
ICAgICBpZiAodGltZVNpbmNlTGFzdFdyaXRlIDwgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJ
bnRlcnZhbCkgewogICAgICAgICBpZiAoIW1fZGlkU2NoZWR1bGVXcml0ZSkgewogICAgICAgICAg
ICAgbV9kaWRTY2hlZHVsZVdyaXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIFNlY29uZHMgZGVsYXlV
bnRpbCA9IG1pbmltdW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgLSB0aW1lU2luY2VMYXN0
V3JpdGUgKyAxX3M7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2hBZnRl
cihkZWxheVVudGlsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgICAgICBTZWNvbmRzIGRlbGF5ID0gbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRl
cnZhbCAtIHRpbWVTaW5jZUxhc3RXcml0ZSArIDFfczsKKyAgICAgICAgICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTM2MCwzMSArMzMwLDYgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAgICB3
cml0ZVN0b3JlVG9EaXNrKCk7CiB9CiAKLXN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFu
ZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShw
YXRoLCBtb2RlKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
Ci0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotCi0jaWYgRU5BQkxF
KE1VTFRJUFJPQ0VTU19BQ0NFU1NfVE9fU1RBVElTVElDU19TVE9SRSkKLSAgICBib29sIGxvY2tl
ZCA9IGxvY2tGaWxlKGhhbmRsZSwgV2ViQ29yZTo6TG9ja0V4Y2x1c2l2ZSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChsb2NrZWQsIGxvY2tlZCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBoYW5kbGU7Ci19
Ci0KLXN0YXRpYyB2b2lkIGNsb3NlQW5kVW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotI2lmIEVOQUJMRShNVUxU
SVBST0NFU1NfQUNDRVNTX1RPX1NUQVRJU1RJQ1NfU1RPUkUpCi0gICAgYm9vbCB1bmxvY2tlZCA9
IHVubG9ja0ZpbGUoaGFuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHVubG9ja2VkLCB1bmxvY2tl
ZCk7Ci0jZW5kaWYKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLX0KLQogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKQEAgLTQwNCw3ICszNDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVyVG9EaXNrKEtleWVkRW5jb2RlciYgZW5jb2RlciwgYwog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRv
RmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBjbG9z
ZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsK
IAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+
c2l6ZSgpKSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTogV2Ugb25seSB3cm90ZSAlZCBvdXQg
b2YgJWQgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3cml0dGVuQnl0ZXMp
LCByYXdEYXRhLT5zaXplKCkpOwpAQCAtNDIzLDEyICszNjgsNiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlU3RvcmVGcm9tRGlzaygpCiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJVbmFibGUgdG8gZGVsZXRlIHN0
YXRpc3RpY3MgZmlsZTogJXMiLCByZXNvdXJjZUxvZ1BhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5RGF0YSgp
Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgY29yZVN0b3JlKCkuY2xl
YXJJbk1lbW9yeSgpOwotfQotCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwpAQCAtNDQ2LDcgKzM4NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpCiAgICAgICAg
ICAgICByZWZyZXNoRnJvbURpc2soKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbDoKLSAgICAgICAgICAgIGNsZWFy
SW5NZW1vcnlEYXRhKCk7CisgICAgICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7
CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yYWdlTW9uaXRvciA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDcxLDEyICs0MTAsMTAgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3Rv
cmFnZUlmTmVlZGVkKCkKIAogICAgIHJlZnJlc2hGcm9tRGlzaygpOwogfQotICAgIAotICAgIAor
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAoKSBjb25zdAogewotICAgIC8vIERvIG5vdGhp
bmcKIH0KICNlbmRpZgogCkBAIC00ODksMjAgKzQyNiwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZURlY29kZXJG
cm9tRAogICAgIAogICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7CiAgICAgaWYgKCFnZXRGaWxl
U2l6ZShoYW5kbGUsIGZpbGVTaXplKSkgewotICAgICAgICBjbG9zZUFuZFVubG9ja0ZpbGUoaGFu
ZGxlKTsKKyAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICAKICAgICBzaXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYg
KCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUsIGJ5dGVzVG9SZWFkKSkgewotICAgICAgICBj
bG9zZUFuZFVubG9ja0ZpbGUoaGFuZGxlKTsKKyAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhh
bmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFy
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgIHNpemVfdCB0b3RhbEJ5dGVzUmVhZCA9IHJlYWRG
cm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCi0gICAgY2xv
c2VBbmRVbmxvY2tGaWxlKGhhbmRsZSk7CisgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7
CiAKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNTE1LDE4ICs0NTIsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MoKQogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBjb3JlU3RvcmUoKS5pbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5l
Y2Vzc2FyeSgpOwotCi0gICAgc3VibWl0VGVsZW1ldHJ5SWZOZWNlc3NhcnkoKTsKLX0KLQotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNz
YXJ5KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIGlmICgh
c2hvdWxkU3VibWl0VGVsZW1ldHJ5KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc3VibWl0
VGVsZW1ldHJ5KCk7CisgICAgaWYgKG1fc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQorICAgICAgICBz
dWJtaXRUZWxlbWV0cnkoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN1Ym1pdFRlbGVtZXRyeSgpCkBAIC01NDcsNyArNDc0LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkK
ICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgICAgICBz
dGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygp
OwogCi0gICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIGNvcmVTdG9y
ZSgpLnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluU3Ry
aW5nIH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIH0pOwogfQogCkBAIC01NzEs
MTAgKzQ5OCw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRV
c2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwsIFdURjo6CiAgICAgfQogCiAgICAgbV9zdGF0
aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyBwb3RlbnRpYWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5
aW5nPwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hhc0hhZFVzZXJJbnRlcmFjdGlvbiA9IGNvcmVT
dG9yZSgpLmhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoaGFzSGFkVXNlckludGVyYWN0aW9uKTsKKyAgICAgICAgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24gPSBjb3JlU3RvcmUoKS5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24o
cHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFto
YWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhZFVzZXJJbnRlcmFj
dGlvbik7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNjc1LDI3ICs2MDEsMjggQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhjb25zdCBVUkwmIHMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5n
KCkKIHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBjb3JlU3RvcmUoKS5m
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICAgICAgY29yZVN0b3JlKCku
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQogewogICAgIC8v
IEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBj
YWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVj
dG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZp
cnN0XSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGRvbWFpbnNUb1JlbW92ZSA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+
Pjo6Y29weShkb21haW5zVG9SZW1vdmUpLCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGll
cjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvQWRkKSwgc2hvdWxkQ2xlYXJGaXJzdF0g
eworICAgICAgICBjb3JlU3RvcmUoKS51cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
KGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1v
cnkoKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
ICAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwogICAgIH0pOwpAQCAtNzAzLDYg
KzYzMCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVt
b3J5KCkKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KCkKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CiAgICAgICAgIGNvcmVTdG9yZSgpLmNsZWFySW5NZW1vcnkoKTsKICAgICAg
ICAgZGVsZXRlU3RvcmVGcm9tRGlzaygpOwpAQCAtNzQxLDI2ICs2NjksMTggQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRz
IHNlY29uZHMpCiBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUmVt
b3ZlRGF0YVJlY29yZHMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIGlmIChtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25v
dG9uaWNUaW1lOjpub3coKSA8IChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1f
bWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKSkKKyAgICBpZiAobV9kYXRhUmVj
b3Jkc0JlaW5nUmVtb3ZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkYXRhUmVjb3Jk
c0JlaW5nUmVtb3ZlZCgpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
bV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
LSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSB0cnVlOworICAgIHJldHVybiAhbV9s
YXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgfHwgTW9ub3RvbmljVGltZTo6bm93KCkgPj0g
KG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkICsgbV9taW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6ZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBl
bmRpbmcgPSBmYWxzZTsKKyAgICBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVkID0gdmFsdWU7Cisg
ICAgaWYgKG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQpCisgICAgICAgIG1fbGFzdFRpbWVEYXRh
UmVjb3Jkc1dlcmVSZW1vdmVkID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzM2JmNzE5ZTZiN2E3OTc4
OWMxNDk2MzZhZmUwMWIyYTJmYzk2YWE0Li5mMmRkYmU4YzI3MWRmNmIzMTZhNGQxNzUwYmVjYTQx
MTE4ZmMxODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01NCwxOSArNTQsMjIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdDsKKworLy8gRklY
TUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3ZpbmcgRmlsZVN5c3RlbSBJL08gdG8gYSBzZXBhcmF0
ZSBjbGFzcy4KIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgdXNpbmcgVXBkYXRlUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk+
OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVQYXJ0
aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVQYXJ0aXRpb25Db29raWVzRm9y
RG9tYWluc0hhbmRsZXIgPSB7IH0pCisgICAgdXNpbmcgVXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwg
U2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0geyB9KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodXBkYXRlUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikp
KTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKLSAg
ICBzdGF0aWMgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeShib29sKTsKKyAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2Vy
ZVNjYW5uZWQoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdmFsdWU7IH0KKyAgICB2b2lkIHNl
dFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVlKSB7IG1fc2hvdWxkU3VibWl0VGVsZW1l
dHJ5ID0gdmFsdWU7IH0KIAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucyk7CiAKQEAg
LTg1LDggKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJh
bWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVj
dGVkVG8pOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0g
ICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Fk
ZCwgYm9vbCBjbGVhckZpcnN0KTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygp
OworICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQWRkLCBTaG91bGRDbGVhckZpcnN0KTsKICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogCkBAIC0xMDAsNyAr
MTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMp
OwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBT
dHJpbmcmLCBVcGRhdGVQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXImJik7CisgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5nZXQoKTsgfQogICAgIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
Y29yZVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Z2V0KCk7IH0KQEAgLTEyNywxNSArMTMwLDEyIEBAIHByaXZhdGU6CiAgICAgV2FsbFRpbWUgc3Rh
dGlzdGljc0ZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Owog
ICAgIHZvaWQgcGxhdGZvcm1FeGNsdWRlRnJvbUJhY2t1cCgpIGNvbnN0OwogICAgIHZvaWQgZGVs
ZXRlU3RvcmVGcm9tRGlzaygpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeURhdGEoKTsKICAgICB2
b2lkIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVkKCk7CiAgICAgdm9p
ZCByZWZyZXNoRnJvbURpc2soKTsKLSAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5
KCk7CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRmlsZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0
IFN0cmluZyYgcGF0aCkgY29uc3Q7CiAgICAgdm9pZCBwZXJmb3JtRGFpbHlUYXNrcygpOwogICAg
IGJvb2wgc2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdDsKLSAgICB2b2lkIGRhdGFSZWNv
cmRzQmVpbmdSZW1vdmVkKCk7Ci0gICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7Cisg
ICAgdm9pZCBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChib29sKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwpAQCAtMTUy
LDEyICsxNTIsMTQgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9zdGF0aXN0aWNzU3Rv
cmFnZVBhdGg7CiAgICAgV2FsbFRpbWUgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7Ci0gICAgUnVuTG9vcDo6
VGltZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RU
aW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fZGFpbHlUYXNrc1RpbWVyOwogICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQ7CiAgICAgU2Vjb25kcyBtX21pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9OwotICAgIGJvb2wgbV9kYXRh
UmVjb3Jkc1JlbW92YWxQZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGF0YVJlY29yZHNC
ZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRTY2hlZHVsZVdyaXRlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRTdWJtaXRUZWxl
bWV0cnkgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5LmNwcAppbmRleCBhYWM1NDBjYjM5MjA4MjcwOTk5MGQwZDliNmY5ODdlZTli
OGRkZGNjLi5lMTIxMjEzYTlmNWZkNTk1NWE5YTllZDBkNWEwN2Y4NWY4ZmYxMTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCkBAIC0zOSw5ICszOSw0OSBAQAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotc3RhdGljIGF1dG8gbm90
aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQgPSBmYWxzZTsKLSAgICAKKworY29uc3Qg
dW5zaWduZWQgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9IDM7CitzdGF0
aWMgYm9vbCBub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9IGZhbHNlOworCitz
dHJ1Y3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkgeworICAgIHVuc2lnbmVkIG51bWJlck9m
VGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQ7CisgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb247
CisgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uOworICAgIHVuc2lnbmVkIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luczsKKyAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvOworfTsKKworc3RhdGljIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29y
dGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBW
ZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZDsKKyAgICBzdG9yZS5wcm9j
ZXNzU3RhdGlzdGljcyhbJnNvcnRlZF0gKGF1dG8mIHN0YXRpc3RpYykgeworICAgICAgICBpZiAo
IXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHVuc2lnbmVkIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3Io
KFdhbGxUaW1lOjpub3coKSAtIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSkgLyAyNF9oKTsKKyAgICAgICAgc29ydGVkLmFwcGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVt
ZXRyeSB7CisgICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkLAorICAgICAg
ICAgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiwKKyAgICAgICAgICAgIGRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvbiwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zLnNpemUoKSwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQorICAgICAgICB9KTsKKyAgICB9KTsKKworICAg
IGlmIChzb3J0ZWQuc2l6ZSgpIDwgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRy
eSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHN0ZDo6c29ydChzb3J0ZWQuYmVnaW4oKSwg
c29ydGVkLmVuZCgpLCBbXShjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYSwgY29u
c3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIGIpIHsKKyAgICAgICAgcmV0dXJuIGEuc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2lucyArIGEuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA+CisgICAgICAgIGIuc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cyArIGIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICB9KTsKKworICAgIHJldHVy
biBzb3J0ZWQ7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgcmVz
b3VyY2VzLCBzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpCiB7CiAgICAgaWYgKHJlc291cmNlcy5p
c0VtcHR5KCkgfHwgcmVzb3VyY2VzLnNpemUoKSA8IGJlZ2luICsgMSB8fCByZXNvdXJjZXMuc2l6
ZSgpIDwgZW5kICsgMSkKQEAgLTE4OCw3ICsyMjgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb25zdCBSZXNvdXJjZUxvYWRT
dAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIGF1dG8gc29y
dGVkUHJldmFsZW50UmVzb3VyY2VzID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLnNvcnRl
ZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KCk7CisgICAgYXV0byBzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXMgPSBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUpOwogICAgIGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZCAmJiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5v
dGlmeVBhZ2VzKDAsIDAsIDApOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggYjA3ZWVmZWYzYjZlNmViMjI2MzFkY2MwMGQ3MWQxZGFjNDk0NmViZC4uN2JjZjY5OTU1YTM0
YjczOTNhMDMyMzAyNDFiODNmYzIzMjk1ZjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTA5
OSwxMCArMTA5OSwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWlucyhPcHRpb25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNz
UG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpV
cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWlu
c1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpKTsKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6VXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENs
ZWFyRmlyc3Q6OlllcykpOwogfQogI2VuZGlmCiAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogCiAgICAgaWYgKGVuYWJsZWQpIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBz
aG91bGRDbGVhckZpcnN0KSB7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNo
b3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgewogICAgICAgICAgICAgdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92
ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICAgICAgfSk7CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggYWIzNTQzYjNiMjAyZWJjMWU4Njc5MDVhOGFlY2Q5MGNjNWVjMjBk
Ni4uMWFjNWZjZTk2YmFiZWFlMzIzMzJlOWM3ZmUyZjZkMWJjZTJmYjEwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCkBAIC02Miw2ICs2Miw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsK
IHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2VuZGlmCiAKK2VudW0gY2xhc3MgU2hvdWxkQ2xl
YXJGaXJzdCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKQEAgLTEwMSw3ICsx
MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zLCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykK
LSAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmlyc3QpOworICAgIHZvaWQg
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOwogI2VuZGlmCiAgICAgdm9pZCByZXNvbHZl
RGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI5N2ZmMzBhYzFkMTJjOWRjNWMwY2E0NmNi
NzQyOWFlOTAxOGEyYjUuLjAyOWEzNTc5ZTBlNWQyY2FiZGMyODhiNzdlMzY5YmE2YTk0MmVmZmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0wNy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVu
dCBGdWxnaGFtLgorCisgICAgICAgIFJlbmFtZSBzb21lIG9mIHRoZSB0ZXN0UnVubmVyIEFQSSBm
b3IgY2xhcml0eSBhbmQgdG8gYmV0dGVyIG1hdGNoIHdoYXQgaXQgY2FsbHMKKyAgICAgICAgaW50
ZXJuYWxseS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
dGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorCiAyMDE3LTA3LTA5
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgV2Vi
R0wyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGJ1aWxkLXdlYmtpdApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggNWNhYjhhMjJkMDIwMDY4ZGI1NTM4MTIxZmE4ZWYyMmRiNzQxNjJjNy4u
OTM2ZWYzMTZiODFmNmRiNjc3MWM1MTg2NDgwODg2MWU4MzlmOTdjNCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0yNjYsOCArMjY2LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2
YWx1ZSk7CisgICAgdm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Cisg
ICAgdm9pZCBzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3Ry
aW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRU
ZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1No
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4gdmFs
dWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggNDM0YzU5MTUzNGVjOGFkYmIxNDA2Njc1Y2ZmODJiMTg4MTZjYWRj
Ni4uODM3Nzg2ODhhYzA3MjVkMGRiODBlMjg4MjgwMzMwMjlkMGM1NmQ4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBA
IC0xNDE5LDEzICsxNDE5LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Byb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
dGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIikpOworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIpKTsKICAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZv
ck9uZURvbWFpbihKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdFJ1
bm5lcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5n
UmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4+IGtleXM7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVl
czsKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0ZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihKU1N0cmluCiAgICAgICAg
IHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
Rm9yT25lRG9tYWluIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1NldFNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0IikpOwogICAgIFdLUmV0YWluUHRyPFdLRGljdGlv
bmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMu
ZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOwogICAgIAogICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IGFlYWFkOTZiNWVmYjE4YmM0NmQxYzMyOGE3NzU4ZjU1ZjVhOGM0MzEuLjUxN2Vl
YmM0NjdiMGZhYmJlMDE5NzM1N2RkNjgzZmM1NDAyYzE4MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zNTQsOCArMzU0
LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxi
YWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sodW5zaWdu
ZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHMoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXJGb3JPbmVEb21haW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOworICAg
IHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgc3Rh
dGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3RO
YW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBpc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShKU1N0cmluZ1JlZiBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDA2MDNjNjRhYTNiMTMwOTk1ODE0ZGQ3YmJiOWM4MmFlYWEzYTNkNzku
LjQ0ODY5YmNiY2U5MzUyYzcwYTU4M2JiNjFiNzQxMjFjOGQxNWE1ZGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzAwLDExICsyMzAwLDExIEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
VXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihX
S1N0cmluZ1JlZiwgYm9vbCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91
bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChXS1N0cmluZ1JlZiwgYm9vbCkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGE5YzBhM2I2Y2QxZWJlYzUz
ZGRlNDNlZTY2ZGI2MTc2OTQ3NmNiZTAuLjk3NTM2ZTIwNzE1NmU2MjYyYWZiODdjNTU2ZGY3YzI3
OTEzNWIxY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE2
Miw4ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2b2lkIHN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIHN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NO
b3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAy
ZDc3ODFjMTVmMWZkNGZlNTdhNGMxOGM1NjZkMjI3Mjc0MTE1OTFhLi4yYzQ0Y2MyN2VhYjJmZDQ3
ODBmNzVlMTliZmE5M2I5NzI5MmE2NmZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcApAQCAtMTA0MiwxMiArMTA0MiwxMiBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzRmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRp
c3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXJGb3JPbmVEb21haW4iKSkgeworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JIb3N0IikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIAogICAgICAgICBXS0RpY3Rpb25h
cnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVm
PihtZXNzYWdlQm9keSk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9z
dE5hbWVLZXkuZ2V0KCkpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nh
c3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgdmFsdWVLZXkuZ2V0KCkpKTsKICAgICAgICAgCi0gICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyRm9yT25lRG9tYWluKGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMDQ0YWRmZjU5
ZTQ5OTdjMDhkYzZjYzZjZmU2OGJhZDg4ZDdiM2FlMy4uOTI2YzM3NGZiZjc0Mzc0YmYyNTdhZjMz
MWM2YWVkM2ExNmFkYzlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzA2LDE0ICszMDYsMTQgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6c3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQog
ICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc107CiB9CiAKLXZv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZygpCiB7Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXJdOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdChXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjp2YWx1ZSBmb3JI
b3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07CiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1
MGM3ZTYzYzE3N2IwMDliNDUxOGYxNTU2NTRkNWFlMDAwMjRjMzAuLmE5ZDY2Y2RhNzY1NjUzNGJm
Yjg2ZGY2Y2UzOGJlNDU2ODZiOWVmODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNy0w
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
IGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IFVwZGF0ZSBleGlzdGluZyBsYXlvdXQgdGVzdHMgdG8gcmVmbGVjdCB0ZXN0UnVubmVyIEFQSSBj
aGFuZ2VzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFy
dGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVv
dXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi5odG1sOgorCiAyMDE3LTA3LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogVXNlciBpbnRlcmFjdGlvbiBz
aG91bGQgYWx3YXlzIGdvIHRvIHRvcCBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5k
LXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0
aXRpb25lZC1jb29raWUtZGVsZXRpb24uaHRtbAppbmRleCAyZGE0NGUzMmJiMzMzOWQ3MzQwYThh
MWZiYTAzZjYwNTM5MWE4MzQ5Li4xMTg2ZmRmYmQ0N2VkMmFmNTZjZDIwOWRkYmYzZWIzMmQ3NmMy
NDYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRpb24u
aHRtbApAQCAtOTMsNyArOTMsNyBAQAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChmYWxzZSk7CiAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbCgwKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUpOwor
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JP
bmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUpOwogICAgICAg
ICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9s
b2NhbGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBh
cnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25l
ZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5odG1s
CmluZGV4IDQ5OWI4NDk0ZjA0Mjk1MzYzMmZkZmFiNDBlOWY5MTUxMTBiZmE5YjEuLmQ0OTRhZTM4
ODk3MjhjZWE1OWYzMjhlZjBiZGQzYmE3ZDFiYzY5NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFu
ZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRp
bWVvdXQuaHRtbApAQCAtNDAsNyArNDAsNyBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckFuZENvbnRpbnVlKCkgewotICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAg
ICAgICAgIHJ1blRlc3QoKTsKICAgICB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgICAgICBp
ZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2Nh
bGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFz
IHByZXZhbGVudCByZXNvdXJjZS4iKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAKICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNl
ci1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbAppbmRleCBkOWIxMjVkMTExMjdlZjgyOTMxZTc5YjZhMzEzY2Ez
NzgxYjNhYjFiLi4zMGU4ZjZlNGRkYWNiMzQ1NGIzZDI0MTE0ZDVhMGQ5ZGZiMTUyYmViIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLmh0bWwKQEAgLTczLDcgKzczLDcgQEAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09ICIiICYm
IHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUp
OworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JPbmVEb21haW4oImxvY2FsaG9zdCIsIHRydWUpOwogCiAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>