<?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>206593</bug_id>
          
          <creation_ts>2020-01-22 10:04:00 -0800</creation_ts>
          <short_desc>Background thread with ITP Database should lock when the network process is suspended</short_desc>
          <delta_ts>2020-01-23 14:49:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609596</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-22 10:04:00 -0800</bug_when>
    <thetext>This is causing WebKit errors when database interaction occurs after the process has been suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609597</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-22 10:04:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/58800397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609598</commentid>
    <comment_count>2</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-22 10:05:25 -0800</bug_when>
    <thetext>The correct radar is &lt;rdar://problem/58713379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609619</commentid>
    <comment_count>3</comment_count>
      <attachid>388440</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-22 10:52:17 -0800</bug_when>
    <thetext>Created attachment 388440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609884</commentid>
    <comment_count>4</comment_count>
      <attachid>388496</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-22 17:36:56 -0800</bug_when>
    <thetext>Created attachment 388496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609887</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-22 17:39:05 -0800</bug_when>
    <thetext>Bots were green but this was actually causing flaky API test failures. This patch should fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610275</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-23 12:54:37 -0800</bug_when>
    <thetext>I suggest we just queue a task to hang the background queue, like we do in StorageManagerSet::suspend(). I believe this would make things a lot simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610290</commentid>
    <comment_count>7</comment_count>
      <attachid>388587</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-23 13:21:53 -0800</bug_when>
    <thetext>Created attachment 388587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610307</commentid>
    <comment_count>8</comment_count>
      <attachid>388587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-23 13:49:32 -0800</bug_when>
    <thetext>Comment on attachment 388587
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1167
&gt; +    postTask([this, protectedThis = makeRef(*this), completionHandler = completionHandlerCaller.release()] () mutable {

protectedThis is not needed, postTask() does this for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610316</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-23 14:01:45 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 388587 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388587&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1167
&gt; &gt; +    postTask([this, protectedThis = makeRef(*this), completionHandler = completionHandlerCaller.release()] () mutable {
&gt; 
&gt; protectedThis is not needed, postTask() does this for you.

Got it, I&apos;ll remove before landing. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610317</commentid>
    <comment_count>10</comment_count>
      <attachid>388589</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-01-23 14:06:40 -0800</bug_when>
    <thetext>Created attachment 388589
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610323</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-01-23 14:19:51 -0800</bug_when>
    <thetext>This is actually:
&lt;rdar://problem/58713379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610339</commentid>
    <comment_count>12</comment_count>
      <attachid>388589</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-23 14:49:19 -0800</bug_when>
    <thetext>Comment on attachment 388589
Patch for landing

Clearing flags on attachment: 388589

Committed r255039: &lt;https://trac.webkit.org/changeset/255039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610340</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-23 14:49:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388440</attachid>
            <date>2020-01-22 10:52:17 -0800</date>
            <delta_ts>2020-01-22 17:36:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206593-20200122105216.patch</filename>
            <type>text/plain</type>
            <size>35333</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzU1ZTc4MDExOGE5ODgx
ZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLjFkOGY2YTEzMTZjYTU4MDI4NDM0MTdjNDA1NDdmZDI1
YTgwMzIwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMDEtMjIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIElUUCBEYXRh
YmFzZSBzaG91bGQgcHJvcGVybHkgaGFuZGxlIHN0YXRpc3RpY3Mgd2hlbiB0aGUgbmV0d29yayBw
cm9jZXNzIGlzIHN1c3BlbmRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg3MTMzNzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXBsZW1lbnRzIGhhbmRsaW5nIG9mIElUUCBkYXRhIGZvciB0aGUgU1FMaXRlIGJhY2tlbmQK
KyAgICAgICAgZHVyaW5nIGEgcHJvY2VzcyBzdXNwZW5zaW9uLiBJdCBzdG9yZXMgYW55IG9ic2Vy
dmF0aW9ucyBmcm9tIHRoZQorICAgICAgICBXZWJQcm9jZXNzIG9yIFVJUHJvY2VzcyB0byBiZSBh
ZGRlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiB0aGUgcHJvY2VzcyByZXN1bWVzLAorICAgICAgICBi
dXQgaWdub3JlcyBhbGwgb3RoZXIgYXR0ZW1wdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YWJh
c2UuCisgICAgICAgIFByb2Nlc3NpbmcgcmVxdWVzdHMgYW5kIGNvb2tpZSB1cGRhdGVzIHdpbGwg
YmUgY29tcGxldGVkIHdoZW4gdGhlIHByb2Nlc3MgcmVzdW1lcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UpOgorICAgICAg
ICBEdXJpbmcgYSBwcm9jZXNzIHN1c3BlbnNpb24sIHdlIGNhbid0IGNoZWNrIGlmIGEgbGluayBk
ZWNvcmF0aW9uIGNhbWUKKyAgICAgICAgZnJvbSBhIHByZXZhbGVudCByZXNvdXJjZSwgc28gd2Ug
bXVzdCBjaGVjayBkdXJpbmcgdGhlIG1lcmdlIG9uY2UKKyAgICAgICAgdGhlIHByb2Nlc3MgaGFz
IHJlc3VtZWQuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6CisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGFzc2lmeVByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzeW5jU3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRlbHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNv
b2tpZUJsb2NraW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1
bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICBUaGVzZSBhcmUgZnVuY3Rpb25zIHdoaWNo
IG1pZ2h0IGNhdXNlIGFuIGVycm9yIGlmIGV4ZWN1dGVkIGR1cmluZworICAgICAgICBhIHByb2Nl
c3Mgc3VzcGVuc2lvbi4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25z
IG1ha2Ugb2JzZXJ2YXRpb25zIGFib3V0IGRvbWFpbnMgdGhhdCB3ZSBkb24ndCB3YW50IElUUCAK
KyAgICAgICAgdG8gaWdub3JlLCBzbyB3ZSB3aWxsIHN0b3JlIHRoZSBkb21haW5zIGluIGEgbWFw
IHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZworICAgICAgICBkYXRhYmFzZSBpbmZvcm1h
dGlvbiB1cG9uIHJlc3VtaW5nLgorCisgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldFByb2Nlc3NJc1N1c3BlbmRlZCk6CisgICAgICAgSWYgdGhl
IHByb2Nlc3MgaXMgcmVzdW1pbmcsIHRoaXMgZnVuY3Rpb24gbWVyZ2VzIGFsbCBzdGF0aXN0aWNz
CisgICAgICAgb2JzZXJ2ZWQgZHVyaW5nIHRoZSBzdXNwZW5zaW9uLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRQcm9jZXNzSXNTdXNwZW5kZWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorCiAyMDIwLTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQyBIYXJkZW5pbmddIE9ubHkgcHJvY2VzcyBNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3MgbWVzc2FnZXMgd2hlbiBzZW50IGJ5IHRoZSBVSVByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCmluZGV4IDhkOTMwMzgyZDdmYzU3YjA2M2I1YzJiZDgwMWRhNmExMjI2Njg1NWMuLmZhNjJi
MTdmMGY2NmEzODgzZTczYzE1MGJmOWZlZjA4OTM5N2M1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzAzLDYgKzcw
Myw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRl
RnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmICghaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTcxNiw2ICs3
MTksMTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxh
dGVGcm9tTWVtb3J5U3RvcmUoY29uc3QgUmVzb3VyY2UKICAgICAgICAgaW5zZXJ0RG9tYWluUmVs
YXRpb25zaGlwcyhzdGF0aXN0aWMudmFsdWUpOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpCit7CisgICAgZm9yIChh
dXRvJiBmcm9tRG9tYWluIDogc3RhdGlzdGljLnRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSkg
eworICAgICAgICBpZiAoaXNQcmV2YWxlbnRSZXNvdXJjZShmcm9tRG9tYWluKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCYgY3VycmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03NDksNyArNzYxLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50JiBjdXJyZW4KICAgICAgICAgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKG90
aGVyLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAob3RoZXIuZGF0YVJlY29yZHNSZW1vdmVk
ID4gY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCkKICAgICAgICAgdXBkYXRlRGF0YVJlY29yZHNS
ZW1vdmVkKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQp
OwotICAgIGlmIChvdGhlci5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSAm
JiAhY3VycmVudElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwpCisgICAgaWYg
KGdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKG90aGVyKSAmJiAhY3VycmVu
dElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwpCiAgICAgICAgIHNldElzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwob3RoZXIucmVnaXN0cmFibGVEb21haW4s
IHRydWUpOwogfQogCkBAIC03NzIsMTcgKzc4NCwyNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0
YQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvJiBz
dGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7Ci0gICAgICAgIGlmICghZG9tYWluSUQoc3RhdGlzdGlj
LnJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgIGluc2VydE9ic2VydmVkRG9tYWluKHN0
YXRpc3RpYyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lcmdlU3RhdGlzdGljKHN0YXRp
c3RpYyk7Ci0gICAgfQorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICAv
LyBTdG9yZSBhbnkgc3RhdGlzdGljcyBvYnNlcnZlZCBkdXJpbmcgYSBwcm9jZXNzIHN1c3BlbnNp
b24uCisgICAgICAgIC8vIFdlIHdpbGwgaW5zZXJ0IHRoZW0gaW50byB0aGUgZGF0YWJhc2Ugb25j
ZSB0aGUgcHJvY2VzcyByZXN1bWVzLgorICAgICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0
YXRpc3RpY3MpIHsKKyAgICAgICAgICAgIG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZShz
dGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4sIFsmc3RhdGlzdGljXSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoc3RhdGlzdGljKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNz
KSB7CisgICAgICAgICAgICBpZiAoIWRvbWFpbklEKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgICAgICAgICAgaW5zZXJ0T2JzZXJ2ZWREb21haW4oc3RhdGlzdGljKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtZXJnZVN0YXRpc3RpYyhzdGF0aXN0aWMp
OworICAgICAgICB9CiAKLSAgICAvLyBNYWtlIGEgc2VwYXJhdGUgcGFzcyBmb3IgaW50ZXItZG9t
YWluIHJlbGF0aW9uc2hpcHMgc28gd2UKLSAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVk
RG9tYWluIHRhYmxlIGVudHJpZXMuCi0gICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0
aWNzKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7CisgICAg
ICAgIC8vIE1ha2UgYSBzZXBhcmF0ZSBwYXNzIGZvciBpbnRlci1kb21haW4gcmVsYXRpb25zaGlw
cyBzbyB3ZQorICAgICAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVkRG9tYWluIHRhYmxl
IGVudHJpZXMuCisgICAgICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykKKyAg
ICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoc3RhdGlzdGljKTsKKyAgICB9CiB9
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygp
CkBAIC04MzksNiArODYxLDEwIEBAIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworCisgICAgaWYg
KG1fcHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0
OworCiAgICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRhYmFzZSwgbWFr
ZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKSk7CiAgICAg
aWYgKHNvcnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
b3J0ZWRTdGF0aXN0aWNzLmJpbmRUZXh0KDEsICIxIikKQEAgLTExMTIsNiArMTEzOCw5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1p
dFRlbGVtZXRyeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
KyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
IChwYXJhbWV0ZXJzKCkuc2hvdWxkU3VibWl0VGVsZW1ldHJ5KSB7CiAgICAgICAgIFByZXZhbGVu
dFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkgcHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVt
ZXRyeTsKICAgICAgICAgY2FsY3VsYXRlVGVsZW1ldHJ5RGF0YShwcmV2YWxlbnRSZXNvdXJjZURh
dGFiYXNlVGVsZW1ldHJ5KTsKQEAgLTExMzcsNiArMTE2Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JE
b21haW5zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBpZiAobV9w
cm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIFNRTGl0ZVN0YXRlbWVu
dCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRF
IE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0gZGF0YVJlY29yZHNSZW1v
dmVkICsgMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRv
bWFpbnMpLCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewpAQCAtMTMxOSw2ICsxMzUxLDkgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjbGFzc2lmeVJlc291cmNlcygpCiAKIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsYXNzaWZ5UHJldmFsZW50UmVz
b3VyY2VzKCkKIHsKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVy
bjsKKwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGVuc3VyZVByZXZhbGVu
dFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwogICAgIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJl
Y3RlZFRvUHJldmFsZW50KCk7CkBAIC0xMzI4LDEyICsxMzYzLDIwIEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsYXNzaWZ5UHJldmFsZW50UmVzb3VyY2VzKCkK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSWZO
ZWVkZWQoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKG1f
cHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBtX2RhdGFiYXNlLnJ1
blZhY3V1bUNvbW1hbmQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIG1fZGF0YWJhc2UucnVuVmFjdXVtQ29tbWFuZCgpOwogfQogCkBAIC0xMzQ2
LDYgKzEzODksMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFt
ZURvbWFpbik7CiAKICAgICBzd2l0Y2ggKGNvb2tpZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9w
RnJhbWVEb21haW4pKSB7CkBAIC0xMzc5LDYgKzE0MjcsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJv
Y2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAKICAgICBzd2l0Y2ggKGNvb2tp
ZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSB7CkBAIC0xNDI0LDYgKzE0
NzcsOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIEFTU0VSVChkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9PSBvcGVuZXJEb21haW4p
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTQzNSw2ICsxNDkxLDExIEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmIHN1CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBpZiAo
bV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChwcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Olllcykgewog
ICAgICAgICBhdXRvIHN1YkZyYW1lU3RhdHVzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4pOwogICAgICAgICBBU1NFUlQoc3ViRnJh
bWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsKQEAgLTE0NzgsNiArMTUzOSw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0
YUZvckRvbWFpbnMoY29uc3QgSGFzaFNlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGZvciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBkb21haW5zKQogICAgICAgICBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bik7CiAKQEAgLTE1MjIsMjggKzE1ODYsNTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG8KIAog
ICAgIGJvb2wgc3RhdGlzdGljc1dlcmVVcGRhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFpc01haW5G
cmFtZSAmJiAhKGFyZVRhcmdldEFuZFRvcEZyYW1lRG9tYWluc1NhbWVTaXRlIHx8IGFyZVRhcmdl
dEFuZFNvdXJjZURvbWFpbnNTYW1lU2l0ZSkpIHsKLSAgICAgICAgYXV0byB0YXJnZXRSZXN1bHQg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21h
aW4pOwotICAgICAgICB1cGRhdGVMYXN0U2Vlbih0YXJnZXREb21haW4sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSkpOwotICAgICAg
ICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnNRdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0b3BGcmFtZURvbWFpbiB9KSwg
dGFyZ2V0UmVzdWx0LnNlY29uZCk7Ci0gICAgICAgIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRy
dWU7CisgICAgICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICAgICAgYXV0
byYgc3RhdGlzdGljID0gbV91bm1lcmdlZFN0YXRpc3RpY3NNYXAuZW5zdXJlKHRhcmdldERvbWFp
biwgWyZ0YXJnZXREb21haW5dIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyh0YXJnZXREb21haW4pOworICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OworICAgICAgICAgICAgc3RhdGlzdGljLmxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAgICAgIHN0
YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Cisg
ICAgICAgICAgICB1cGRhdGVMYXN0U2Vlbih0YXJnZXREb21haW4sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSkpOworICAgICAgICAg
ICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zUXVlcnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJhbWVEb21haW4gfSks
IHRhcmdldFJlc3VsdC5zZWNvbmQpOworICAgICAgICAgICAgc3RhdGlzdGljc1dlcmVVcGRhdGVk
ID0gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghYXJlVGFyZ2V0QW5kU291cmNl
RG9tYWluc1NhbWVTaXRlKSB7CiAgICAgICAgIGlmIChpc01haW5GcmFtZSkgewogICAgICAgICAg
ICAgYm9vbCB3YXNOYXZpZ2F0ZWRBZnRlclNob3J0RGVsYXlXaXRob3V0VXNlckludGVyYWN0aW9u
ID0gIXdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyICYmIGRlbGF5QWZ0ZXJNYWluRnJhbWVE
b2N1bWVudExvYWQgPCBwYXJhbWV0ZXJzKCkubWluRGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50
TG9hZFRvTm90QmVBUmVkaXJlY3Q7CiAgICAgICAgICAgICBpZiAoaXNSZWRpcmVjdCB8fCB3YXNO
YXZpZ2F0ZWRBZnRlclNob3J0RGVsYXlXaXRob3V0VXNlckludGVyYWN0aW9uKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8mIHNvdXJjZVN0YXRpc3RpYyA9IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZShz
b3VyY2VEb21haW4sIFsmc291cmNlRG9tYWluXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzb3VyY2VEb21haW4pOworICAgICAgICAgICAg
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHRh
cmdldFN0YXRpc3RpYyA9IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZSh0YXJnZXREb21h
aW4sIFsmdGFyZ2V0RG9tYWluXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyh0YXJnZXREb21haW4pOworICAgICAgICAgICAgICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRpc3RpYy50
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXREb21haW4pOworICAgICAgICAgICAg
ICAgICAgICB0YXJnZXRTdGF0aXN0aWMudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChz
b3VyY2VEb21haW4pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcmVkaXJlY3RpbmdEb21haW5SZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihzb3VyY2VEb21haW4pOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHRhcmdldERvbWFpbik7CisgICAgICAgICAgICAgICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcExpc3QodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5LCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPih7IHRhcmdldERvbWFpbiB9KSwgcmVkaXJlY3RpbmdEb21haW5S
ZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4oeyBzb3VyY2VEb21haW4gfSksIHRhcmdldFJlc3VsdC5zZWNvbmQpOworICAg
ICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc1JlZGlyZWN0KSB7
CisgICAgICAgICAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBzb3VyY2VTdGF0aXN0aWMgPSBtX3VubWVyZ2VkU3RhdGlzdGljc01hcC5lbnN1cmUo
c291cmNlRG9tYWluLCBbJnNvdXJjZURvbWFpbl0geworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzb3VyY2VEb21haW4pOworICAgICAgICAgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0
aWMgPSBtX3VubWVyZ2VkU3RhdGlzdGljc01hcC5lbnN1cmUodGFyZ2V0RG9tYWluLCBbJnRhcmdl
dERvbWFpbl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyh0YXJnZXREb21haW4pOworICAgICAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUby5hZGQodGFyZ2V0RG9tYWluKTsKKyAgICAgICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWMu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VEb21haW4pOworICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZGlyZWN0aW5nRG9tYWluUmVz
dWx0ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc291cmNl
RG9tYWluKTsKICAgICAgICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0gICAgICAg
ICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvUXVlcnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdGFyZ2V0RG9tYWluIH0p
LCByZWRpcmVjdGluZ0RvbWFpblJlc3VsdC5zZWNvbmQpOwotICAgICAgICAgICAgICAgIGluc2Vy
dERvbWFpblJlbGF0aW9uc2hpcExpc3QodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tUXVlcnks
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgc291cmNlRG9tYWluIH0pLCB0YXJnZXRSZXN1
bHQuc2Vjb25kKTsKKyAgICAgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4oeyB0YXJnZXREb21haW4gfSksIHJlZGlyZWN0aW5nRG9tYWluUmVzdWx0LnNlY29uZCk7
CisgICAgICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyBz
b3VyY2VEb21haW4gfSksIHRhcmdldFJlc3VsdC5zZWNvbmQpOwogICAgICAgICAgICAgICAgIHN0
YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICAgICAgYXV0byByZWRpcmVjdGluZ0RvbWFpblJl
c3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHNvdXJj
ZURvbWFpbik7Ci0gICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0gICAgICAgICAg
ICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG9RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0YXJnZXREb21haW4gfSksIHJl
ZGlyZWN0aW5nRG9tYWluUmVzdWx0LnNlY29uZCk7Ci0gICAgICAgICAgICBpbnNlcnREb21haW5S
ZWxhdGlvbnNoaXBMaXN0KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbVF1ZXJ5LCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPih7IHNvdXJjZURvbWFpbiB9KSwgdGFyZ2V0UmVzdWx0LnNl
Y29uZCk7Ci0gICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xNTU2LDYgKzE2NTAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihj
b24KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoZnJvbURvbWFp
biAhPSB0b0RvbWFpbik7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAg
ICAgYXV0byYgc3RhdGlzdGljID0gbV91bm1lcmdlZFN0YXRpc3RpY3NNYXAuZW5zdXJlKHRvRG9t
YWluLCBbJnRvRG9tYWluXSB7CisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyh0b0RvbWFpbik7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3Rh
dGlzdGljLnRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbS5hZGQoZnJvbURvbWFpbik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIHRvRG9tYWluUmVzdWx0ID0gZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9Eb21haW4pOwogICAgIGluc2Vy
dERvbWFpblJlbGF0aW9uc2hpcExpc3QodG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tUXVlcnks
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgZnJvbURvbWFpbiB9KSwgdG9Eb21haW5SZXN1
bHQuc2Vjb25kKTsKICAgICAKQEAgLTE1ODQsNiArMTY4NiwxNiBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJh
bWVEb21haQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1f
cHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpYyA9IG1fdW5tZXJn
ZWRTdGF0aXN0aWNzTWFwLmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CisgICAgICAgICAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb21haW4pOworICAgICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgICAgIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwor
ICAgICAgICBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgYm9vbCBkaWRIYXZlUHJldmlvdXNVc2VySW50ZXJhY3Rpb24gPSBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24oZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZyk7CiAgICAgZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKICAgICBzZXRVc2Vy
SW50ZXJhY3Rpb24oZG9tYWluLCB0cnVlLCBXYWxsVGltZTo6bm93KCkpOwpAQCAtMTk3OCw2ICsy
MDkwLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNsZWFy
RGF0YWJhc2VDb250ZW50cygpOwogICAgIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKTsKIApAQCAtMjA0
NSw2ICsyMTYyLDkgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tBbmQKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisg
ICAgICAgIHJldHVybiB7IH07CisKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHJlc3Vs
dHM7CiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHJl
Z2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0g
MSBBTkQgaGFkVXNlckludGVyYWN0aW9uID0gMCJfcyk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQpAQCAtMjA2MCw2ICsyMTgwLDkgQEAgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1Rv
QmxvY2tCdXQKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIGlmICht
X3Byb2Nlc3NJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0czsKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFp
bnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9zKTsK
ICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCkBAIC0yMDc1LDYgKzIx
OTgsOSBAQCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5zV2l0aFVzZXJJbgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm4geyB9OworCiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1bHRzOwogICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCByZWdpc3RyYWJsZURv
bWFpbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9z
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCkBAIC0yMDkwLDYg
KzIyMTYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0
byBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7CiAgICAg
YXV0byBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSA9IHRoaXMtPmRvbWFp
bnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCk7CkBAIC0yMjQ4LDYgKzIzNzksOSBA
QCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3Zl
Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCisgICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4geyB9
OworCiAgICAgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nID0gZW5kT2ZHcmFuZGZh
dGhlcmluZ1RpbWVzdGFtcCgpID4gV2FsbFRpbWU6Om5vdygpOwogICAgIGJvb2wgc2hvdWxkQ2xl
YXJHcmFuZGZhdGhlcmluZyA9ICFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nICYmIGVuZE9m
R3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAoKTsKIApAQCAtMjI4MCw2ICsyNDE0LDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVk
ZWQoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJv
Y2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7CiAgICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykK
ICAgICAgICAgY291bnQgPSBtX29ic2VydmVkRG9tYWluQ291bnQuZ2V0Q29sdW1uSW50KDApOwpA
QCAtMjM4MCw2ICsyNTE3LDE4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChjb25zdCBSZWdpc3RyCiAgICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJvY2Vzc0lzU3VzcGVu
ZGVkKGJvb2wgaXNTdXNwZW5kZWQpCit7CisgICAgbV9wcm9jZXNzSXNTdXNwZW5kZWQgPSBpc1N1
c3BlbmRlZDsKKyAgICBpZiAoIW1fcHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgIFZlY3Rv
cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgICAgICBmb3IgKGF1dG8m
IHN0YXRpc3RpYyA6IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICAg
ICAgc3RhdGlzdGljcy5hcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKyAgICAgICAgbWVyZ2VT
dGF0aXN0aWNzKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgICAgICBtX3VubWVyZ2VkU3RhdGlz
dGljc01hcC5jbGVhcigpOworICAgIH0KK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJmcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluKQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBzdWJGcmFtZVVuZGVyVG9wRnJhbWVDb3Vu
dChtX2RhdGFiYXNlLCBjb3VudFN1YmZyYW1lVW5kZXJUb3BGcmFtZVF1ZXJ5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggODU3
MzA5ODgxZTRiNDNhOWI5MmMwN2IwYTZlNDIzOGZlNTc0ODNiNS4uNjczYTg5ODBiZTA5M2Y0M2Fi
NGUzNzdlM2VhZjI1ZTIzZmIxNzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAg
ICAgU2Vjb25kcyBnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKSBjb25zdDsKICAgICBib29sIGlzTmV3
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNO
ZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlOyB9CiAgICAgdm9pZCBzZXRJc05l
d1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUoYm9vbCBpc05ld1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUpIHsgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZUZpbGUgPSBpc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGU7IH0K
KyAgICB2b2lkIHNldFByb2Nlc3NJc1N1c3BlbmRlZChib29sKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIG9wZW5JVFBEYXRhYmFzZSgpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhckdyYW5kZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4mJik7CiAgICAgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vz
c1Rocm91Z2hQcm9tcHQodW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlu
cyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKKyAgICBib29sIGdvdExp
bmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKTsKIAogICAgIHZvaWQgcmVjbGFzc2lmeVJlc291cmNlcygpOwogICAgIHN0cnVjdCBO
b3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzIHsKQEAgLTI1OSw2ICsyNjEsOCBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZ2V0TW9zdFJlY2VudGx5VXBk
YXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3VubWVyZ2Vk
U3RhdGlzdGljc01hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA3MWFlYzNjOWEwYWRk
NDYzM2NkN2M0MWJlNjRiOTA2NGZmMDFmN2JiLi4xNGRiMDNlMzJlZDllN2QyYjU0MTk0NjJlM2E5
OWFhOTg4ZGJjNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTE1NCw2ICsxMTU0LDI0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQ
cm9jZXNzSXNTdXNwZW5kZWQoYm9vbCBwcm9jZXNzSXNTdXNwZW5kZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJvY2Vzc0lzU3VzcGVuZGVkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNz
U3RvcmUgJiYgaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRp
c3RpY3NTdG9yZSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGRhdGFiYXNlU3RvcmUgPSBkb3duY2Fz
dDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3Jl
KTsKKyAgICAgICAgICAgIGRhdGFiYXNlU3RvcmUuc2V0UHJvY2Vzc0lzU3VzcGVuZGVkKHByb2Nl
c3NJc1N1c3BlbmRlZCk7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3NJc1N1c3BlbmRlZCkgewor
ICAgICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5wcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzKCk7CisgICAgICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnVwZGF0ZUNv
b2tpZUJsb2NraW5nKFtdKCkgeyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvc3RU
YXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggOWU2MGNlMTE0ZWU0MzI3ZmM5
OWYwNDc2Y2I5ZTE5Y2FkZWI0ZTFkOS4uODRhYWVhYTY4NWM5Y2U5OWUyYzA3ZTM2Njc1Mjc5NzRh
MmJhOTIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMjg3LDYgKzI4Nyw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogICAgIHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHNldFByb2Nlc3NJc1N1
c3BlbmRlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lv
biYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0NzEwMDNkZGU3
NDlhNjQyZjBmMTBlM2UxOGYxNDNiZTZkNmJjZTNjLi4wODkwY2NhMTU2NGQ5ZGJjZDcyYWY1NDYz
ZTAyZWIwNGFkYTIyNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtMjExNiw2ICsyMTE2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNwZW5zaW9uKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJmNhbGxiYWNrQWdncmVnYXRvcl0o
YXV0byYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcm9jZXNzSXNTdXNwZW5kZWQodHJ1
ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICB9KTsKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMu
dmFsdWVzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3dTZXJ2ZXJzLmdldChzZXJ2ZXItPnNlc3Np
b25JRCgpKSA9PSBzZXJ2ZXIuZ2V0KCkpOwpAQCAtMjE1Miw2ICsyMTU5LDEzIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3Bl
bnNpb24oKTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZm9y
RWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24ucmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0
UHJvY2Vzc0lzU3VzcGVuZGVkKGZhbHNlLCBbXSB7IH0pOworICAgIH0pOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2Vy
dmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmU1ODIyZTZlM2Ex
MWM3Mzc4MDU5OGQ3Y2IzZDNjOWZmYmY3MWQxMC4uNzQ1YmMyODFjNmZkOGNiM2RhYTEzNGUwOTUz
NTY5ZTA0ZWIyOGIzZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTIyICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBJVFAgRGF0YWJhc2Ugc2hvdWxk
IHByb3Blcmx5IGhhbmRsZSBzdGF0aXN0aWNzIHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyBz
dXNwZW5kZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NzEzMzc5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRvIG1ha2Ugc3VyZSBu
ZXcgc3RhdGlzdGljcyBhcmVuJ3QgbWVyZ2VkIGludG8gdGhlIGRhdGFiYXNlCisgICAgICAgIHdo
ZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQsIGFuZCBhcmUgb25seSBtZXJnZWQg
b25jZQorICAgICAgICB0aGUgcHJvY2VzcyBoYXMgcmVzdW1lZC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAg
ICAgICAgKFRFU1QpOgorCiAyMDIwLTAxLTIxICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5j
b20+CiAKICAgICAgICAgVGVzdCBoaXN0b3J5IGxpbmtzIG9uIHRoZSBkYXNoYm9hcmQgc2hvdWxk
IGdvIHRvIHRoZSBuZXcgcmVzdWx0cyBkYXRhYmFzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tCmluZGV4IGJjMzM0OWY2MjQxOGRhMDI2ODVjOThmODYwNTdjYmNkNjM2ZjUxYjEuLjExNmI1
Njk3YjhiN2FiZGE3Y2YwYThiMmMxMjU0YTljMzE1NGIyOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MubW0KQEAgLTEzOTgsMyArMTM5OCwxNDYgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLCBHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnlEYXRhYmFzZSkKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwogfQorCitURVNUKFJlc291
cmNlTG9hZFN0YXRpc3RpY3MsIFN1c3BlbmRlZFByb2Nlc3NNZXJnZXNOZXdTdGF0aXN0aWNzVXBv
blJlc3VtaW5nKQoreworICAgIGF1dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bv
b2wgX3NoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8g
d2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgW3dlYlZpZXcxIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRl
c3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsK
KyAgICBbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3
ZWJWaWV3MiBsb2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl1dOworICAgIFt3ZWJWaWV3MiBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRVc2VJVFBEYXRhYmFzZTp0cnVlIGNvbXBsZXRp
b25IYW5kbGVyOiBeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczpe
KHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgc3RhdGlj
IGJvb2wgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIGlmICghW21lc3NhZ2UgaXNFcXVhbFRvU3Ry
aW5nOkAiU3RhdGlzdGljcyBVcGRhdGVkIl0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHN0YXRpc3RpY3NVcGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gTWFrZSBhIGNhbGwgdG8gcHJlcGFyZSBm
b3IgTmV0d29ya1Byb2Nlc3Mgc3VzcGVuc2lvbi4KKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5w
cm9jZXNzUG9vbCBfc2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5XTsKKwor
ICAgIC8vIFRlYWNoIElUUCBhYm91dCBiYWQgb3JpZ2lucy4KKyAgICBkb25lRmxhZyA9IGZhbHNl
OworICAgIFtkYXRhU3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXih2b2lkKSB7CisgICAg
ICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUZsYWcpOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3Jl
IF9zZXRQcmV2YWxlbnREb21haW46W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDIu
Y29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsK
KworICAgIC8vIFNlZWQgdGVzdCBkYXRhIGluIHRoZSB3ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisK
KyAgICAvLyBldmlsMQorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQ
b29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlm
aWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwor
CisgICAgLy8gZXZpbDIKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNz
UG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90
aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7
CisKKyAgICBzdGF0aXN0aWNzVXBkYXRlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBsb2FkSFRN
TFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZp
ZXcyIGxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9k
eT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXV07
CisKKyAgICAvLyBXYWl0IGZvciB0aGUgc3RhdGlzdGljcyB0byBiZSB1cGRhdGVkIGluIHRoZSBu
ZXR3b3JrIHByb2Nlc3MuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGF0aXN0aWNz
VXBkYXRlZCk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmlsMSBpcyBO
T1QgcmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAg
IFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4o
Qk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzUmVnaXN0ZXJlZCk7
CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFy
dHkgZXZpbDIgaXMgTk9UIHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJG
aXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhp
cmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMi5jb20iXSBjb21wbGV0
aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0Uo
aXNSZWdpc3RlcmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBDb2xsZWN0IHRo
ZSBJVFAgZGF0YSBzdW1tYXJ5IHdoaWNoIHNob3VsZCBiZSBlbXB0eS4KKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3Vt
bWFyeTpedm9pZChOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+
ICp0aGlyZFBhcnR5RGF0YSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKCF0aGlyZFBhcnR5
RGF0YS5jb3VudCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gUmVzdW1lIHRoZSBO
ZXR3b3JrUHJvY2Vzcy4KKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfc2Vu
ZE5ldHdvcmtQcm9jZXNzRGlkUmVzdW1lXTsKKworICAgIC8vIFJ1biB1bnRpbCB0aGUgdW50aWwg
dGhlIElUUCBkYXRhIHN1bW1hcnkgaGFzIG1lcmdlZCB0aGUgdHdvIHZhbHVlcyB0aGF0IHdlcmUg
b2JzZXJ2ZWQgYWZ0ZXIgdGhlIHByb2Nlc3Mgd2FzIHN1c3BlbmRlZC4KKyAgICBzdGF0aWMgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgd2hpbGUgKCFkb25lKSB7CisgICAgICAgIGRvbmVGbGFnID0g
ZmFsc2U7CisgICAgICAgIFtkYXRhU3RvcmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
U3VtbWFyeTpedm9pZChOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
ICo+ICp0aGlyZFBhcnR5RGF0YSkgeworICAgICAgICAgICAgaWYgKHRoaXJkUGFydHlEYXRhLmNv
dW50ID09IDIpCisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICBkb25l
RmxhZyA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmVGbGFnKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0
eSBldmlsMSBpcyBub3cgcmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZp
cnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJk
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlv
bkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNS
ZWdpc3RlcmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRo
ZSB0aGlyZC1wYXJ0eSBldmlsMiBpcyBub3cgcmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAg
ICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0
Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNv
bSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388496</attachid>
            <date>2020-01-22 17:36:56 -0800</date>
            <delta_ts>2020-01-23 13:21:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206593-20200122173656.patch</filename>
            <type>text/plain</type>
            <size>35771</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzU1ZTc4MDExOGE5ODgx
ZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmI0MTE2ODY1MDM3YWM2MGFhNjFmNzcyZWUxYjI2YTNm
NWQyNjQwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjAtMDEtMjIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIElUUCBEYXRh
YmFzZSBzaG91bGQgcHJvcGVybHkgaGFuZGxlIHN0YXRpc3RpY3Mgd2hlbiB0aGUgbmV0d29yayBw
cm9jZXNzIGlzIHN1c3BlbmRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg3MTMzNzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXBsZW1lbnRzIGhhbmRsaW5nIG9mIElUUCBkYXRhIGZvciB0aGUgU1FMaXRlIGJhY2tlbmQK
KyAgICAgICAgZHVyaW5nIGEgcHJvY2VzcyBzdXNwZW5zaW9uLiBJdCBzdG9yZXMgYW55IG9ic2Vy
dmF0aW9ucyBmcm9tIHRoZQorICAgICAgICBXZWJQcm9jZXNzIG9yIFVJUHJvY2VzcyB0byBiZSBh
ZGRlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiB0aGUgcHJvY2VzcyByZXN1bWVzLAorICAgICAgICBi
dXQgaWdub3JlcyBhbGwgb3RoZXIgYXR0ZW1wdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YWJh
c2UuCisgICAgICAgIFByb2Nlc3NpbmcgcmVxdWVzdHMgYW5kIGNvb2tpZSB1cGRhdGVzIHdpbGwg
YmUgY29tcGxldGVkIHdoZW4gdGhlIHByb2Nlc3MgcmVzdW1lcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UpOgorICAgICAg
ICBEdXJpbmcgYSBwcm9jZXNzIHN1c3BlbnNpb24sIHdlIGNhbid0IGNoZWNrIGlmIGEgbGluayBk
ZWNvcmF0aW9uIGNhbWUKKyAgICAgICAgZnJvbSBhIHByZXZhbGVudCByZXNvdXJjZSwgc28gd2Ug
bXVzdCBjaGVjayBkdXJpbmcgdGhlIG1lcmdlIG9uY2UKKyAgICAgICAgdGhlIHByb2Nlc3MgaGFz
IHJlc3VtZWQuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6CisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGFzc2lmeVByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzeW5jU3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRlbHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUNv
b2tpZUJsb2NraW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1
bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICBUaGVzZSBhcmUgZnVuY3Rpb25zIHdoaWNo
IG1pZ2h0IGNhdXNlIGFuIGVycm9yIGlmIGV4ZWN1dGVkIGR1cmluZworICAgICAgICBhIHByb2Nl
c3Mgc3VzcGVuc2lvbi4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25z
IG1ha2Ugb2JzZXJ2YXRpb25zIGFib3V0IGRvbWFpbnMgdGhhdCB3ZSBkb24ndCB3YW50IElUUCAK
KyAgICAgICAgdG8gaWdub3JlLCBzbyB3ZSB3aWxsIHN0b3JlIHRoZSBkb21haW5zIGluIGEgbWFw
IHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZworICAgICAgICBkYXRhYmFzZSBpbmZvcm1h
dGlvbiB1cG9uIHJlc3VtaW5nLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcm9jZXNzSXNTdXNwZW5kZWQpOgorICAgICAgICBJZiB0
aGUgcHJvY2VzcyBpcyByZXN1bWluZywgdGhpcyBmdW5jdGlvbiBtZXJnZXMgYWxsIHN0YXRpc3Rp
Y3MKKyAgICAgICAgb2JzZXJ2ZWQgZHVyaW5nIHRoZSBzdXNwZW5zaW9uLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRQcm9jZXNzSXNTdXNwZW5kZWQpOgorICAgICAgICBQcm9jZXNz
aW5nIHN0YXRpc3RpY3MgYW5kIHVwZGF0aW5nIGNvb2tpZSBibG9ja2luZyBzaG91bGQgb25seQor
ICAgICAgICBvY2N1ciBpZiB0aGUgcHJvY2VzcyB3YXMgc3VzcGVuZGVkIGFuZCBpcyBub3cgYmVp
bmcgcmVzdW1lZC4gVGhpcworICAgICAgICBwcmV2ZW50cyB1bm5lY2Vzc2FyeSBwcm9jZXNzaW5n
IGFuZCBhbHNvIHByZXZlbnRzIGZsYWt5IEFQSSB0ZXN0cworICAgICAgICB3aGljaCBkb24ndCBr
bm93IHRvIGhhbmRsZSB1bmV4cGVjdGVkICdTdG9yYWdlIFN5bmNlZCcgbWVzc2FnZXMgbG9nZ2Vk
IGJ5CisgICAgICAgIHRoaXMgcHJvY2Vzc2luZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWUpOgorCiAyMDIwLTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0lQQyBIYXJkZW5pbmddIE9ubHkgcHJvY2VzcyBNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3MgbWVzc2FnZXMgd2hlbiBzZW50IGJ5IHRoZSBVSVByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmlu
ZGV4IDhkOTMwMzgyZDdmYzU3YjA2M2I1YzJiZDgwMWRhNmExMjI2Njg1NWMuLmZhNjJiMTdmMGY2
NmEzODgzZTczYzE1MGJmOWZlZjA4OTM5N2M1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzAzLDYgKzcwMyw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1l
bW9yeVN0b3JlKGNvbnN0IFJlc291cmNlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmICghaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTcxNiw2ICs3MTksMTUg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9t
TWVtb3J5U3RvcmUoY29uc3QgUmVzb3VyY2UKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwcyhzdGF0aXN0aWMudmFsdWUpOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpCit7CisgICAgZm9yIChhdXRvJiBm
cm9tRG9tYWluIDogc3RhdGlzdGljLnRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSkgeworICAg
ICAgICBpZiAoaXNQcmV2YWxlbnRSZXNvdXJjZShmcm9tRG9tYWluKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCYgY3VycmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03NDksNyArNzYxLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50JiBjdXJyZW4KICAgICAgICAgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKG90aGVyLnJl
Z2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAob3RoZXIuZGF0YVJlY29yZHNSZW1vdmVkID4gY3Vy
cmVudERhdGFSZWNvcmRzUmVtb3ZlZCkKICAgICAgICAgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVk
KG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwotICAg
IGlmIChvdGhlci5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSAmJiAhY3Vy
cmVudElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwpCisgICAgaWYgKGdvdExp
bmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKG90aGVyKSAmJiAhY3VycmVudElzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwpCiAgICAgICAgIHNldElzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwob3RoZXIucmVnaXN0cmFibGVEb21haW4sIHRydWUp
OwogfQogCkBAIC03NzIsMTcgKzc4NCwyNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvJiBzdGF0aXN0
aWMgOiBzdGF0aXN0aWNzKSB7Ci0gICAgICAgIGlmICghZG9tYWluSUQoc3RhdGlzdGljLnJlZ2lz
dHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgIGluc2VydE9ic2VydmVkRG9tYWluKHN0YXRpc3Rp
Yyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lcmdlU3RhdGlzdGljKHN0YXRpc3RpYyk7
Ci0gICAgfQorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICAvLyBTdG9y
ZSBhbnkgc3RhdGlzdGljcyBvYnNlcnZlZCBkdXJpbmcgYSBwcm9jZXNzIHN1c3BlbnNpb24uCisg
ICAgICAgIC8vIFdlIHdpbGwgaW5zZXJ0IHRoZW0gaW50byB0aGUgZGF0YWJhc2Ugb25jZSB0aGUg
cHJvY2VzcyByZXN1bWVzLgorICAgICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3Rp
Y3MpIHsKKyAgICAgICAgICAgIG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0
aWMucmVnaXN0cmFibGVEb21haW4sIFsmc3RhdGlzdGljXSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUoc3RhdGlzdGljKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7Cisg
ICAgICAgICAgICBpZiAoIWRvbWFpbklEKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbikpCisg
ICAgICAgICAgICAgICAgaW5zZXJ0T2JzZXJ2ZWREb21haW4oc3RhdGlzdGljKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtZXJnZVN0YXRpc3RpYyhzdGF0aXN0aWMpOworICAg
ICAgICB9CiAKLSAgICAvLyBNYWtlIGEgc2VwYXJhdGUgcGFzcyBmb3IgaW50ZXItZG9tYWluIHJl
bGF0aW9uc2hpcHMgc28gd2UKLSAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVkRG9tYWlu
IHRhYmxlIGVudHJpZXMuCi0gICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKQot
ICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7CisgICAgICAgIC8v
IE1ha2UgYSBzZXBhcmF0ZSBwYXNzIGZvciBpbnRlci1kb21haW4gcmVsYXRpb25zaGlwcyBzbyB3
ZQorICAgICAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVkRG9tYWluIHRhYmxlIGVudHJp
ZXMuCisgICAgICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykKKyAgICAgICAg
ICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoc3RhdGlzdGljKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBjb25zdCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCkBAIC04
MzksNiArODYxLDEwIEBAIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworCisgICAgaWYgKG1fcHJv
Y2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OworCiAg
ICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRhYmFzZSwgbWFrZVN0cmlu
ZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKSk7CiAgICAgaWYgKHNv
cnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzb3J0ZWRT
dGF0aXN0aWNzLmJpbmRUZXh0KDEsICIxIikKQEAgLTExMTIsNiArMTEzOCw5IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVt
ZXRyeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBp
ZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChwYXJh
bWV0ZXJzKCkuc2hvdWxkU3VibWl0VGVsZW1ldHJ5KSB7CiAgICAgICAgIFByZXZhbGVudFJlc291
cmNlRGF0YWJhc2VUZWxlbWV0cnkgcHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTsK
ICAgICAgICAgY2FsY3VsYXRlVGVsZW1ldHJ5RGF0YShwcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNl
VGVsZW1ldHJ5KTsKQEAgLTExMzcsNiArMTE2Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5z
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBpZiAobV9wcm9jZXNz
SXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIFNRTGl0ZVN0YXRlbWVudCBkb21h
aW5zVG9VcGRhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRFIE9ic2Vy
dmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0gZGF0YVJlY29yZHNSZW1vdmVkICsg
MSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMp
LCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewpAQCAtMTMxOSw2ICsxMzUxLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjbGFzc2lmeVJlc291cmNlcygpCiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsYXNzaWZ5UHJldmFsZW50UmVzb3VyY2Vz
KCkKIHsKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGVuc3VyZVByZXZhbGVudFJlc291
cmNlc0ZvckRlYnVnTW9kZSgpOwogICAgIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRv
UHJldmFsZW50KCk7CkBAIC0xMzI4LDEyICsxMzYzLDIwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsYXNzaWZ5UHJldmFsZW50UmVzb3VyY2VzKCkKIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSWZOZWVkZWQo
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKG1fcHJvY2Vz
c0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1
bUNvbW1hbmQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsK
KwogICAgIG1fZGF0YWJhc2UucnVuVmFjdXVtQ29tbWFuZCgpOwogfQogCkBAIC0xMzQ2LDYgKzEz
ODksMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFp
bik7CiAKICAgICBzd2l0Y2ggKGNvb2tpZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVE
b21haW4pKSB7CkBAIC0xMzc5LDYgKzE0MjcsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJvY2Vzc0lz
U3VzcGVuZGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0
dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
YXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAKICAgICBzd2l0Y2ggKGNvb2tpZUFjY2Vz
cyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSB7CkBAIC0xNDI0LDYgKzE0NzcsOSBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9PSBvcGVuZXJEb21haW4pCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTQzNSw2ICsxNDkxLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBpZiAobV9wcm9j
ZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQ6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChwcm9t
cHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykgewogICAgICAg
ICBhdXRvIHN1YkZyYW1lU3RhdHVzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4pOwogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0
dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsKQEAgLTE0NzgsNiArMTUzOSw5IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRv
bWFpbnMoY29uc3QgSGFzaFNlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
KyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGZv
ciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBkb21haW5zKQogICAgICAgICBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAK
QEAgLTE1MjIsMjggKzE1ODYsNTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG8KIAogICAgIGJv
b2wgc3RhdGlzdGljc1dlcmVVcGRhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFpc01haW5GcmFtZSAm
JiAhKGFyZVRhcmdldEFuZFRvcEZyYW1lRG9tYWluc1NhbWVTaXRlIHx8IGFyZVRhcmdldEFuZFNv
dXJjZURvbWFpbnNTYW1lU2l0ZSkpIHsKLSAgICAgICAgYXV0byB0YXJnZXRSZXN1bHQgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4pOwot
ICAgICAgICB1cGRhdGVMYXN0U2Vlbih0YXJnZXREb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSkpOwotICAgICAgICBpbnNl
cnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVy
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0b3BGcmFtZURvbWFpbiB9KSwgdGFyZ2V0
UmVzdWx0LnNlY29uZCk7Ci0gICAgICAgIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRydWU7Cisg
ICAgICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICAgICAgYXV0byYgc3Rh
dGlzdGljID0gbV91bm1lcmdlZFN0YXRpc3RpY3NNYXAuZW5zdXJlKHRhcmdldERvbWFpbiwgWyZ0
YXJnZXREb21haW5dIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyh0YXJnZXREb21haW4pOworICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICAgICAgc3RhdGlzdGljLmxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVk
dWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAgICAgIHN0YXRpc3Rp
Yy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CisgICAgICAg
ICAgICB1cGRhdGVMYXN0U2Vlbih0YXJnZXREb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSkpOworICAgICAgICAgICAgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zUXVl
cnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJhbWVEb21haW4gfSksIHRhcmdl
dFJlc3VsdC5zZWNvbmQpOworICAgICAgICAgICAgc3RhdGlzdGljc1dlcmVVcGRhdGVkID0gdHJ1
ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghYXJlVGFyZ2V0QW5kU291cmNlRG9tYWlu
c1NhbWVTaXRlKSB7CiAgICAgICAgIGlmIChpc01haW5GcmFtZSkgewogICAgICAgICAgICAgYm9v
bCB3YXNOYXZpZ2F0ZWRBZnRlclNob3J0RGVsYXlXaXRob3V0VXNlckludGVyYWN0aW9uID0gIXdh
c1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyICYmIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVu
dExvYWQgPCBwYXJhbWV0ZXJzKCkubWluRGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZFRv
Tm90QmVBUmVkaXJlY3Q7CiAgICAgICAgICAgICBpZiAoaXNSZWRpcmVjdCB8fCB3YXNOYXZpZ2F0
ZWRBZnRlclNob3J0RGVsYXlXaXRob3V0VXNlckludGVyYWN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8m
IHNvdXJjZVN0YXRpc3RpYyA9IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZShzb3VyY2VE
b21haW4sIFsmc291cmNlRG9tYWluXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzb3VyY2VEb21haW4pOworICAgICAgICAgICAgICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHRhcmdldFN0
YXRpc3RpYyA9IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLmVuc3VyZSh0YXJnZXREb21haW4sIFsm
dGFyZ2V0RG9tYWluXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyh0YXJnZXREb21haW4pOworICAgICAgICAgICAgICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRpc3RpYy50b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXREb21haW4pOworICAgICAgICAgICAgICAgICAg
ICB0YXJnZXRTdGF0aXN0aWMudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VE
b21haW4pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gcmVkaXJlY3RpbmdEb21haW5SZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihzb3VyY2VEb21haW4pOworICAgICAgICAgICAgICAgICAgICBhdXRv
IHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKHRhcmdldERvbWFpbik7CisgICAgICAgICAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0
aW9uc2hpcExpc3QodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5LCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPih7IHRhcmdldERvbWFpbiB9KSwgcmVkaXJlY3RpbmdEb21haW5SZXN1bHQu
c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlz
dCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4oeyBzb3VyY2VEb21haW4gfSksIHRhcmdldFJlc3VsdC5zZWNvbmQpOworICAgICAgICAg
ICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc1JlZGlyZWN0KSB7CisgICAg
ICAgICAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgICAgICAgICBhdXRv
JiBzb3VyY2VTdGF0aXN0aWMgPSBtX3VubWVyZ2VkU3RhdGlzdGljc01hcC5lbnN1cmUoc291cmNl
RG9tYWluLCBbJnNvdXJjZURvbWFpbl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhzb3VyY2VEb21haW4pOworICAgICAgICAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWMgPSBt
X3VubWVyZ2VkU3RhdGlzdGljc01hcC5lbnN1cmUodGFyZ2V0RG9tYWluLCBbJnRhcmdldERvbWFp
bl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh0
YXJnZXREb21haW4pOworICAgICAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5h
ZGQodGFyZ2V0RG9tYWluKTsKKyAgICAgICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWMuc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VEb21haW4pOworICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZGlyZWN0aW5nRG9tYWluUmVzdWx0ID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc291cmNlRG9tYWlu
KTsKICAgICAgICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0gICAgICAgICAgICAg
ICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
UXVlcnksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgdGFyZ2V0RG9tYWluIH0pLCByZWRp
cmVjdGluZ0RvbWFpblJlc3VsdC5zZWNvbmQpOwotICAgICAgICAgICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcExpc3QodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tUXVlcnksIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgc291cmNlRG9tYWluIH0pLCB0YXJnZXRSZXN1bHQuc2Vj
b25kKTsKKyAgICAgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4o
eyB0YXJnZXREb21haW4gfSksIHJlZGlyZWN0aW5nRG9tYWluUmVzdWx0LnNlY29uZCk7CisgICAg
ICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyBzb3VyY2VE
b21haW4gfSksIHRhcmdldFJlc3VsdC5zZWNvbmQpOwogICAgICAgICAgICAgICAgIHN0YXRpc3Rp
Y3NXZXJlVXBkYXRlZCA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
aXNSZWRpcmVjdCkgewotICAgICAgICAgICAgYXV0byByZWRpcmVjdGluZ0RvbWFpblJlc3VsdCA9
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHNvdXJjZURvbWFp
bik7Ci0gICAgICAgICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0gICAgICAgICAgICBpbnNl
cnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9RdWVy
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0YXJnZXREb21haW4gfSksIHJlZGlyZWN0
aW5nRG9tYWluUmVzdWx0LnNlY29uZCk7Ci0gICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlv
bnNoaXBMaXN0KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbVF1ZXJ5LCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPih7IHNvdXJjZURvbWFpbiB9KSwgdGFyZ2V0UmVzdWx0LnNlY29uZCk7
Ci0gICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNTU2LDYgKzE2NTAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb24KICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoZnJvbURvbWFpbiAhPSB0
b0RvbWFpbik7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgYXV0
byYgc3RhdGlzdGljID0gbV91bm1lcmdlZFN0YXRpc3RpY3NNYXAuZW5zdXJlKHRvRG9tYWluLCBb
JnRvRG9tYWluXSB7CisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh0
b0RvbWFpbik7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3RhdGlzdGlj
LnRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbS5hZGQoZnJvbURvbWFpbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBhdXRvIHRvRG9tYWluUmVzdWx0ID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9Eb21haW4pOwogICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcExpc3QodG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tUXVlcnksIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+KHsgZnJvbURvbWFpbiB9KSwgdG9Eb21haW5SZXN1bHQuc2Vj
b25kKTsKICAgICAKQEAgLTE1ODQsNiArMTY4NiwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21h
aQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJvY2Vz
c0lzU3VzcGVuZGVkKSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpYyA9IG1fdW5tZXJnZWRTdGF0
aXN0aWNzTWFwLmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CisgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb21haW4pOworICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAg
ICBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYm9v
bCBkaWRIYXZlUHJldmlvdXNVc2VySW50ZXJhY3Rpb24gPSBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
ZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZyk7CiAgICAgZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKICAgICBzZXRVc2VySW50ZXJh
Y3Rpb24oZG9tYWluLCB0cnVlLCBXYWxsVGltZTo6bm93KCkpOwpAQCAtMTk3OCw2ICsyMDkwLDEx
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNsZWFyRGF0YWJh
c2VDb250ZW50cygpOwogICAgIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKTsKIApAQCAtMjA0NSw2ICsy
MTYyLDkgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tBbmQKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAKKyAgICBpZiAobV9wcm9jZXNzSXNTdXNwZW5kZWQpCisgICAgICAg
IHJldHVybiB7IH07CisKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IHJlc3VsdHM7CiAg
ICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHJlZ2lzdHJh
YmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBBTkQg
aGFkVXNlckludGVyYWN0aW9uID0gMCJfcyk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LKQpAQCAtMjA2MCw2ICsyMTgwLDkgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tC
dXQKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nl
c3NJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gcmVzdWx0czsKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hF
UkUgaXNQcmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9zKTsKICAgICBp
ZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCkBAIC0yMDc1LDYgKzIxOTgsOSBA
QCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpkb21haW5zV2l0aFVzZXJJbgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCisgICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4geyB9
OworCiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1bHRzOwogICAgIFNRTGl0ZVN0
YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCByZWdpc3RyYWJsZURvbWFpbiBG
Uk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9zKTsKICAg
ICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCkBAIC0yMDkwLDYgKzIyMTYs
MTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29v
a2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAorICAgIGlmIChtX3Byb2Nlc3NJc1N1c3BlbmRlZCkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IoKTsKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7CiAgICAgYXV0byBk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSA9IHRoaXMtPmRvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCk7CkBAIC0yMjQ4LDYgKzIzNzksOSBAQCBWZWN0
b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljcwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CisgICAgaWYgKG1fcHJvY2Vzc0lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4geyB9OworCiAg
ICAgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nID0gZW5kT2ZHcmFuZGZhdGhlcmlu
Z1RpbWVzdGFtcCgpID4gV2FsbFRpbWU6Om5vdygpOwogICAgIGJvb2wgc2hvdWxkQ2xlYXJHcmFu
ZGZhdGhlcmluZyA9ICFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nICYmIGVuZE9mR3JhbmRm
YXRoZXJpbmdUaW1lc3RhbXAoKTsKIApAQCAtMjI4MCw2ICsyNDE0LDkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgaWYgKG1fcHJvY2Vzc0lz
U3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAg
ICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAg
ICAgY291bnQgPSBtX29ic2VydmVkRG9tYWluQ291bnQuZ2V0Q29sdW1uSW50KDApOwpAQCAtMjM4
MCw2ICsyNTE3LDE4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChjb25zdCBSZWdpc3RyCiAgICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAordm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJvY2Vzc0lzU3VzcGVuZGVkKGJv
b2wgaXNTdXNwZW5kZWQpCit7CisgICAgbV9wcm9jZXNzSXNTdXNwZW5kZWQgPSBpc1N1c3BlbmRl
ZDsKKyAgICBpZiAoIW1fcHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgIFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgICAgICBmb3IgKGF1dG8mIHN0YXRp
c3RpYyA6IG1fdW5tZXJnZWRTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICAgICAgc3Rh
dGlzdGljcy5hcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKyAgICAgICAgbWVyZ2VTdGF0aXN0
aWNzKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgICAgICBtX3VubWVyZ2VkU3RhdGlzdGljc01h
cC5jbGVhcigpOworICAgIH0KK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJmcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWlu
KQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBzdWJGcmFtZVVuZGVyVG9wRnJhbWVDb3VudChtX2Rh
dGFiYXNlLCBjb3VudFN1YmZyYW1lVW5kZXJUb3BGcmFtZVF1ZXJ5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggODU3MzA5ODgx
ZTRiNDNhOWI5MmMwN2IwYTZlNDIzOGZlNTc0ODNiNS4uNThkOTg2NTU3MmRhMzdlOGRkNWY2ZWE5
ZjJhNDdkZjE4MjliM2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgU2Vj
b25kcyBnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKSBjb25zdDsKICAgICBib29sIGlzTmV3UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlOyB9CiAgICAgdm9pZCBzZXRJc05ld1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUoYm9vbCBpc05ld1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZUZpbGUpIHsgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZUZpbGUgPSBpc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGU7IH0KKyAgICB2
b2lkIHNldFByb2Nlc3NJc1N1c3BlbmRlZChib29sKTsKKyAgICBib29sIHByb2Nlc3NJc1N1c3Bl
bmRlZCgpIHsgcmV0dXJuIG1fcHJvY2Vzc0lzU3VzcGVuZGVkOyB9CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKQEAgLTE4Niw2ICsxODgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJHcmFuZGZhdGhlcmluZyhWZWN0b3I8dW5zaWduZWQ+JiYpOwogICAgIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nl
c3NUaHJvdWdoUHJvbXB0KHVuc2lnbmVkIGRvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFp
bnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CisgICAgYm9vbCBnb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CiAKICAgICB2b2lkIHJlY2xhc3NpZnlSZXNvdXJjZXMoKTsKICAgICBzdHJ1Y3Qg
Tm90VmVyeVByZXZhbGVudFJlc291cmNlcyB7CkBAIC0yNTksNiArMjYyLDggQEAgcHJpdmF0ZToK
ICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldE1vc3RSZWNlbnRseVVw
ZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQ7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
CiAgICAgYm9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV91bm1lcmdl
ZFN0YXRpc3RpY3NNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNzFhZWMzYzlhMGFk
ZDQ2MzNjZDdjNDFiZTY0YjkwNjRmZjAxZjdiYi4uYTI0ZDI5ZGRmODI3MzdlMDg5OWU4NDRiM2M0
MDM3NzdkNGQ0MjY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTExNTQsNiArMTE1NCwyNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVy
PAogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
UHJvY2Vzc0lzU3VzcGVuZGVkKGJvb2wgcHJvY2Vzc0lzU3VzcGVuZGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHByb2Nlc3NJc1N1c3BlbmRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGlzdGlj
c1N0b3JlICYmIGlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0
aXN0aWNzU3RvcmUpKSB7CisgICAgICAgICAgICBhdXRvJiBkYXRhYmFzZVN0b3JlID0gZG93bmNh
c3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9y
ZSk7CisgICAgICAgICAgICBpZiAoZGF0YWJhc2VTdG9yZS5wcm9jZXNzSXNTdXNwZW5kZWQoKSAm
JiAhcHJvY2Vzc0lzU3VzcGVuZGVkKSB7CisgICAgICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUtPnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICAgICAgICAgICAgICBt
X3N0YXRpc3RpY3NTdG9yZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW10oKSB7IH0pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGF0YWJhc2VTdG9yZS5zZXRQcm9jZXNzSXNTdXNwZW5kZWQo
cHJvY2Vzc0lzU3VzcGVuZGVkKTsKKyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBvc3RUYXNr
UmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggOWU2MGNlMTE0ZWU0MzI3ZmM5OWYwNDc2Y2I5ZTE5Y2FkZWI0
ZTFkOS4uODRhYWVhYTY4NWM5Y2U5OWUyYzA3ZTM2Njc1Mjc5NzRhMmJhOTIwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjg3LDYgKzI4Nyw3
IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CiAg
ICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9t
YWluJiYpOwogICAgIHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHNldFByb2Nlc3NJc1N1c3BlbmRlZChib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0NzEwMDNkZGU3NDlhNjQyZjBmMTBlM2UxOGYx
NDNiZTZkNmJjZTNjLi4wODkwY2NhMTU2NGQ5ZGJjZDcyYWY1NDYzZTAyZWIwNGFkYTIyNjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMjExNiw2ICsyMTE2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgZm9yIChh
dXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAg
ICAgIGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbJmNhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYgbmV0d29ya1Nlc3Np
b24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXRQcm9jZXNzSXNTdXNwZW5kZWQodHJ1ZSwgW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKKyAgICB9KTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpIHsKICAgICAg
ICAgQVNTRVJUKG1fc3dTZXJ2ZXJzLmdldChzZXJ2ZXItPnNlc3Npb25JRCgpKSA9PSBzZXJ2ZXIu
Z2V0KCkpOwpAQCAtMjE1Miw2ICsyMTU5LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3Vt
ZSgpCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMu
dmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKIAorI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9u
KFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQor
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJvY2Vzc0lzU3VzcGVuZGVk
KGZhbHNlLCBbXSB7IH0pOworICAgIH0pOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKICAg
ICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmU1ODIyZTZlM2ExMWM3Mzc4MDU5OGQ3Y2IzZDNj
OWZmYmY3MWQxMC4uNzQ1YmMyODFjNmZkOGNiM2RhYTEzNGUwOTUzNTY5ZTA0ZWIyOGIzZiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIwLTAxLTIyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFRoZSBJVFAgRGF0YWJhc2Ugc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBz
dGF0aXN0aWNzIHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1OTMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4NzEzMzc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzIHRvIG1ha2Ugc3VyZSBuZXcgc3RhdGlzdGljcyBhcmVu
J3QgbWVyZ2VkIGludG8gdGhlIGRhdGFiYXNlCisgICAgICAgIHdoZW4gdGhlIG5ldHdvcmsgcHJv
Y2VzcyBpcyBzdXNwZW5kZWQsIGFuZCBhcmUgb25seSBtZXJnZWQgb25jZQorICAgICAgICB0aGUg
cHJvY2VzcyBoYXMgcmVzdW1lZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTAxLTIxICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVz
dCBoaXN0b3J5IGxpbmtzIG9uIHRoZSBkYXNoYm9hcmQgc2hvdWxkIGdvIHRvIHRoZSBuZXcgcmVz
dWx0cyBkYXRhYmFzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IGJjMzM0OWY2
MjQxOGRhMDI2ODVjOThmODYwNTdjYmNkNjM2ZjUxYjEuLjExNmI1Njk3YjhiN2FiZGE3Y2YwYThi
MmMxMjU0YTljMzE1NGIyOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTEz
OTgsMyArMTM5OCwxNDYgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBHZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnlEYXRhYmFzZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwogfQorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3Ms
IFN1c3BlbmRlZFByb2Nlc3NNZXJnZXNOZXdTdGF0aXN0aWNzVXBvblJlc3VtaW5nKQoreworICAg
IGF1dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQ
b29sXTsKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDogc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmll
dzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgW3dlYlZpZXcxIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldzEgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJWaWV3MiBsb2FkSFRNTFN0
cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdDIub3JnIl1dOworICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDpZRVNdOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9zZXRVc2VJVFBEYXRhYmFzZTp0cnVlIGNvbXBsZXRpb25IYW5kbGVyOiBeKHZvaWQp
IHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtk
YXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczpeKHZvaWQpIHsKKyAgICAgICAg
ZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgc3RhdGljIGJvb2wgc3RhdGlzdGljc1Vw
ZGF0ZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNzYWdl
KSB7CisgICAgICAgIGlmICghW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3RhdGlzdGljcyBV
cGRhdGVkIl0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRpc3RpY3NVcGRhdGVk
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOworCisgICAgLy8gTWFrZSBhIGNhbGwgdG8gcHJlcGFyZSBmb3IgTmV0d29ya1Byb2Nlc3Mg
c3VzcGVuc2lvbi4KKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfc2VuZE5l
dHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5XTsKKworICAgIC8vIFRlYWNoIElUUCBh
Ym91dCBiYWQgb3JpZ2lucy4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUg
X3NldFByZXZhbGVudERvbWFpbjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5j
b20iXSBjb21wbGV0aW9uSGFuZGxlcjogXih2b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwor
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRQcmV2YWxlbnREb21h
aW46W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDIuY29tIl0gY29tcGxldGlvbkhh
bmRsZXI6IF4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNlZWQgdGVz
dCBkYXRhIGluIHRoZSB3ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisKKyAgICAvLyBldmlsMQorICAg
IGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly9ldmlsMS5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0
aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gZXZpbDIKKyAg
ICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL2V2aWwyLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBzdGF0aXN0aWNz
VXBkYXRlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBsb2FkSFRNTFN0cmluZzpAIjxib2R5Pjxz
Y3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3RyaW5n
OkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9keT4iIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXV07CisKKyAgICAvLyBXYWl0IGZv
ciB0aGUgc3RhdGlzdGljcyB0byBiZSB1cGRhdGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGF0aXN0aWNzVXBkYXRlZCk7CisKKyAgICAv
LyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmlsMSBpcyBOT1QgcmVnaXN0ZXJlZCBhcyBz
dWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFn
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgZXZpbDIgaXMgTk9UIHJl
Z2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMi5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09M
IGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNSZWdpc3RlcmVkKTsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBDb2xsZWN0IHRoZSBJVFAgZGF0YSBzdW1tYXJ5
IHdoaWNoIHNob3VsZCBiZSBlbXB0eS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpedm9pZChOU0FycmF5
PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+ICp0aGlyZFBhcnR5RGF0YSkK
KyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKCF0aGlyZFBhcnR5RGF0YS5jb3VudCk7CisgICAg
ICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gUmVzdW1lIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyAg
ICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfc2VuZE5ldHdvcmtQcm9jZXNzRGlk
UmVzdW1lXTsKKworICAgIC8vIFJ1biB1bnRpbCB0aGUgdW50aWwgdGhlIElUUCBkYXRhIHN1bW1h
cnkgaGFzIG1lcmdlZCB0aGUgdHdvIHZhbHVlcyB0aGF0IHdlcmUgb2JzZXJ2ZWQgYWZ0ZXIgdGhl
IHByb2Nlc3Mgd2FzIHN1c3BlbmRlZC4KKyAgICBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgd2hpbGUgKCFkb25lKSB7CisgICAgICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgICAgIFtk
YXRhU3RvcmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpedm9pZChOU0Fy
cmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+ICp0aGlyZFBhcnR5RGF0
YSkgeworICAgICAgICAgICAgaWYgKHRoaXJkUGFydHlEYXRhLmNvdW50ID09IDIpCisgICAgICAg
ICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAg
ICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAg
ICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmlsMSBpcyBub3cgcmVn
aXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBp
c1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmls
MiBpcyBub3cgcmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNl
OworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFy
dHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJdIGNvbXBsZXRpb25IYW5k
bGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0
ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388587</attachid>
            <date>2020-01-23 13:21:53 -0800</date>
            <delta_ts>2020-01-23 14:06:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206593-20200123132152.patch</filename>
            <type>text/plain</type>
            <size>5824</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc1NmFlY2U3OTFiOGVjMjAx
OGFhNjQ5ZjM4ZWUyMWMzYmViYjBiNTQuLjU2NzMwOThlYTdiOGM1Y2IzOGE2MGQ4MGNkNzQyYzRh
ZTUxY2E5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDEtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQmFja2dyb3VuZCB0
aHJlYWQgd2l0aCBJVFAgRGF0YWJhc2Ugc2hvdWxkIGxvY2sgd2hlbiB0aGUgbmV0d29yayBwcm9j
ZXNzIGlzIHN1c3BlbmRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTkzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU4NzEzMzc5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IGEgZnVuY3Rpb24gdG8gaGFuZyB0aGUgYmFja2dyb3VuZCBxdWV1ZSB3aGVuIHRoZQorICAgICAg
ICBOZXR3b3JrUHJvY2VzcyBpcyBwcmVwYXJpbmcgdG8gc3VzcGVuZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNw
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorCiAyMDIw
LTAxLTIzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIEJyb2tlciBhY2Nlc3MgdG8gdGhlIFBvd2VyTWFuYWdlbWVudCBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNzFhZWMzYzlh
MGFkZDQ2MzNjZDdjNDFiZTY0YjkwNjRmZjAxZjdiYi4uMjNmOWYwZTkxMzQzODg1MWYyOTUyNWU4
ZWQ0YTM0ZTE4MDU2MThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTExNTQsNiArMTE1NCw0NSBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5k
bGVyPAogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9z
dGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhh
bmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgTG9ja2VyPExvY2s+
IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3Rh
dGU6OlN1c3BlbmRlZCk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OldpbGxTdXNw
ZW5kKSB7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKworICAgICAgICB3aGlsZSAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVu
ZGVkKQorICAgICAgICAgICAgbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbi53YWl0KG1fc3RhdGVMb2Nr
KTsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCkKK3sKKyAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9j
a2VyKG1fc3RhdGVMb2NrKTsKKyAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOworICAg
IG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0
ZTo6U3VzcGVuZGVkKQorICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggOWU2MGNlMTE0ZWU0MzI3ZmM5OWYw
NDc2Y2I5ZTE5Y2FkZWI0ZTFkOS4uNDEyMjYzNDE5MjNlNjRiN2YwNDg4OTMwMDIwN2FjZDAzZTRl
YzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMjg3LDYgKzI4Nyw4IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogICAgIHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc3VtZSgpOwogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYs
IGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpAQCAtMzEwLDYgKzMxMiwx
NSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxz
ZSB9OwogCiAgICAgYm9vbCBtX2ZpcnN0TmV0d29ya1Byb2Nlc3NDcmVhdGVkIHsgZmFsc2UgfTsK
KyAgICAKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAg
V2lsbFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRlZAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0
ZSB7IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9jayBtX3N0YXRlTG9jazsKKyAgICBDb25kaXRp
b24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAyZTM0OWYxMGRhMzFiNzE4Yzk0ZjM5ZDI3NTFmYzlkMjk2ZjQwYmM5Li5jNGVmODE3ODhhZGUx
YjI4ZGY4MDg1NjRjYTY5NGVmMTVkMWRjMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjExNyw2ICsyMTE3LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVu
dCwgQ29tcGxldGlvbkhhbmRsCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIFByb2Nlc3MgaXMgcmVh
ZHkgdG8gc3VzcGVuZCIsIHRoaXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
IH0pOworICAgIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZm9y
RWFjaE5ldHdvcmtTZXNzaW9uKFsmY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiBuZXR3b3JrU2Vz
c2lvbikgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICB9
KTsKKyNlbmRpZgogCiAgICAgcGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgcGxhdGZvcm1TeW5jQWxsQ29va2llcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwpAQCAtMjE2MCw2ICsyMTY3LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
c3VtZSgpCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKIAorI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzdW1lKCk7CisgICAgfSk7
CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZm9yIChhdXRv
JiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNw
ZW5zaW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388589</attachid>
            <date>2020-01-23 14:06:40 -0800</date>
            <delta_ts>2020-01-23 14:49:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206593-20200123140639.patch</filename>
            <type>text/plain</type>
            <size>5789</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc1NmFlY2U3OTFiOGVjMjAx
OGFhNjQ5ZjM4ZWUyMWMzYmViYjBiNTQuLjc1NWE5MjdjOWNlMWI3MDE2ODFhMTVkOWI0N2RkZmI3
YzM4YTU0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDEtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQmFja2dyb3VuZCB0
aHJlYWQgd2l0aCBJVFAgRGF0YWJhc2Ugc2hvdWxkIGxvY2sgd2hlbiB0aGUgbmV0d29yayBwcm9j
ZXNzIGlzIHN1c3BlbmRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTkzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU4NzEzMzc5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEg
ZnVuY3Rpb24gdG8gaGFuZyB0aGUgYmFja2dyb3VuZCBxdWV1ZSB3aGVuIHRoZQorICAgICAgICBO
ZXR3b3JrUHJvY2VzcyBpcyBwcmVwYXJpbmcgdG8gc3VzcGVuZC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1
bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorCiAyMDIwLTAx
LTIzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIEJyb2tlciBhY2Nlc3MgdG8gdGhlIFBvd2VyTWFuYWdlbWVudCBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNzFhZWMzYzlhMGFk
ZDQ2MzNjZDdjNDFiZTY0YjkwNjRmZjAxZjdiYi4uMzdkZDIyYzk5ZmE3ZmJmODFiZDMyYWZiY2M5
NGJjNWY2MzRmODMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTExNTQsNiArMTE1NCw0NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVy
PAogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0
ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAg
IEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOworCisgICAgICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgeworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgcG9zdFRh
c2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICAgICAgd2hpbGUgKG1f
c3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgICAgIG1fc3RhdGVDaGFuZ2VDb25k
aXRpb24ud2FpdChtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgYXV0byBwcmV2aW91
c1N0YXRlID0gbV9zdGF0ZTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7CisgICAgaWYg
KHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgbV9zdGF0ZUNoYW5n
ZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IDllNjBjZTExNGVlNDMyN2ZjOTlmMDQ3NmNiOWUxOWNhZGViNGUxZDkuLjQxMjI2MzQxOTIzZTY0
YjdmMDQ4ODkzMDAyMDdhY2QwM2U0ZWMwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI4Nyw2ICsyODcsOCBAQCBzdHJ1Y3QgVGhpcmRQYXJ0
eURhdGEgewogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKICAgICB2b2lkIGFn
Z3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CisgICAg
dm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1
bWUoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKQEAgLTMxMCw2ICszMTIsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2NoZWR1
bGVkUHJvY2Vzc1N0YXRzIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9maXJzdE5ldHdvcmtQcm9j
ZXNzQ3JlYXRlZCB7IGZhbHNlIH07CisgICAgCisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAg
ICAgIFJ1bm5pbmcsCisgICAgICAgIFdpbGxTdXNwZW5kLAorICAgICAgICBTdXNwZW5kZWQKKyAg
ICB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OworICAgIExvY2sgbV9z
dGF0ZUxvY2s7CisgICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmUzNDlmMTBkYTMxYjcxOGM5NGYzOWQyNzUxZmM5ZDI5
NmY0MGJjOS4uYzRlZjgxNzg4YWRlMWIyOGRmODA4NTY0Y2E2OTRlZjE1ZDFkYzA1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIx
MTcsNiArMjExNywxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJv
b2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbAogICAgICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1
c3BlbmQoKSBQcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQiLCB0aGlzKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKKyAgICAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJmNhbGxiYWNrQWdncmVn
YXRvcl0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zdXNwZW5kKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7CisgICAgfSk7CisjZW5kaWYKIAogICAgIHBsYXRmb3JtUHJlcGFyZVRv
U3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIHBsYXRmb3JtU3luY0FsbENv
b2tpZXMoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIxNjAsNiArMjE2NywxMyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5l
bmRTdXNwZW5zaW9uKCk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnJlc3VtZSgpOworICAgIH0pOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCiAg
ICAgICAgIHNlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>