<?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>156099</bug_id>
          
          <creation_ts>2016-03-31 23:54:45 -0700</creation_ts>
          <short_desc>&lt;a download&gt; does not support Blob URLs</short_desc>
          <delta_ts>2016-09-25 20:07:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=156177</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=162531</see_also>
          <bug_file_loc>http://jsfiddle.net/cW7W5/1579/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156057</dependson>
    
    <dependson>156180</dependson>
    
    <dependson>162541</dependson>
    
    <dependson>162543</dependson>
          <blocked>156056</blocked>
    
    <blocked>162535</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>adam</cc>
    
    <cc>allan.jardine</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>chrisjshull</cc>
    
    <cc>commit-queue</cc>
    
    <cc>roustem</cc>
    
    <cc>wanderingcoder</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179771</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-31 23:54:45 -0700</bug_when>
    <thetext>The current implementation of &lt;a download&gt; fails to handle Blob URLs properly.

Tested by: http/tests/security/anchor-download-allow-blob.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180280</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-04-03 23:50:39 -0700</bug_when>
    <thetext>This is happening because the following fails:

void NavigationState::NavigationClient::decidePolicyForNavigationAction:

(Line 303):
            if ([NSURLConnection canHandleRequest:nsURLRequest.get()]) {

Need to see how Blob URLs are handled elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180462</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-04 13:20:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/25535520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180892</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-05 11:36:51 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This is happening because the following fails:
&gt; 
&gt; void NavigationState::NavigationClient::decidePolicyForNavigationAction:
&gt; 
&gt; (Line 303):
&gt;             if ([NSURLConnection canHandleRequest:nsURLRequest.get()]) {
&gt; 
&gt; Need to see how Blob URLs are handled elsewhere.

I don&apos;t think this is the problem. A known download should never be a naviagtion in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233082</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 18:31:45 -0700</bug_when>
    <thetext>I have a WIP patch that seems to work. I&apos;ll get it ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233095</commentid>
    <comment_count>5</comment_count>
      <attachid>289736</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 20:26:13 -0700</bug_when>
    <thetext>Created attachment 289736
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233096</commentid>
    <comment_count>6</comment_count>
      <attachid>289737</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 20:29:45 -0700</bug_when>
    <thetext>Created attachment 289737
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233097</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 20:49:21 -0700</bug_when>
    <thetext>Test page:
http://jsfiddle.net/cW7W5/1579/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233100</commentid>
    <comment_count>8</comment_count>
      <attachid>289739</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 22:48:21 -0700</bug_when>
    <thetext>Created attachment 289739
WIP Patch (with tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233102</commentid>
    <comment_count>9</comment_count>
      <attachid>289740</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-23 23:14:42 -0700</bug_when>
    <thetext>Created attachment 289740
WIP Patch (with more tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233103</commentid>
    <comment_count>10</comment_count>
      <attachid>289740</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-24 00:39:02 -0700</bug_when>
    <thetext>Comment on attachment 289740
WIP Patch (with more tests)

Attachment 289740 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2135745

New failing tests:
http/tests/security/anchor-download-allow-blob.html
fast/dom/HTMLAnchorElement/anchor-download-unset.html
fast/dom/HTMLAnchorElement/anchor-nodownload.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233104</commentid>
    <comment_count>11</comment_count>
      <attachid>289741</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-24 00:39:07 -0700</bug_when>
    <thetext>Created attachment 289741
Archive of layout-test-results from ews125 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews125  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233117</commentid>
    <comment_count>12</comment_count>
      <attachid>289745</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-24 09:25:22 -0700</bug_when>
    <thetext>Created attachment 289745
WIP Patch (with more tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233143</commentid>
    <comment_count>13</comment_count>
      <attachid>289756</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-24 13:42:20 -0700</bug_when>
    <thetext>Created attachment 289756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233174</commentid>
    <comment_count>14</comment_count>
      <attachid>289756</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-24 17:54:06 -0700</bug_when>
    <thetext>Comment on attachment 289756
Patch

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

&gt; Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.h:45
&gt; +    // ResourceHandleClient
&gt; +    void didReceiveResponse(WebCore::ResourceHandle*, WebCore::ResourceResponse&amp;&amp;) final;
&gt; +    void didReceiveBuffer(WebCore::ResourceHandle*, Ref&lt;WebCore::SharedBuffer&gt;&amp;&amp;, int reportedEncodedDataLength) final;
&gt; +    void didFinishLoading(WebCore::ResourceHandle*, double finishTime) final;
&gt; +    void didFail(WebCore::ResourceHandle*, const WebCore::ResourceError&amp;) final;

I would have put these overrides inside the private section, since nobody needs to call them directly, only polymorphically through a ResourceHandleClient&amp; to this object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233178</commentid>
    <comment_count>15</comment_count>
      <attachid>289765</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-24 19:08:19 -0700</bug_when>
    <thetext>Created attachment 289765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233180</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-24 19:09:20 -0700</bug_when>
    <thetext>*** Bug 156180 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233185</commentid>
    <comment_count>17</comment_count>
      <attachid>289765</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-24 19:41:57 -0700</bug_when>
    <thetext>Comment on attachment 289765
Patch

Clearing flags on attachment: 289765

Committed r206356: &lt;http://trac.webkit.org/changeset/206356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233186</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-24 19:42:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233277</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-25 17:37:54 -0700</bug_when>
    <thetext>This made tests crash on bots: https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r206363%20(8387)/results.html

Chris, are you available to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233278</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-25 17:38:21 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; This made tests crash on bots:
&gt; https://build.webkit.org/results/
&gt; Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r206363%20(8387)/results.html
&gt; 
&gt; Chris, are you available to take a look?

Yes, looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233284</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-25 17:51:19 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; This made tests crash on bots:
&gt; &gt; https://build.webkit.org/results/
&gt; &gt; Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r206363%20(8387)/results.html
&gt; &gt; 
&gt; &gt; Chris, are you available to take a look?
&gt; 
&gt; Yes, looking.

I found the problem. I&apos;ll upload a patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233293</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-25 19:07:32 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; This made tests crash on bots:
&gt; &gt; &gt; https://build.webkit.org/results/
&gt; &gt; &gt; Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r206363%20(8387)/results.html
&gt; &gt; &gt; 
&gt; &gt; &gt; Chris, are you available to take a look?
&gt; &gt; 
&gt; &gt; Yes, looking.
&gt; 
&gt; I found the problem. I&apos;ll upload a patch shortly.

Patch to address the crashes is up for review at https://bugs.webkit.org/show_bug.cgi?id=162541.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289736</attachid>
            <date>2016-09-23 20:26:13 -0700</date>
            <delta_ts>2016-09-23 20:29:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>156099_a_download_blob_wip.patch</filename>
            <type>text/plain</type>
            <size>25300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDVkNzk0Ni4uNDdkMjk0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMyw2ICsyMTMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCiAKKyAgICBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAogICAgIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NjY3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50
LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJsb2JEb3dubG9hZENsaWVudC5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitCbG9iRG93bmxvYWRDbGllbnQ6
OkJsb2JEb3dubG9hZENsaWVudChEb3dubG9hZCYgZG93bmxvYWQpCisgICAgOiBtX2Rvd25sb2Fk
KGRvd25sb2FkKQoreworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorewor
ICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKKwor
ICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKKyAgICBtX2Rlc3RpbmF0aW9uUGF0aCA9
IG1fZG93bmxvYWQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9kb3du
bG9hZC5zdWdnZXN0ZWROYW1lKCksIGFsbG93T3ZlcndyaXRlKTsKKyAgICBpZiAobV9kZXN0aW5h
dGlvblBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBVc2UgYSBiZXR0ZXIgZXJy
b3IuCisgICAgICAgIGRpZEZhaWwobnVsbHB0ciwgUmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChmaWxlRXhpc3RzKG1fZGVzdGluYXRpb25QYXRoKSkg
eworICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CisgICAgICAgICAgICBtX2Rlc3RpbmF0
aW9uUGF0aCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGEgYmV0
dGVyIGVycm9yLgorICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBSZXNvdXJjZUVycm9yKCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZUZpbGUobV9k
ZXN0aW5hdGlvblBhdGgpOworICAgIH0KKworICAgIG1fZGVzdGluYXRpb25GaWxlID0gb3BlbkZp
bGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgbV9kb3dubG9hZC5kaWRD
cmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgQmxvYkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCkKK3sKKyAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmls
ZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBtX2Rvd25sb2FkLmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCit7CisgICAgY2xvc2VG
aWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOworfQor
Cit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmls
ZSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGRlbGV0
ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworCisgICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9y
LCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdkZDJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9h
ZENsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBEb3dubG9hZDsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsK
KworY2xhc3MgQmxvYkRvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBCbG9iRG93bmxvYWRDbGll
bnQoRG93bmxvYWQmKTsKKworICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIERvd25sb2Fk
JiBtX2Rvd25sb2FkOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKKyAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCBkZjNmMzY0Li41MDJm
OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZC5oIgog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiQmxvYkRvd25s
b2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTQ0LDE4ICs0NSwyMSBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRG
T1JNKENPQ09BKQogRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRN
YW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayog
ZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCi0jZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotI2VuZGlm
CiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25s
b2FkSUQoZG93bmxvYWRJRCkKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAsIG1fcmVx
dWVzdChyZXF1ZXN0KQotI2VuZGlmCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgLCBtX2Rvd25sb2FkKGRvd25sb2FkKQotICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQorICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCit7CisgICAg
QVNTRVJUKG1fZG93bmxvYWRJRC5kb3dubG9hZElEKCkpOworCisgICAgbV9kb3dubG9hZE1hbmFn
ZXIuZGlkQ3JlYXRlRG93bmxvYWQoKTsKK30KICNlbmRpZgorCitEb3dubG9hZDo6RG93bmxvYWQo
RG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUpCisgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCisgICAgLCBtX2Rv
d25sb2FkSUQoZG93bmxvYWRJRCkKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9z
dWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRC5k
b3dubG9hZElEKCkpOwpAQCAtNzAsMTggKzc0LDMyIEBAIERvd25sb2FkOjp+RG93bmxvYWQoKQog
ICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOwogfQogCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCit2b2lkIERvd25sb2FkOjpzdGFydCgpCit7CisgICAgaWYgKG1f
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7CisgICAgICAgIG1fZG93bmxvYWRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEb3dubG9hZENsaWVudD4oKnRoaXMpOworICAgICAg
ICBtX3Jlc291cmNlSGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShudWxscHRyLCBtX3Jl
cXVlc3QsIG1fZG93bmxvYWRDbGllbnQuZ2V0KCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGRp
ZFN0YXJ0KCk7CisgICAgfQorCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbHNlCisgICAgc3RhcnROZXR3b3JrTG9hZCgpOworI2VuZGlmCit9
CisKIHZvaWQgRG93bmxvYWQ6OmRpZFN0YXJ0KCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjpEaWRTdGFydChtX3JlcXVlc3QsIG1fc3VnZ2VzdGVkTmFtZSkpOwogfQotI2Vu
ZGlmCiAKICNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxv
YWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CiB9CisjZW5kaWYKIAogdm9pZCBE
b3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewpAQCAtODksNyArMTA3LDYgQEAgdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAgICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewpA
QCAtMTEwLDcgKzEyNyw2IEBAIGJvb2wgRG93bmxvYWQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29s
JiBhbGxvd092ZXJ3cml0ZSkKIHsKICAgICBTdHJpbmcgZGVzdGluYXRpb247CkBAIC0xMjQsNyAr
MTQwLDYgQEAgU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLAogCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9u
OwogfQotI2VuZGlmCiAKIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggMTcwY2ZiOC4uNmYzYTY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI5
LDggKzI5LDExIEBACiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00NCwxMiArNDcsNiBAQCBPQkpD
X0NMQVNTIFdLRG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVk
ZSA8bWVtb3J5PgotI2VuZGlmCi0KICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0
d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VuZGlmCkBAIC03NywzMiArNzQsMzIgQEAgY2xh
c3MgRG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25z
dCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0jZWxzZQotICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwogI2VuZGlmCisgICAgRG93bmxvYWQoRG93bmxvYWRN
YW5hZ2VyJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CisKICAgICB+RG93bmxvYWQoKTsK
IAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgc3RhcnQoKTsKKworI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlm
CiAgICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJl
dHVybiBtX2Rvd25sb2FkSUQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uKTsgfQogI2Vsc2UKLSAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYKKyAgICB2b2lkIGRpZFN0YXJ0KCk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICBib29s
IHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxv
d092ZXJ3cml0ZSk7Ci0jZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIHBsYXRmb3Jt
RGlkRmluaXNoKCk7CkBAIC0xMTQsMTUgKzExMSwxNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlOwogCisjaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCisgICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkKCk7CisjZW5kaWYKKwogICAg
IHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0OwogCiAgICAgRG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdl
cjsKICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwotI2VuZGlmCiAKICAg
ICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogCkBAIC0xMzgs
MTAgKzEzNyw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8
Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7Ci0jZW5kaWYKICAgICBTdHJpbmcgbV9zdWdnZXN0
ZWROYW1lOwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZERhdGEgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKaW5kZXggMTU5NGVmNC4uMjZlMzdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKQEAgLTQ3LDIxICs0NywyMyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdl
cihDbGllbnQmIGNsaWVudCkKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNl
c3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7CiAjaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFj
a2VyOjpuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24p
CisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpIHsKKyAgICAgICAgYXV0
byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgIHBhcmFt
ZXRlcnMuc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Qg
PSByZXF1ZXN0OworICAgICAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBD
bGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKKyAgICAg
ICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdEb3dubG9hZD4oV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtT
ZXNzaW9uKSk7CiAgICAgICAgIHJldHVybjsKLSAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHNlc3Npb25JRDsKLSAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwotICAgIHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlh
bFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRp
YWxzOwotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpu
ZXR3b3JrU2Vzc2lvbikpOwotI2Vsc2UKKyAgICB9CisjZW5kaWYKICAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3Qs
IHN1Z2dlc3RlZE5hbWUpOwogICAgIGRvd25sb2FkLT5zdGFydCgpOwogCiAgICAgQVNTRVJUKCFt
X2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRv
d25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCmluZGV4IDdhYjBiY2QuLjk0Zjg4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93
bmxvYWRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2lvcy9Eb3dubG9hZElPUy5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyB2b2lkIHNldFVw
RG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93
bmxvYWQpCiAgICAgfTsKIH0KIAotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQordm9pZCBEb3dubG9h
ZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rv
d25sb2FkTWFjLm1tCmluZGV4IGMwMDA0OWEuLmU1YWI1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bQpAQCAtNDksNyArNDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0
TmV0d29ya0xvYWQoKQogewogICAgIEFTU0VSVCghbV9uc1VSTERvd25sb2FkKTsKICAgICBBU1NF
UlQoIW1fZGVsZWdhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggNTZiYmQwMC4u
ODZlZmE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgbV9hbGxvd092ZXJ3cml0ZTsKIH07CiAKLXZvaWQgRG93bmxvYWQ6
OnN0YXJ0KCkKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIEFTU0VS
VCghbV9kb3dubG9hZENsaWVudCk7CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmlu
ZGV4IDIzZjMzZGUuLjhjNzZiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaApAQCAtMjI3LDcgKzIyNyw3IEBACiAgICAgbWFjcm8o
U2hhZG93RE9NRW5hYmxlZCwgc2hhZG93RE9NRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIlNo
YWRvdyBET00iLCAiSFRNTCBTaGFkb3cgRE9NIHByb3RvdHlwZSIpIFwKICAgICBtYWNybyhET01J
dGVyYXRvckVuYWJsZWQsIGRvbUl0ZXJhdG9yRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIs
ICIiKSBcCiAgICAgbWFjcm8oRmV0Y2hBUElFbmFibGVkLCBmZXRjaEFQSUVuYWJsZWQsIEJvb2ws
IGJvb2wsIHRydWUsICIiLCAiIikgXAotICAgIG1hY3JvKERvd25sb2FkQXR0cmlidXRlRW5hYmxl
ZCwgZG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBc
CisgICAgbWFjcm8oRG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkLCBkb3dubG9hZEF0dHJpYnV0ZUVu
YWJsZWQsIEJvb2wsIGJvb2wsIHRydWUsICIiLCAiIikgXAogICAgIG1hY3JvKFNlbGVjdGlvblBh
aW50aW5nV2l0aG91dFNlbGVjdGlvbkdhcHNFbmFibGVkLCBzZWxlY3Rpb25QYWludGluZ1dpdGhv
dXRTZWxlY3Rpb25HYXBzRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9TRUxFQ1RJT05fUEFJ
TlRJTkdfV0lUSE9VVF9TRUxFQ1RJT05fR0FQU19FTkFCTEVELCAiIiwgIiIpIFwKICAgICBtYWNy
byhBcHBsZVBheUVuYWJsZWQsIGFwcGxlUGF5RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIi
LCAiIikgXAogICAgIG1hY3JvKEFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkLCBh
cHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIs
ICIiKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAppbmRleCAxMjg2ZGUwLi4yNTQ5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTE4OSw3
ICsxODksOCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubAogICAgIGlmIChOZXR3b3JrUHJvY2Vz
c1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkp
CiAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRv
d25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3
cml0ZSksIDApOwogfQotI2Vsc2UKKyNlbmRpZgorCiB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wmIGFsbG93T3ZlcndyaXRlLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAgYWxsb3dPdmVyd3Jp
dGUgPSBmYWxzZTsKQEAgLTIwNiw3ICsyMDcsNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbQog
ICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIH0KLSNlbmRpZgogCiB2b2lkIERvd25sb2FkUHJveHk6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMTVm
ZTU0MmMuLjIzMDI2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC04Miw5ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICB2b2lkIHNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wm
IHJlc3VsdCk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTdHJp
bmcmIGRlc3RpbmF0aW9uLCBib29sJiBhbGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlkQ3Jl
YXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgp
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBiN2UzOTNhLi5jYWI0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw5
ICszMiw3IEBAIG1lc3NhZ2VzIC0+IERvd25sb2FkUHJveHkgewogICAgIERpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IGxlbmd0aCkKICAgICBTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkKLSNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKICAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShTdHJpbmcg
ZmlsZW5hbWUpIC0+IChTdHJpbmcgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0j
ZW5kaWYKICAgICBEaWRDcmVhdGVEZXN0aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5p
c2goKQogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VtZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGQwODRhNi4uNjcyNTRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxMyw2
ICsxMjEzLDggQEAKIAkJODM5OTAyMDIxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZG
MUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgKi87IH07CiAJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM5OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtM
b2FkLmggKi87IH07CiAJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cCAqLzsgfTsKKwkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRkFD
NDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovOyB9OworCQk4M0JG
QUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZBQzQxMUQ5NjEzNjAwMDQz
MzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovOyB9OwogCQk4M0Q0NTRENzFCRTlEM0M0
MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3Jr
TG9hZENsaWVudC5oICovOyB9OwogCQk4NDQ3Nzg1MzE3NkZDQzA4MDBDREM3QkIgLyogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi87IH07CiAJCTg2ODE2MEQwMTg3NjQ1
NTcwMDIxRTc5RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYwQ0YxODc2NDUzNzAwMjFFNzlEIC8q
IFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0gKi87IH07CkBAIC0zMzA4LDYgKzMzMTAsOCBAQAog
CQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0xvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOTkwMUZGMUJF
OUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBOZXR3b3JrTG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkRDQ0I4MUFDNUZE
QjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRv
d25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2JEb3du
bG9hZENsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9h
ZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JGQUM0MTFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkQ2xpZW50Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjgxNjBDRDE4NzYzRDRCMDAyMUU3OUQgLyogV2luZG93U2VydmVy
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzM4LDYgKzU3NDIsOCBAQAogCQkJCTVDMTQy
NzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBjb2NvYSAqLywKIAkJCQk1QzE0MjcwQzFDMjNGODc3MDBE
NDExODMgLyogaW9zICovLAogCQkJCTVDMTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8s
CisJCQkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICov
LAorCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3Bw
ICovLAogCQkJCTVDMTQyNkYzMUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgKi8sCiAJ
CQkJNUMxNDI2RjQxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkLmggKi8sCiAJCQkJNUMxNDI2
RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLywKQEAgLTc2MTIsNiArNzYxOCw3
IEBACiAJCQkJMjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzJDMTg0MDA4QjkwMDA3
MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkE5NzYxMTgwRTAzMUQwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JE
b3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3REQ1QkYxODBEQTdEMzAwODE2
NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJBOTc2
QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUxODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNDksNiArOTE1
Niw3IEBACiAJCQkJMEYwQzM2NUUxOEMxMTBBNTAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTkyREMxMzEyRjhCQUI5MDAxN0FGNjUgLyogTGF5
ZXJUcmVlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY0NTE5NTEwQjU1MDBD
NDhGRkEgLyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4M0JG
QUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRkRFNjVEMTk1NEU4RDUwMEM0OEZGQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8q
IExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTA4NzYzMUQyQzY0MUIw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289737</attachid>
            <date>2016-09-23 20:29:45 -0700</date>
            <delta_ts>2016-09-23 22:48:21 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>156099_a_download_blob_wip.patch</filename>
            <type>text/plain</type>
            <size>25317</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDVkNzk0Ni4uNDdkMjk0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMyw2ICsyMTMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCiAKKyAgICBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAogICAgIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NjY3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50
LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJsb2JEb3dubG9hZENsaWVudC5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitCbG9iRG93bmxvYWRDbGllbnQ6
OkJsb2JEb3dubG9hZENsaWVudChEb3dubG9hZCYgZG93bmxvYWQpCisgICAgOiBtX2Rvd25sb2Fk
KGRvd25sb2FkKQoreworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorewor
ICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKKwor
ICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKKyAgICBtX2Rlc3RpbmF0aW9uUGF0aCA9
IG1fZG93bmxvYWQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9kb3du
bG9hZC5zdWdnZXN0ZWROYW1lKCksIGFsbG93T3ZlcndyaXRlKTsKKyAgICBpZiAobV9kZXN0aW5h
dGlvblBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBVc2UgYSBiZXR0ZXIgZXJy
b3IuCisgICAgICAgIGRpZEZhaWwobnVsbHB0ciwgUmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChmaWxlRXhpc3RzKG1fZGVzdGluYXRpb25QYXRoKSkg
eworICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CisgICAgICAgICAgICBtX2Rlc3RpbmF0
aW9uUGF0aCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGEgYmV0
dGVyIGVycm9yLgorICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBSZXNvdXJjZUVycm9yKCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZUZpbGUobV9k
ZXN0aW5hdGlvblBhdGgpOworICAgIH0KKworICAgIG1fZGVzdGluYXRpb25GaWxlID0gb3BlbkZp
bGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgbV9kb3dubG9hZC5kaWRD
cmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgQmxvYkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCkKK3sKKyAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmls
ZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBtX2Rvd25sb2FkLmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCit7CisgICAgY2xvc2VG
aWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOworfQor
Cit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmls
ZSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGRlbGV0
ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworCisgICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9y
LCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdkZDJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9h
ZENsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBEb3dubG9hZDsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsK
KworY2xhc3MgQmxvYkRvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBCbG9iRG93bmxvYWRDbGll
bnQoRG93bmxvYWQmKTsKKworICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIERvd25sb2Fk
JiBtX2Rvd25sb2FkOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKKyAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCBkZjNmMzY0Li4yNTE2
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZC5oIgog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiQmxvYkRvd25s
b2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTQ0LDE4ICs0NSwyMSBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRG
T1JNKENPQ09BKQogRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRN
YW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayog
ZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCi0jZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotI2VuZGlm
CiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25s
b2FkSUQoZG93bmxvYWRJRCkKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAsIG1fcmVx
dWVzdChyZXF1ZXN0KQotI2VuZGlmCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgLCBtX2Rvd25sb2FkKGRvd25sb2FkKQotICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQorICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCit7CisgICAg
QVNTRVJUKG1fZG93bmxvYWRJRC5kb3dubG9hZElEKCkpOworCisgICAgbV9kb3dubG9hZE1hbmFn
ZXIuZGlkQ3JlYXRlRG93bmxvYWQoKTsKK30KICNlbmRpZgorCitEb3dubG9hZDo6RG93bmxvYWQo
RG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUpCisgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCisgICAgLCBtX2Rv
d25sb2FkSUQoZG93bmxvYWRJRCkKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9z
dWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRC5k
b3dubG9hZElEKCkpOwpAQCAtNzAsMTggKzc0LDMzIEBAIERvd25sb2FkOjp+RG93bmxvYWQoKQog
ICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOwogfQogCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCit2b2lkIERvd25sb2FkOjpzdGFydCgpCit7CisgICAgaWYgKG1f
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7CisgICAgICAgIG1fZG93bmxvYWRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEb3dubG9hZENsaWVudD4oKnRoaXMpOworICAgICAg
ICBtX3Jlc291cmNlSGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShudWxscHRyLCBtX3Jl
cXVlc3QsIG1fZG93bmxvYWRDbGllbnQuZ2V0KCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGRp
ZFN0YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UKKyAgICBzdGFydE5ldHdvcmtM
b2FkKCk7CisjZW5kaWYKK30KKwogdm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQogewogICAgIHNl
bmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KG1fcmVxdWVzdCwgbV9zdWdnZXN0
ZWROYW1lKSk7CiB9Ci0jZW5kaWYKIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBE
b3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBtX2Rvd25s
b2FkTWFuYWdlci5kb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKIH0K
KyNlbmRpZgogCiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CkBAIC04OSw3ICsxMDgsNiBAQCB2b2lkIERvd25sb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAK
ICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpKTsKIH0KLSNlbmRpZgogCiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBsZW5ndGgpCiB7CkBAIC0xMTAsNyArMTI4LDYgQEAgYm9vbCBEb3dubG9hZDo6c2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiBTdHJpbmcgRG93
bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKQogewogICAgIFN0cmluZyBkZXN0aW5h
dGlvbjsKQEAgLTEyNCw3ICsxNDEsNiBAQCBTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsCiAKICAgICBy
ZXR1cm4gZGVzdGluYXRpb247CiB9Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCAxNzBjZmI4Li42ZjNh
NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaApAQCAtMjksOCArMjksMTEgQEAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQ0
LDEyICs0Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jZW5kaWYKLQogI2lmIFVTRShDRk5FVFdPUksp
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKQEAgLTc3
LDMyICs3NCwzMiBAQCBjbGFzcyBEb3dubG9hZCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIg
ewogcHVibGljOgogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQog
ICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzayosIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSNlbHNlCi0gICAgRG93bmxvYWQoRG93
bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjZW5kaWYKKyAgICBE
b3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKKwog
ICAgIH5Eb3dubG9hZCgpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBz
dGFydCgpOworCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzdGFydFdpdGhI
YW5kbGUoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAjZW5kaWYKICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxv
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VnZ2VzdGVkTmFtZTsgfQogCiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24oUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CiAjZWxzZQotICAgIHZvaWQgZGlkU3Rh
cnQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICNlbmRpZgorICAgIHZv
aWQgZGlkU3RhcnQoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBs
ZW5ndGgpOwogICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgU3RyaW5n
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwog
ICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKQEAgLTExNCwxNSArMTExLDE3IEBAIHByaXZh
dGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJy
aWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7
CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICB2b2lkIHN0YXJ0TmV0d29ya0xvYWQo
KTsKKyNlbmRpZgorCiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAgIGJvb2wg
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBEb3dubG9hZE1hbmFnZXIm
IG1fZG93bmxvYWRNYW5hZ2VyOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwotI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVl
c3Q7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRl
bnNpb247CiAKQEAgLTEzOCwxMCArMTM3LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2VuZGlmCi0j
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKLSNlbmRpZgogICAg
IFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRGF0YSB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAxNTk0ZWY0Li4yNmUzN2Y0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDcsMjEgKzQ3LDIzIEBAIERvd25sb2FkTWFuYWdl
cjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCYgY2xpZW50KQogdm9pZCBEb3dubG9hZE1hbmFnZXI6
OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYg
KCFuZXR3b3JrU2Vzc2lvbikKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2Io
KSkgeworICAgICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKKyAgICAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgICAgIHBh
cmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIHBhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNy
ZWRlbnRpYWxzOworICAgICAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3du
bG9hZElELCAqbmV0d29ya1Nlc3Npb24pKTsKICAgICAgICAgcmV0dXJuOwotICAgIE5ldHdvcmtM
b2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gc2Vz
c2lvbklEOwotICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgcGFyYW1ldGVy
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHM7Ci0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9h
ZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92ZShwYXJhbWV0ZXJz
KSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uKSk7Ci0jZWxzZQorICAgIH0KKyNlbmRpZgog
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkTmFtZSk7CiAgICAgZG93bmxvYWQtPnN0YXJ0KCk7
CiAKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBt
X2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9
CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KaW5kZXggN2Fi
MGJjZC4uOTRmODg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAg
c3RhdGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGll
bnQsIERvd25sb2FkJiBkb3dubG9hZCkKICAgICB9OwogfQogCi12b2lkIERvd25sb2FkOjpzdGFy
dCgpCit2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggYzAwMDQ5YS4uZTVhYjUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQordm9p
ZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX25zVVJMRG93
bmxvYWQpOwogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNw
cAppbmRleCA1NmJiZDAwLi44NmVmYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2FsbG93T3ZlcndyaXRlOwogfTsK
IAotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9h
ZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQ2xpZW50KTsKICAgICBBU1NFUlQoIW1fcmVz
b3VyY2VIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmluaXRpb25zLmgKaW5kZXggMjNmMzNkZS4uOGM3NmJlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCkBAIC0yMjcsNyArMjI3
LDcgQEAKICAgICBtYWNybyhTaGFkb3dET01FbmFibGVkLCBzaGFkb3dET01FbmFibGVkLCBCb29s
LCBib29sLCB0cnVlLCAiU2hhZG93IERPTSIsICJIVE1MIFNoYWRvdyBET00gcHJvdG90eXBlIikg
XAogICAgIG1hY3JvKERPTUl0ZXJhdG9yRW5hYmxlZCwgZG9tSXRlcmF0b3JFbmFibGVkLCBCb29s
LCBib29sLCB0cnVlLCAiIiwgIiIpIFwKICAgICBtYWNybyhGZXRjaEFQSUVuYWJsZWQsIGZldGNo
QVBJRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCi0gICAgbWFjcm8oRG93bmxv
YWRBdHRyaWJ1dGVFbmFibGVkLCBkb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQsIEJvb2wsIGJvb2ws
IGZhbHNlLCAiIiwgIiIpIFwKKyAgICBtYWNybyhEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQsIGRv
d25sb2FkQXR0cmlidXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCiAgICAg
bWFjcm8oU2VsZWN0aW9uUGFpbnRpbmdXaXRob3V0U2VsZWN0aW9uR2Fwc0VuYWJsZWQsIHNlbGVj
dGlvblBhaW50aW5nV2l0aG91dFNlbGVjdGlvbkdhcHNFbmFibGVkLCBCb29sLCBib29sLCBERUZB
VUxUX1NFTEVDVElPTl9QQUlOVElOR19XSVRIT1VUX1NFTEVDVElPTl9HQVBTX0VOQUJMRUQsICIi
LCAiIikgXAogICAgIG1hY3JvKEFwcGxlUGF5RW5hYmxlZCwgYXBwbGVQYXlFbmFibGVkLCBCb29s
LCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oQXBwbGVQYXlDYXBhYmlsaXR5RGlz
Y2xvc3VyZUFsbG93ZWQsIGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkLCBCb29s
LCBib29sLCB0cnVlLCAiIiwgIiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDEyODZkZTAuLjI1NDk1MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcApAQCAtMTg5LDcgKzE4OSw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sCiAgICAg
aWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+
bmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIGFsbG93T3ZlcndyaXRlKSwgMCk7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgRG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCYgYWxsb3dPdmVyd3Jp
dGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsK
ICAgICBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOwpAQCAtMjA2LDcgKzIwNyw2IEBAIHZvaWQgRG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtCiAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5z
aW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogfQotI2VuZGlmCiAKIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaAppbmRleCAxNWZlNTQyYy4uMjMwMjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTgyLDkgKzgyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgp
OwogICAgIHZvaWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCYgcmVzdWx0KTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wmIGFsbG93T3ZlcndyaXRlLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotI2VuZGlm
CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpOwogICAg
IHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI3ZTM5M2EuLmNhYjQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVz
c2FnZXMuaW4KQEAgLTMyLDkgKzMyLDcgQEAgbWVzc2FnZXMgLT4gRG93bmxvYWRQcm94eSB7CiAg
ICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Up
CiAgICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQogICAgIFNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0KQotI2lm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFN0cmluZyBmaWxlbmFtZSkgLT4gKFN0cmluZyBkZXN0aW5hdGlvbiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKLSNlbmRpZgogICAgIERpZENyZWF0ZURlc3RpbmF0aW9uKFN0cmluZyBw
YXRoKQogICAgIERpZEZpbmlzaCgpCiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZDA4NGE2Li42NzI1
NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjEzLDYgKzEyMTMsOCBAQAogCQk4Mzk5MDIwMjFCRTlBMDJCMDAwRjM2NTMg
LyogTmV0d29ya0xvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCAqLzsg
fTsKIAkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk5MDFGRTFCRTlBMDFCMDAw
RjM2NTMgLyogTmV0d29ya0xvYWQuaCAqLzsgfTsKIAkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQx
IC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwICovOyB9OworCQk4M0JGQUM0MjFEOTYxMzdDMDA0MzM0OTAgLyog
QmxvYkRvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50
LmggKi87IH07CisJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNC
RkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi87IH07CiAJ
CTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNENDU0RDYxQkU5RDNDNDAw
NkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggKi87IH07CiAJCTg0NDc3ODUzMTc2RkNDMDgw
MENEQzdCQiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NDc3ODUxMTc2RkNBQzEw
MENEQzdCQiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCAqLzsgfTsK
IAkJODY4MTYwRDAxODc2NDU1NzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBDRjE4
NzY0NTM3MDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSAqLzsgfTsKQEAgLTMz
MDgsNiArMzMxMCw4IEBACiAJCTgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9h
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrTG9hZC5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtMb2FkLmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkZBQzQwMUQ5NjEzNjAw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQmxvYkRvd25sb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0Q0NTRENjFCRTlEM0M0MDA2QzkzQkQgLyog
TmV0d29ya0xvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0
d29ya0xvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0NDc3ODUxMTc2RkNBQzEwMENEQzdC
QiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MENEMTg3NjNENEIwMDIxRTc5
RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MzgsNiArNTc0
Miw4IEBACiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNvY29hICovLAogCQkJCTVD
MTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8sCiAJCQkJNUMxNDI3MEIxQzIzRjg3MTAw
RDQxMTgzIC8qIG1hYyAqLywKKwkJCQk4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRv
d25sb2FkQ2xpZW50LmggKi8sCisJCQkJODNCRkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JE
b3dubG9hZENsaWVudC5jcHAgKi8sCiAJCQkJNUMxNDI2RjMxQzIzRjg0MzAwRDQxMTgzIC8qIERv
d25sb2FkLmNwcCAqLywKIAkJCQk1QzE0MjZGNDFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWQu
aCAqLywKIAkJCQk1QzE0MjZGNzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRJRC5oICovLApA
QCAtNzYxMiw2ICs3NjE4LDcgQEAKIAkJCQkyOTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1
RTc3MkMxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQTk3NjExODBFMDMxRDAwMzlBMTQ5IC8qIERhdGFi
YXNlUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JGQUM0MjFEOTYxMzdD
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdE
RDVCRjE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMkE5NzZBMTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMkYxRTE4MEY3OTE3MDA5NjFCQjcg
LyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtOTE0OSw2ICs5MTU2LDcgQEAKIAkJCQkwRjBDMzY1RTE4QzExMEE1MDBGNjA3RDcgLyog
TGF5ZXJSZXByZXNlbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOTJEQzEzMTJGOEJB
QjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RkRFNjQ1MTk1MTBCNTUwMEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NUQxOTU0RThENTAwQzQ4RkZBIC8qIExl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDEwODc2MDFE
MkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gaW4gU291
cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289739</attachid>
            <date>2016-09-23 22:48:21 -0700</date>
            <delta_ts>2016-09-23 23:14:42 -0700</delta_ts>
            <desc>WIP Patch (with tests)</desc>
            <filename>156099_a_download_blob_wip.patch</filename>
            <type>text/plain</type>
            <size>30168</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDAyODM1NTYuLmNjYTk5OTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtODk0LDkgKzg5NCw2IEBAIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVy
bmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItCiBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1u
b3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0aW9uLXByb3BlcnR5Lmh0bWwgWyBG
YWlsdXJlIF0KIAotIyA8YSBkb3dubG9hZD4gZG9lcyBub3Qgc3VwcG9ydCBCbG9icwotd2Via2l0
Lm9yZy9iLzE1NjA5OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1i
bG9iLmh0bWwgWyBGYWlsdXJlIF0KLQogIyA8YSBkb3dubG9hZD4gZG9lcyBub3QgaG9ub3IgY3Jv
c3Mtb3JpZ2luIHJlc3RyaWN0aW9ucwogd2Via2l0Lm9yZy9iLzE1NjEwMCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2FuY2hvci1kb3dubG9hZC1ibG9jay1jcm9zc29yaWdpbi5odG1sIFsgRmFpbHVyZSBd
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGVlY2JjOTIuLjQ0
YTA4ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiIgogRG93bmxv
YWQgc3RhcnRlZC4KLURvd25sb2FkIGZhaWxlZC4KLUZhaWxlZDogTlNVUkxFcnJvckRvbWFpbiwg
Y29kZT0tMTAwMiwgZGVzY3JpcHRpb249dW5zdXBwb3J0ZWQgVVJMCitEb3dubG9hZCBjb21wbGV0
ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3Rl
ZC50eHQKaW5kZXggZWVjYmM5Mi4uNDRhMDhlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9k
b3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAorRG93bmxvYWRpbmcgVVJM
IHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICIiCiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWQg
ZmFpbGVkLgotRmFpbGVkOiBOU1VSTEVycm9yRG9tYWluLCBjb2RlPS0xMDAyLCBkZXNjcmlwdGlv
bj11bnN1cHBvcnRlZCBVUkwKK0Rvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxv
dy1ibG9iLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5j
aG9yLWRvd25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CmluZGV4IDdmMjQxZTQuLjY4NmMx
MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRv
d25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsMTEgQEAKIERvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiZm9v
LnBkZiIKK0Rvd25sb2FkIHN0YXJ0ZWQuCitEb3dubG9hZCBjb21wbGV0ZWQuCiBUZXN0cyB0aGF0
IGEgc3VnZ2VzdGVkIGZpbGVuYW1lIG9uIGEgZG93bmxvYWQgYXR0cmlidXRlIGlzIGFsbG93ZWQg
aWYgdGhlIGxpbmsgaXMgYSBibG9iIFVSTC4KIAogVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBhdCB0
aGUgdG9wIHNob3VsZCBiZSBmb28ucGRmLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmJlMWJjYS4uNmZmYWE1
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC03NDAsMTAgKzc0MCw2IEBAIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xlYXItd2F0Y2guaHRtbAogZmFzdC9kb20v
R2VvbG9jYXRpb24vcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5odG1sCiBmYXN0L2Rv
bS9HZW9sb2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmh0bWwKIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3JlcXVlc3RRdWV1aW5nRm9ySGlkZGVuUGFnZS5odG1sCi1mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdW5zZXQuaHRtbAotZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwKLWZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC5odG1sCi1mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cHJlZmV0Y2guaHRtbAogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxp
dmVyeS5odG1sCiBmYXN0L2RvbS9Ob2RlL211dGF0aW9uLWJsdXIuaHRtbApAQCAtMTgwNSw3ICsx
ODAxLDYgQEAgd2Via2l0Lm9yZy9iLzE1NTk0NyBbIERlYnVnIF0gZmFzdC9sb2FkZXIvc2Nyb2xs
LXBvc2l0aW9uLXJlc3RvcmVkLW9uLWJhY2suaHRtbAogd2Via2l0Lm9yZy9iLzE1NTk0OCB0cmFu
c2l0aW9ucy9jYW5jZWwtdHJhbnNpdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8YSBk
b3dubG9hZD4gaXMgbm90IHN1cHBvcnRlZCB3aXRoIE5FVFdPUktfU0VTU0lPTiB5ZXQuCi13ZWJr
aXQub3JnL2IvMTU2MDY3IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93
LWJsb2IuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2NyBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1kYXRhLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xNTYwNjcgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctc2FtZW9y
aWdpbi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY3IGh0dHAvdGVzdHMvc2VjdXJp
dHkvYW5jaG9yLWRvd25sb2FkLWJsb2NrLWNyb3Nzb3JpZ2luLmh0bWwgWyBTa2lwIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmQzNWJmYi4uN2M2NDNh
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzODEs
MTEgKzEzODEsOCBAQCB3ZWJraXQub3JnL2IvMTU4ODg5IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXNo
b3ctb24ta2Itb3ItYXgtZXZlbnQuaHRtbCBbIFBhc3MgRmFpbAogWyBTaWVycmErIF0gaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1m
cmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjU1MzYyNjY+
IFtNYWNdW2lPU11bTkVUV09SS19TRVNTSU9OXSBVbmFibGUgdG8gZG93bmxvYWQgQkxPQiBVUkxz
ICgxNTYxODApCi1bIFNpZXJyYSsgXSBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZG93bmxvYWQuaHRtbCBbIFNraXAgXQotWyBTaWVycmErIF0gZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwgWyBTa2lwIF0KIFsgU2llcnJhKyBdIGh0
dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWRhdGEuaHRtbCBbIFNraXAg
XQogWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ct
c2FtZW9yaWdpbi5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5
L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3By
b2JsZW0vMjU3ODAwMzU+IENTUCBkb2VzIG5vdCBpZ25vcmUgcGF0aHMgZm9yIG1lZGlhIHJlZGly
ZWN0cwogWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZDIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAppbmRleCBkNWQ3OTQ2Li40N2QyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMjEzLDYg
KzIxMyw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKIAorICAgIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9CbG9iRG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNjBjMTU4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvYkRv
d25sb2FkQ2xpZW50LmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
RG93bmxvYWQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK0Jsb2JEb3dubG9hZENsaWVudDo6QmxvYkRvd25sb2FkQ2xp
ZW50KERvd25sb2FkJiBkb3dubG9hZCkKKyAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCit7Cit9
CisKK3ZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCit7CisgICAgbV9kb3dubG9hZC5k
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOworCisgICAgYm9vbCBhbGxvd092
ZXJ3cml0ZSA9IGZhbHNlOworICAgIG1fZGVzdGluYXRpb25QYXRoID0gbV9kb3dubG9hZC5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShtX2Rvd25sb2FkLnN1Z2dlc3RlZE5h
bWUoKSwgYWxsb3dPdmVyd3JpdGUpOworICAgIGlmIChmaWxlRXhpc3RzKG1fZGVzdGluYXRpb25Q
YXRoKSkgeworICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CisgICAgICAgICAgICBtX2Rl
c3RpbmF0aW9uUGF0aCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogVXNl
IGEgYmV0dGVyIGVycm9yLgorICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBSZXNvdXJjZUVy
cm9yKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZUZp
bGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgIH0KKworICAgIG1fZGVzdGluYXRpb25GaWxlID0g
b3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgbV9kb3dubG9h
ZC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgQmxv
YkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCkKK3sKKyAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBtX2Rvd25sb2Fk
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCit7CisgICAg
Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgp
OworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IGRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworCisgICAgbV9kb3dubG9hZC5kaWRGYWls
KGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdkZDJiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JE
b3dubG9hZENsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBEb3dubG9hZDsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1l
dGVyczsKKworY2xhc3MgQmxvYkRvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBCbG9iRG93bmxv
YWRDbGllbnQoRG93bmxvYWQmKTsKKworICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CisgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIERv
d25sb2FkJiBtX2Rvd25sb2FkOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKKyAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCBkZjNmMzY0
Li4yNTE2YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEb3dubG9h
ZC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiQmxv
YkRvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTQ0LDE4ICs0
NSwyMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYm
IFBMQVRGT1JNKENPQ09BKQogRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzayogZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0jZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25s
b2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQot
I2VuZGlmCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAs
IG1fcmVxdWVzdChyZXF1ZXN0KQotI2VuZGlmCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX2Rvd25sb2FkKGRvd25sb2FkKQotICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCit7
CisgICAgQVNTRVJUKG1fZG93bmxvYWRJRC5kb3dubG9hZElEKCkpOworCisgICAgbV9kb3dubG9h
ZE1hbmFnZXIuZGlkQ3JlYXRlRG93bmxvYWQoKTsKK30KICNlbmRpZgorCitEb3dubG9hZDo6RG93
bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZE5hbWUpCisgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCisgICAg
LCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAg
ICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxv
YWRJRC5kb3dubG9hZElEKCkpOwpAQCAtNzAsMTggKzc0LDMzIEBAIERvd25sb2FkOjp+RG93bmxv
YWQoKQogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOwogfQogCi0j
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCit2b2lkIERvd25sb2FkOjpzdGFydCgpCit7CisgICAg
aWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7CisgICAgICAgIG1fZG93bmxv
YWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEb3dubG9hZENsaWVudD4oKnRoaXMpOwor
ICAgICAgICBtX3Jlc291cmNlSGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShudWxscHRy
LCBtX3JlcXVlc3QsIG1fZG93bmxvYWRDbGllbnQuZ2V0KCksIGZhbHNlLCBmYWxzZSk7CisgICAg
ICAgIGRpZFN0YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UKKyAgICBzdGFydE5l
dHdvcmtMb2FkKCk7CisjZW5kaWYKK30KKwogdm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQogewog
ICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KG1fcmVxdWVzdCwgbV9z
dWdnZXN0ZWROYW1lKSk7CiB9Ci0jZW5kaWYKIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQog
dm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBt
X2Rvd25sb2FkTWFuYWdlci5kb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KTsKIH0KKyNlbmRpZgogCiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CkBAIC04OSw3ICsxMDgsNiBAQCB2b2lkIERv
d25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UpKTsKIH0KLSNlbmRpZgogCiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBsZW5ndGgpCiB7CkBAIC0xMTAsNyArMTI4LDYgQEAgYm9vbCBEb3dubG9hZDo6
c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiBTdHJp
bmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKQogewogICAgIFN0cmluZyBk
ZXN0aW5hdGlvbjsKQEAgLTEyNCw3ICsxNDEsNiBAQCBTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsCiAK
ICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlk
Q3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCAxNzBjZmI4
Li42ZjNhNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaApAQCAtMjksOCArMjksMTEgQEAKICNpbmNsdWRlICJEb3dubG9hZElE
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTQ0LDEyICs0Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5k
aWYKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jZW5kaWYKLQogI2lmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZW5kaWYK
QEAgLTc3LDMyICs3NCwzMiBAQCBjbGFzcyBEb3dubG9hZCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgewogcHVibGljOgogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENP
Q09BKQogICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzayosIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSNlbHNlCi0gICAgRG93bmxv
YWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjZW5kaWYK
KyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9
KTsKKwogICAgIH5Eb3dubG9hZCgpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
dm9pZCBzdGFydCgpOworCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzdGFy
dFdpdGhIYW5kbGUoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAjZW5kaWYKICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIERvd25sb2FkSUQg
ZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VnZ2VzdGVkTmFtZTsgfQog
CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24o
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hF
eHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CiAjZWxzZQotICAgIHZvaWQg
ZGlkU3RhcnQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICNlbmRpZgor
ICAgIHZvaWQgZGlkU3RhcnQoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBsZW5ndGgpOwogICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
U3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlz
aCgpOwogICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKQEAgLTExNCwxNSArMTExLDE3IEBA
IHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICB2b2lkIHN0YXJ0TmV0d29y
a0xvYWQoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAg
IGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBEb3dubG9hZE1h
bmFnZXImIG1fZG93bmxvYWRNYW5hZ2VyOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwot
I2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRi
b3hFeHRlbnNpb247CiAKQEAgLTEzOCwxMCArMTM3LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAg
IFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKLSNlbmRp
ZgogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRGF0
YSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAxNTk0ZWY0Li4yNmUz
N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDcsMjEgKzQ3LDIzIEBAIERvd25sb2Fk
TWFuYWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCYgY2xpZW50KQogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0g
ICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
c0Jsb2IoKSkgeworICAgICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBpZiAoIW5ldHdvcmtTZXNzaW9u
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAg
ICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIHBhcmFtZXRlcnMuY2xp
ZW50Q3JlZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVu
dEZvckNyZWRlbnRpYWxzOworICAgICAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2Fk
SUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24pKTsKICAgICAgICAgcmV0dXJuOwotICAgIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwotICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgcGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7Ci0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92ZShwYXJh
bWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uKSk7Ci0jZWxzZQorICAgIH0KKyNl
bmRpZgogICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhp
cywgZG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkTmFtZSk7CiAgICAgZG93bmxvYWQtPnN0
YXJ0KCk7CiAKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
ICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2Vu
ZGlmCiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KaW5k
ZXggN2FiMGJjZC4uOTRmODg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCkBAIC0xMjIsNyArMTIy
LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50
JiBjbGllbnQsIERvd25sb2FkJiBkb3dubG9hZCkKICAgICB9OwogfQogCi12b2lkIERvd25sb2Fk
OjpzdGFydCgpCit2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggYzAwMDQ5YS4uZTVhYjUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBEb3dubG9hZDo6c3RhcnQo
KQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX25z
VVJMRG93bmxvYWQpOwogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRT
b3VwLmNwcAppbmRleCA1NmJiZDAwLi44NmVmYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2FsbG93T3ZlcndyaXRl
OwogfTsKIAotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3
b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQ2xpZW50KTsKICAgICBBU1NFUlQo
IW1fcmVzb3VyY2VIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmluaXRpb25zLmgKaW5kZXggMjNmMzNkZS4uOGM3NmJlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCkBAIC0yMjcs
NyArMjI3LDcgQEAKICAgICBtYWNybyhTaGFkb3dET01FbmFibGVkLCBzaGFkb3dET01FbmFibGVk
LCBCb29sLCBib29sLCB0cnVlLCAiU2hhZG93IERPTSIsICJIVE1MIFNoYWRvdyBET00gcHJvdG90
eXBlIikgXAogICAgIG1hY3JvKERPTUl0ZXJhdG9yRW5hYmxlZCwgZG9tSXRlcmF0b3JFbmFibGVk
LCBCb29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKICAgICBtYWNybyhGZXRjaEFQSUVuYWJsZWQs
IGZldGNoQVBJRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCi0gICAgbWFjcm8o
RG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkLCBkb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlLCAiIiwgIiIpIFwKKyAgICBtYWNybyhEb3dubG9hZEF0dHJpYnV0ZUVuYWJs
ZWQsIGRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBc
CiAgICAgbWFjcm8oU2VsZWN0aW9uUGFpbnRpbmdXaXRob3V0U2VsZWN0aW9uR2Fwc0VuYWJsZWQs
IHNlbGVjdGlvblBhaW50aW5nV2l0aG91dFNlbGVjdGlvbkdhcHNFbmFibGVkLCBCb29sLCBib29s
LCBERUZBVUxUX1NFTEVDVElPTl9QQUlOVElOR19XSVRIT1VUX1NFTEVDVElPTl9HQVBTX0VOQUJM
RUQsICIiLCAiIikgXAogICAgIG1hY3JvKEFwcGxlUGF5RW5hYmxlZCwgYXBwbGVQYXlFbmFibGVk
LCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oQXBwbGVQYXlDYXBhYmls
aXR5RGlzY2xvc3VyZUFsbG93ZWQsIGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2Vk
LCBCb29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDEyODZkZTAuLjI1NDk1
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcApAQCAtMTg5LDcgKzE4OSw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25s
CiAgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKSwgMCk7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCYgYWxsb3dP
dmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKIHsKICAgICBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOwpAQCAtMjA2LDcgKzIwNyw2IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtCiAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogfQotI2VuZGlm
CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCAxNWZlNTQyYy4uMjMwMjZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTgyLDkgKzgy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBs
ZW5ndGgpOwogICAgIHZvaWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCYgcmVzdWx0KTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wmIGFsbG93T3Zlcndy
aXRlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwot
I2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
OwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI3ZTM5M2EuLmNhYjQ5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTMyLDkgKzMyLDcgQEAgbWVzc2FnZXMgLT4gRG93bmxvYWRQcm94
eSB7CiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UpCiAgICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQogICAgIFNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0
KQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFN0cmluZyBmaWxlbmFtZSkgLT4gKFN0cmluZyBkZXN0aW5hdGlvbiwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLSNlbmRpZgogICAgIERpZENyZWF0ZURlc3RpbmF0aW9uKFN0
cmluZyBwYXRoKQogICAgIERpZEZpbmlzaCgpCiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZDA4NGE2
Li42NzI1NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjEzLDYgKzEyMTMsOCBAQAogCQk4Mzk5MDIwMjFCRTlBMDJCMDAw
RjM2NTMgLyogTmV0d29ya0xvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNw
cCAqLzsgfTsKIAkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk5MDFGRTFCRTlB
MDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCAqLzsgfTsKIAkJODNCRENDQjkxQUM1RkRCNjAw
M0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwICovOyB9OworCQk4M0JGQUM0MjFEOTYxMzdDMDA0MzM0
OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2Fk
Q2xpZW50LmggKi87IH07CisJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxv
YWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNCRkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi87
IH07CiAJCTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNENDU0RDYxQkU5
RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggKi87IH07CiAJCTg0NDc3ODUzMTc2
RkNDMDgwMENEQzdCQiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NDc3ODUxMTc2
RkNBQzEwMENEQzdCQiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCAq
LzsgfTsKIAkJODY4MTYwRDAxODc2NDU1NzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njgx
NjBDRjE4NzY0NTM3MDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSAqLzsgfTsK
QEAgLTMzMDgsNiArMzMxMCw4IEBACiAJCTgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrTG9hZC5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtMb2FkLmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkZBQzQwMUQ5
NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQmxvYkRvd25sb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYkRvd25sb2FkQ2xpZW50
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0Q0NTRENjFCRTlEM0M0MDA2Qzkz
QkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTmV0d29ya0xvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0NDc3ODUxMTc2RkNBQzEw
MENEQzdCQiAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVk
aWFUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MENEMTg3NjNENEIw
MDIxRTc5RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRv
d1NlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3Mzgs
NiArNTc0Miw4IEBACiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNvY29hICovLAog
CQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8sCiAJCQkJNUMxNDI3MEIxQzIz
Rjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKKwkJCQk4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyog
QmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCisJCQkJODNCRkFDNDExRDk2MTM2MDAwNDMzNDkwIC8q
IEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi8sCiAJCQkJNUMxNDI2RjMxQzIzRjg0MzAwRDQxMTgz
IC8qIERvd25sb2FkLmNwcCAqLywKIAkJCQk1QzE0MjZGNDFDMjNGODQzMDBENDExODMgLyogRG93
bmxvYWQuaCAqLywKIAkJCQk1QzE0MjZGNzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRJRC5o
ICovLApAQCAtNzYxMiw2ICs3NjE4LDcgQEAKIAkJCQkyOTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE1RTc3MkMxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQTk3NjExODBFMDMxRDAwMzlBMTQ5IC8q
IERhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JGQUM0MjFE
OTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxMkE5NzZBMTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nl
c3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMkYxRTE4MEY3OTE3MDA5
NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTE0OSw2ICs5MTU2LDcgQEAKIAkJCQkwRjBDMzY1RTE4QzExMEE1MDBGNjA3
RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOTJEQzEz
MTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRkRFNjQ1MTk1MTBCNTUwMEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxv
YWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NUQxOTU0RThENTAwQzQ4RkZB
IC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDEw
ODc2MDFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0g
aW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289740</attachid>
            <date>2016-09-23 23:14:42 -0700</date>
            <delta_ts>2016-09-24 09:25:22 -0700</delta_ts>
            <desc>WIP Patch (with more tests)</desc>
            <filename>156099_a_download_blob_wip.patch</filename>
            <type>text/plain</type>
            <size>34880</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDAyODM1NTYuLmNjYTk5OTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtODk0LDkgKzg5NCw2IEBAIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVy
bmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItCiBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1u
b3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0aW9uLXByb3BlcnR5Lmh0bWwgWyBG
YWlsdXJlIF0KIAotIyA8YSBkb3dubG9hZD4gZG9lcyBub3Qgc3VwcG9ydCBCbG9icwotd2Via2l0
Lm9yZy9iLzE1NjA5OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1i
bG9iLmh0bWwgWyBGYWlsdXJlIF0KLQogIyA8YSBkb3dubG9hZD4gZG9lcyBub3QgaG9ub3IgY3Jv
c3Mtb3JpZ2luIHJlc3RyaWN0aW9ucwogd2Via2l0Lm9yZy9iLzE1NjEwMCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2FuY2hvci1kb3dubG9hZC1ibG9jay1jcm9zc29yaWdpbi5odG1sIFsgRmFpbHVyZSBd
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGVlY2JjOTIuLjQ0
YTA4ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiIgogRG93bmxv
YWQgc3RhcnRlZC4KLURvd25sb2FkIGZhaWxlZC4KLUZhaWxlZDogTlNVUkxFcnJvckRvbWFpbiwg
Y29kZT0tMTAwMiwgZGVzY3JpcHRpb249dW5zdXBwb3J0ZWQgVVJMCitEb3dubG9hZCBjb21wbGV0
ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3lu
dGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lYWQ4MjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgc3ludGhldGljIGNsaWNrcyBvbiBhbiBhbmNo
b3Igd2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUgaWdub3JlZC4KKworVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG8gbm90IHNlZSBhbnkgJ0Rvd25sb2FkIHN0YXJ0ZWQnIG1lc3NhZ2UgYWJv
dmUuCisKK0Jsb2IgVVJMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNrLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGlj
LWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1ZGJkYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2suaHRtbApAQCAtMCwwICsxLDMwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNj
cmlwdCc+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3QgdGhhdCBzeW50aGV0aWMgY2xpY2tzIG9uIGFuIGFuY2hvciB3aXRo
IGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBpZ25vcmVkLjwvcD4KKzxwPiBUaGlzIHRlc3QgcGFz
c2VzIGlmIHlvdSBkbyBub3Qgc2VlIGFueSAnRG93bmxvYWQgc3RhcnRlZCcgbWVzc2FnZSBhYm92
ZS48L3A+Cis8YSBpZD0iYmxvYi11cmwiIGRvd25sb2FkPkJsb2IgVVJMPC9hPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBzdHJpbmcgPSAidGVzdCI7CisgICAgdmFy
IGJsb2IgPSBuZXcgQmxvYihbc3RyaW5nXSwge3R5cGU6ICJ0ZXh0L2h0bWwifSk7CisgICAgdmFy
IGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmxvYi11cmwiKTsKKyAgICBsaW5rLmhy
ZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKKyAgICBsaW5rLmNsaWNrKCk7
CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgfSwgMTAwKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQK
aW5kZXggZWVjYmM5Mi4uNDRhMDhlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9h
ZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAorRG93bmxvYWRpbmcgVVJMIHdpdGgg
c3VnZ2VzdGVkIGZpbGVuYW1lICIiCiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWQgZmFpbGVk
LgotRmFpbGVkOiBOU1VSTEVycm9yRG9tYWluLCBjb2RlPS0xMDAyLCBkZXNjcmlwdGlvbj11bnN1
cHBvcnRlZCBVUkwKK0Rvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9i
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRv
d25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CmluZGV4IDdmMjQxZTQuLjY4NmMxMWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2Fk
LWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
MTEgQEAKIERvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiZm9vLnBkZiIK
K0Rvd25sb2FkIHN0YXJ0ZWQuCitEb3dubG9hZCBjb21wbGV0ZWQuCiBUZXN0cyB0aGF0IGEgc3Vn
Z2VzdGVkIGZpbGVuYW1lIG9uIGEgZG93bmxvYWQgYXR0cmlidXRlIGlzIGFsbG93ZWQgaWYgdGhl
IGxpbmsgaXMgYSBibG9iIFVSTC4KIAogVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBhdCB0aGUgdG9w
IHNob3VsZCBiZSBmb28ucGRmLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTJmMDIyYy4uNjljYzNmNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMzEyLDcgKzEzMTIsOCBAQCBpbXBvcnRlZC9ibGluay9zdG9yYWdl
L2luZGV4ZWRkYi9lbXB0eS1ibG9iLWZpbGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMTU1NDk1IGNvbXBvc2l0aW5nL3Zpc2libGUtcmVjdC9hbmltYXRlZC1mcm9tLW5vbmUuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiAKLSMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0IGluIFdL
MSB5ZXQuCisjIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydGVkIGluIFdLMSB5ZXQuCit3ZWJr
aXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC1zeW50aGV0aWMtY2xpY2suaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRw
L3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQt
YWxsb3ctZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY5IGh0dHAvdGVzdHMv
c2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmlnaW4uaHRtbCBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNmJlMWJjYS4uNmZmYWE1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03
NDAsMTAgKzc0MCw2IEBAIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFs
cmVhZHktY2xlYXItd2F0Y2guaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcGVybWlzc2lvbi1k
ZW5pZWQtYWxyZWFkeS1lcnJvci5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wZXJtaXNzaW9u
LWRlbmllZC1zdG9wcy13YXRjaGVzLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlcXVlc3RR
dWV1aW5nRm9ySGlkZGVuUGFnZS5odG1sCi1mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3ItZG93bmxvYWQtdW5zZXQuaHRtbAotZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWRvd25sb2FkLmh0bWwKLWZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25s
b2FkLXNldC5odG1sCi1mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9h
ZC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAogZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCiBmYXN0L2RvbS9Ob2Rl
L211dGF0aW9uLWJsdXIuaHRtbApAQCAtMTgwNSw3ICsxODAxLDYgQEAgd2Via2l0Lm9yZy9iLzE1
NTk0NyBbIERlYnVnIF0gZmFzdC9sb2FkZXIvc2Nyb2xsLXBvc2l0aW9uLXJlc3RvcmVkLW9uLWJh
Y2suaHRtbAogd2Via2l0Lm9yZy9iLzE1NTk0OCB0cmFuc2l0aW9ucy9jYW5jZWwtdHJhbnNpdGlv
bi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8YSBkb3dubG9hZD4gaXMgbm90IHN1cHBvcnRl
ZCB3aXRoIE5FVFdPUktfU0VTU0lPTiB5ZXQuCi13ZWJraXQub3JnL2IvMTU2MDY3IGh0dHAvdGVz
dHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2IuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzE1NjA2NyBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxv
dy1kYXRhLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjcgaHR0cC90ZXN0cy9zZWN1
cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctc2FtZW9yaWdpbi5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvMTU2MDY3IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWJsb2Nr
LWNyb3Nzb3JpZ2luLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMDI3OTgxLi5iOTgzMjA1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcsOSArMTg3LDEw
IEBAIGZhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1hbmltYXRvci1vdmVybGF5LXNjcm9sbGJhcnMtaG92
ZXJlZC5odG1sIFsgU2tpcCBdCiAjIFRoaXMgaGl0LXRlc3QgdGVzdCBkb2Vzbid0IHdvcmsgb24g
RFJUCiB3ZWJraXQub3JnL2IvMTU2MDg0IGFjY2Vzc2liaWxpdHkvbWFjL3ZpZGVvLXRhZy1oaXQt
dGVzdC5odG1sIFsgU2tpcCBdCiAKLSMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0IGluIFdL
MSB5ZXQuCisjIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydGVkIGluIFdLMSB5ZXQuCiB3ZWJr
aXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25s
b2FkLXNldC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1z
eW50aGV0aWMtY2xpY2suaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRwL3Rl
c3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxs
b3ctZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY5IGh0dHAvdGVzdHMvc2Vj
dXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmlnaW4uaHRtbCBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiZDM1YmZiLi43YzY0
M2FkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM4
MSwxMSArMTM4MSw4IEBAIHdlYmtpdC5vcmcvYi8xNTg4ODkgbWVkaWEvdmlkZW8tY29udHJvbHMt
c2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sIFsgUGFzcyBGYWlsCiBbIFNpZXJyYSsgXSBodHRw
L3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWlu
LWZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNTUzNjI2
Nj4gW01hY11baU9TXVtORVRXT1JLX1NFU1NJT05dIFVuYWJsZSB0byBkb3dubG9hZCBCTE9CIFVS
THMgKDE1NjE4MCkKLVsgU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1kb3dubG9hZC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSsgXSBmYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQuaHRtbCBbIFNraXAgXQogWyBTaWVycmErIF0g
aHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctZGF0YS5odG1sIFsgU2tp
cCBdCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxv
dy1zYW1lb3JpZ2luLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJp
dHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2IuaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8v
cHJvYmxlbS8yNTc4MDAzNT4gQ1NQIGRvZXMgbm90IGlnbm9yZSBwYXRocyBmb3IgbWVkaWEgcmVk
aXJlY3RzCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGQ2MTYwZGQuLmI5YjVhYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zNjcsOCArMzY3LDE0
IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKIAog
ICAgIGF1dG8gZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbTsKICNpZiBFTkFCTEUoRE9XTkxP
QURfQVRUUklCVVRFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCgpKSB7
CiAgICAgICAgIGRvd25sb2FkQXR0cmlidXRlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihkb3dubG9hZEF0dHIpOworICAgICAgICAvLyBJZiB0aGUgYSBlbGVtZW50IGhhcyBhIGRv
d25sb2FkIGF0dHJpYnV0ZSBhbmQgdGhlIGFsZ29yaXRobSBpcyBub3QgdHJpZ2dlcmVkIGJ5IHVz
ZXIgYWN0aXZhdGlvbgorICAgICAgICAvLyB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtYS1lbGVtZW50OnRyaWdnZXJl
ZC1ieS11c2VyLWFjdGl2YXRpb24KKyAgICAgICAgaWYgKCFkb3dubG9hZEF0dHJpYnV0ZS5pc051
bGwoKSAmJiAhZXZlbnQuaXNUcnVzdGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQog
I2VuZGlmCiAKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoa3VybCwgdGFyZ2V0KCks
ICZldmVudCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgaGFzUmVs
KFJlbGF0aW9uTm9SZWZlcnJlcikgPyBOZXZlclNlbmRSZWZlcnJlciA6IE1heWJlU2VuZFJlZmVy
cmVyLCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgp
LCBkb3dubG9hZEF0dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ1ZDc5NDYuLjQ3
ZDI5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0yMTMsNiArMjEzLDcgQEAgc2V0KFdlYktp
dDJfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVu
dC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCiAgICAgTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGMxNThi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9iRG93bmxvYWRDbGllbnQuaCIKKwor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworQmxvYkRvd25sb2FkQ2xpZW50OjpCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmIGRvd25s
b2FkKQorICAgIDogbV9kb3dubG9hZChkb3dubG9hZCkKK3sKK30KKwordm9pZCBCbG9iRG93bmxv
YWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBtX2Rvd25sb2FkLmRpZFJlY2VpdmVSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSk7CisKKyAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7Cisg
ICAgbV9kZXN0aW5hdGlvblBhdGggPSBtX2Rvd25sb2FkLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKG1fZG93bmxvYWQuc3VnZ2VzdGVkTmFtZSgpLCBhbGxvd092ZXJ3cml0
ZSk7CisgICAgaWYgKGZpbGVFeGlzdHMobV9kZXN0aW5hdGlvblBhdGgpKSB7CisgICAgICAgIGlm
ICghYWxsb3dPdmVyd3JpdGUpIHsKKyAgICAgICAgICAgIG1fZGVzdGluYXRpb25QYXRoID0gZW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgYSBiZXR0ZXIgZXJyb3IuCisg
ICAgICAgICAgICBkaWRGYWlsKG51bGxwdHIsIFJlc291cmNlRXJyb3IoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0
aCk7CisgICAgfQorCisgICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0
aW9uUGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBtX2Rvd25sb2FkLmRpZENyZWF0ZURlc3RpbmF0
aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50KQoreworICAgIHdyaXRlVG9GaWxlKG1fZGVzdGluYXRpb25GaWxlLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZURhdGEoYnVm
ZmVyLT5zaXplKCkpOworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKK3sKKyAgICBjbG9zZUZpbGUobV9kZXN0aW5h
dGlvbkZpbGUpOworICAgIG1fZG93bmxvYWQuZGlkRmluaXNoKCk7Cit9CisKK3ZvaWQgQmxvYkRv
d25sb2FkQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCit7CisgICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBpZiAo
IW1fZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgZGVsZXRlRmlsZShtX2Rlc3Rp
bmF0aW9uUGF0aCk7CisKKyAgICBtX2Rvd25sb2FkLmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJl
ZmVyZW5jZSgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiN2RkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIERvd25sb2FkOworY2xhc3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzOworCitjbGFzcyBCbG9i
RG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGll
bnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IEJsb2JEb3dubG9hZENsaWVudChEb3dubG9hZCYp
OworCisgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgRG93bmxvYWQmIG1fZG93bmxvYWQ7
CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25QYXRoOworICAgIFdlYkNvcmU6OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX2Rlc3RpbmF0aW9uRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRmM2YzNjQuLjI1MTZhM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJCbG9iRG93bmxvYWRDbGllbnQuaCIK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgpAQCAtNDQsMTggKzQ1LDIxIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCiBE
b3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiBkb3dubG9hZCwgY29u
c3QgV2ViQ29yZTo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSkKLSNlbHNlCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9h
ZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0jZW5kaWYKICAgICA6IG1fZG93
bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9h
ZElEKQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
Ci0jZW5kaWYKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICAsIG1fZG93bmxvYWQoZG93bmxvYWQpCi0gICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisg
ICAgLCBtX3N1Z2dlc3RlZE5hbWUoc3VnZ2VzdGVkTmFtZSkKK3sKKyAgICBBU1NFUlQobV9kb3du
bG9hZElELmRvd25sb2FkSUQoKSk7CisKKyAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVE
b3dubG9hZCgpOworfQogI2VuZGlmCisKK0Rvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFn
ZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKKyAgICA6IG1f
ZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKKyAgICAsIG1fZG93bmxvYWRJRChkb3du
bG9hZElEKQorICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLCBtX3N1Z2dlc3RlZE5hbWUo
c3VnZ2VzdGVkTmFtZSkKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZElELmRvd25sb2FkSUQoKSk7
CkBAIC03MCwxOCArNzQsMzMgQEAgRG93bmxvYWQ6On5Eb3dubG9hZCgpCiAgICAgbV9kb3dubG9h
ZE1hbmFnZXIuZGlkRGVzdHJveURvd25sb2FkKCk7CiB9CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0LnVybCgp
LnByb3RvY29sSXNCbG9iKCkpIHsKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmxvYkRvd25sb2FkQ2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2VI
YW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG51bGxwdHIsIG1fcmVxdWVzdCwgbV9kb3du
bG9hZENsaWVudC5nZXQoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZGlkU3RhcnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZWxzZQorICAgIHN0YXJ0TmV0d29ya0xvYWQoKTsKKyNlbmRp
ZgorfQorCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6
RG93bmxvYWRQcm94eTo6RGlkU3RhcnQobV9yZXF1ZXN0LCBtX3N1Z2dlc3RlZE5hbWUpKTsKIH0K
LSNlbmRpZgogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRv
d25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwogfQorI2VuZGlmCiAKIHZv
aWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKQEAgLTg5LDcgKzEwOCw2IEBAIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIHNlbmQoTWVz
c2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSkpOwogfQot
I2VuZGlmCiAKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkK
IHsKQEAgLTExMCw3ICsxMjgsNiBAQCBib29sIERvd25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIFN0cmluZyBEb3dubG9hZDo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Ym9vbCYgYWxsb3dPdmVyd3JpdGUpCiB7CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uOwpAQCAtMTI0
LDcgKzE0MSw2IEBAIFN0cmluZyBEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwKIAogICAgIHJldHVybiBkZXN0aW5h
dGlvbjsKIH0KLSNlbmRpZgogCiB2b2lkIERvd25sb2FkOjpkaWRDcmVhdGVEZXN0aW5hdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDE3MGNmYjguLjZmM2E2NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBA
IC0yOSw4ICsyOSwxMSBAQAogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQsMTIgKzQ3LDYgQEAg
T0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgotI2lu
Y2x1ZGUgPG1lbW9yeT4KLSNlbmRpZgotCiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgpAQCAtNzcsMzIgKzc0LDMyIEBA
IGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRG93bmxvYWQo
RG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiwg
Y29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSB7IH0pOwotI2Vsc2UKLSAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXIm
LCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKICNlbmRpZgorICAgIERvd25sb2FkKERvd25s
b2FkTWFuYWdlciYsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOworCiAgICAgfkRvd25sb2Fk
KCk7CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHN0YXJ0KCk7CisKKyNp
ZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHN0YXJ0V2l0aEhhbmRsZShXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICNl
bmRpZgogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsK
ICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3Qg
eyByZXR1cm4gbV9kb3dubG9hZElEOyB9CisgICAgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9zdWdnZXN0ZWROYW1lOyB9CiAKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIHZvaWQgc2V0U2FuZGJveEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbik7IH0KICNlbHNlCi0gICAgdm9pZCBkaWRTdGFydCgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlmCisgICAgdm9pZCBkaWRTdGFydCgp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CiAgICAg
Ym9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBTdHJpbmcgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYg
YWxsb3dPdmVyd3JpdGUpOwotI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybURpZEZpbmlzaCgpOwpAQCAtMTE0LDE1ICsxMTEsMTcgQEAgcHJpdmF0ZToKICAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlkZTsKIAorI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorICAgIHZvaWQgc3RhcnROZXR3b3JrTG9hZCgpOworI2VuZGlmCisK
ICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSBjb25zdDsKIAogICAgIERvd25sb2FkTWFuYWdlciYgbV9kb3dubG9hZE1h
bmFnZXI7CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7Ci0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSNlbmRpZgog
CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKIApAQCAt
MTM4LDEwICsxMzcsOCBAQCBwcml2YXRlOgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWlu
UHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlPiBtX3Jlc291cmNlSGFuZGxlOwotI2VuZGlmCiAgICAgU3RyaW5nIG1fc3Vn
Z2VzdGVkTmFtZTsKICAgICBib29sIG1faGFzUmVjZWl2ZWREYXRhIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDE1OTRlZjQuLjI2ZTM3ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCkBAIC00NywyMSArNDcsMjMgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9hZE1h
bmFnZXIoQ2xpZW50JiBjbGllbnQpCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9h
ZChTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9u
VHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIW5ldHdvcmtTZXNz
aW9uKQorICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7CisgICAgICAg
IGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7CisgICAgICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICBw
YXJhbWV0ZXJzLnNlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICAgICAgcGFyYW1ldGVycy5yZXF1
ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7Cisg
ICAgICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3
b3JrU2Vzc2lvbikpOwogICAgICAgICByZXR1cm47Ci0gICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7Ci0gICAg
cGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFsczsKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElE
LCAqbmV0d29ya1Nlc3Npb24pKTsKLSNlbHNlCisgICAgfQorI2VuZGlmCiAgICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1
ZXN0LCBzdWdnZXN0ZWROYW1lKTsKICAgICBkb3dubG9hZC0+c3RhcnQoKTsKIAogICAgIEFTU0VS
VCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7Ci0jZW5kaWYKIH0KIAogI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQppbmRleCA3YWIwYmNkLi45NGY4ODlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9z
L0Rvd25sb2FkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRVcERvd25sb2FkQ2xpZW50KENGVVJMRG93bmxvYWRDbGllbnQmIGNsaWVudCwgRG93bmxvYWQm
IGRvd25sb2FkKQogICAgIH07CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKK3ZvaWQgRG93
bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rv
d25sb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQppbmRleCBjMDAwNDlhLi5lNWFiNTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi12b2lkIERvd25sb2FkOjpzdGFydCgpCit2b2lkIERvd25sb2FkOjpz
dGFydE5ldHdvcmtMb2FkKCkKIHsKICAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7CiAgICAg
QVNTRVJUKCFtX2RlbGVnYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDU2YmJk
MDAuLjg2ZWZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtMjA3LDcgKzIwNyw3
IEBAIHB1YmxpYzoKICAgICBib29sIG1fYWxsb3dPdmVyd3JpdGU7CiB9OwogCi12b2lkIERvd25s
b2FkOjpzdGFydCgpCit2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKIHsKICAgICBB
U1NFUlQoIW1fZG93bmxvYWRDbGllbnQpOwogICAgIEFTU0VSVCghbV9yZXNvdXJjZUhhbmRsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aAppbmRleCAyM2YzM2RlLi44Yzc2YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgIG1h
Y3JvKFNoYWRvd0RPTUVuYWJsZWQsIHNoYWRvd0RPTUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUs
ICJTaGFkb3cgRE9NIiwgIkhUTUwgU2hhZG93IERPTSBwcm90b3R5cGUiKSBcCiAgICAgbWFjcm8o
RE9NSXRlcmF0b3JFbmFibGVkLCBkb21JdGVyYXRvckVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUs
ICIiLCAiIikgXAogICAgIG1hY3JvKEZldGNoQVBJRW5hYmxlZCwgZmV0Y2hBUElFbmFibGVkLCBC
b29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKLSAgICBtYWNybyhEb3dubG9hZEF0dHJpYnV0ZUVu
YWJsZWQsIGRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIiLCAi
IikgXAorICAgIG1hY3JvKERvd25sb2FkQXR0cmlidXRlRW5hYmxlZCwgZG93bmxvYWRBdHRyaWJ1
dGVFbmFibGVkLCBCb29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKICAgICBtYWNybyhTZWxlY3Rp
b25QYWludGluZ1dpdGhvdXRTZWxlY3Rpb25HYXBzRW5hYmxlZCwgc2VsZWN0aW9uUGFpbnRpbmdX
aXRob3V0U2VsZWN0aW9uR2Fwc0VuYWJsZWQsIEJvb2wsIGJvb2wsIERFRkFVTFRfU0VMRUNUSU9O
X1BBSU5USU5HX1dJVEhPVVRfU0VMRUNUSU9OX0dBUFNfRU5BQkxFRCwgIiIsICIiKSBcCiAgICAg
bWFjcm8oQXBwbGVQYXlFbmFibGVkLCBhcHBsZVBheUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNl
LCAiIiwgIiIpIFwKICAgICBtYWNybyhBcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dl
ZCwgYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQsIEJvb2wsIGJvb2wsIHRydWUs
ICIiLCAiIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAKaW5kZXggMTI4NmRlMC4uMjU0OTUwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0x
ODksNyArMTg5LDggQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmwKICAgICBpZiAoTmV0d29ya1By
b2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKQogICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dP
dmVyd3JpdGUpLCAwKTsKIH0KLSNlbHNlCisjZW5kaWYKKwogdm9pZCBEb3dubG9hZFByb3h5Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sJiBhbGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGFsbG93T3Zl
cndyaXRlID0gZmFsc2U7CkBAIC0yMDYsNyArMjA3LDYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVu
YW0KICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0
ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZFBy
b3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4
IDE1ZmU1NDJjLi4yMzAyNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtODIsOSArODIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CiAgICAgdm9pZCBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sJiByZXN1bHQpOwotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
U3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCYgYWxsb3dPdmVyd3JpdGUsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0jZW5kaWYKICAgICB2b2lkIGRp
ZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBkaWRGaW5p
c2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggYjdlMzkzYS4uY2FiNDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzIsOSArMzIsNyBAQCBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKICAgICBEaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCiAgICAgU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlN
RVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpCi0jaWYgIVVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoU3Ry
aW5nIGZpbGVuYW1lKSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRl
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KQotI2VuZGlmCiAgICAgRGlkQ3JlYXRlRGVzdGluYXRpb24oU3RyaW5nIHBhdGgpCiAgICAgRGlk
RmluaXNoKCkKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRkMDg0YTYuLjY3MjU0YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
MTMsNiArMTIxMyw4IEBACiAJCTgzOTkwMjAyMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9h
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk5
MDFGRjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICovOyB9OwogCQk4Mzk5MDIw
MzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5oICovOyB9OwogCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgKi87IH07CisJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJ
ODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JGQUM0MTFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLzsgfTsKIAkJODNENDU0RDcxQkU5
RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Q0NTRENjFCRTlEM0M0MDA2QzkzQkQgLyogTmV0
d29ya0xvYWRDbGllbnQuaCAqLzsgfTsKIAkJODQ0Nzc4NTMxNzZGQ0MwODAwQ0RDN0JCIC8qIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ0Nzc4NTExNzZGQ0FDMTAwQ0RDN0JCIC8qIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oICovOyB9OwogCQk4NjgxNjBEMDE4
NzY0NTU3MDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MENGMTg3NjQ1MzcwMDIxRTc5
RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tICovOyB9OwpAQCAtMzMwOCw2ICszMzEwLDgg
QEAKIAkJODM5OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzk5MDFG
RjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0xvYWQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JEQ0NCODFB
QzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJs
b2JEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9i
RG93bmxvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRkFDNDExRDk2
MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iRG93bmxvYWRDbGllbnQuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrTG9hZENsaWVu
dC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ0Nzc4NTExNzZGQ0FDMTAwQ0RDN0JCIC8qIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4MTYwQ0QxODc2M0Q0QjAwMjFFNzlEIC8qIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93U2VydmVyQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczOCw2ICs1NzQyLDggQEAKIAkJCQk1
QzE0MjcwODFDMjNGODUyMDBENDExODMgLyogY29jb2EgKi8sCiAJCQkJNUMxNDI3MEMxQzIzRjg3
NzAwRDQxMTgzIC8qIGlvcyAqLywKIAkJCQk1QzE0MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFj
ICovLAorCQkJCTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQu
aCAqLywKKwkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50
LmNwcCAqLywKIAkJCQk1QzE0MjZGMzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWQuY3BwICov
LAogCQkJCTVDMTQyNkY0MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5oICovLAogCQkJCTVD
MTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi8sCkBAIC03NjEyLDYgKzc2
MTgsNyBAQAogCQkJCTI5ODRGNTdEMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyQzE4NDAwOEI5
MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTJBOTc2MTE4MEUwMzFEMDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBC
bG9iRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0RENUJGMTgwREE3RDMw
MDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
QTk3NkExODBFMDlCODAwMzlBMTQ5IC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDMyRjFFMTgwRjc5MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTQ5LDYg
KzkxNTYsNyBAQAogCQkJCTBGMEMzNjVFMThDMTEwQTUwMEY2MDdENyAvKiBMYXllclJlcHJlc2Vu
dGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5MkRDMTMxMkY4QkFCOTAwMTdBRjY1IC8q
IExheWVyVHJlZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NDUxOTUxMEI1
NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUZERTY1RDE5NTRFOEQ1MDBDNDhGRkEgLyogTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTA4NzYwMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDEwODc2MzFEMkM2
NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="commit-queue"
          id="312937"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289741</attachid>
            <date>2016-09-24 00:39:07 -0700</date>
            <delta_ts>2016-09-24 09:25:01 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews125 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289745</attachid>
            <date>2016-09-24 09:25:22 -0700</date>
            <delta_ts>2016-09-24 13:42:15 -0700</delta_ts>
            <desc>WIP Patch (with more tests)</desc>
            <filename>156099_a_download_blob_wip.patch</filename>
            <type>text/plain</type>
            <size>33427</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDAyODM1NTYuLmNjYTk5OTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtODk0LDkgKzg5NCw2IEBAIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVy
bmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItCiBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1u
b3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0aW9uLXByb3BlcnR5Lmh0bWwgWyBG
YWlsdXJlIF0KIAotIyA8YSBkb3dubG9hZD4gZG9lcyBub3Qgc3VwcG9ydCBCbG9icwotd2Via2l0
Lm9yZy9iLzE1NjA5OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1i
bG9iLmh0bWwgWyBGYWlsdXJlIF0KLQogIyA8YSBkb3dubG9hZD4gZG9lcyBub3QgaG9ub3IgY3Jv
c3Mtb3JpZ2luIHJlc3RyaWN0aW9ucwogd2Via2l0Lm9yZy9iLzE1NjEwMCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2FuY2hvci1kb3dubG9hZC1ibG9jay1jcm9zc29yaWdpbi5odG1sIFsgRmFpbHVyZSBd
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGVlY2JjOTIuLjQ0
YTA4ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiIgogRG93bmxv
YWQgc3RhcnRlZC4KLURvd25sb2FkIGZhaWxlZC4KLUZhaWxlZDogTlNVUkxFcnJvckRvbWFpbiwg
Y29kZT0tMTAwMiwgZGVzY3JpcHRpb249dW5zdXBwb3J0ZWQgVVJMCitEb3dubG9hZCBjb21wbGV0
ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3lu
dGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lYWQ4MjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgc3ludGhldGljIGNsaWNrcyBvbiBhbiBhbmNo
b3Igd2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUgaWdub3JlZC4KKworVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG8gbm90IHNlZSBhbnkgJ0Rvd25sb2FkIHN0YXJ0ZWQnIG1lc3NhZ2UgYWJv
dmUuCisKK0Jsb2IgVVJMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNrLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGlj
LWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1ZGJkYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2suaHRtbApAQCAtMCwwICsxLDMwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNj
cmlwdCc+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3QgdGhhdCBzeW50aGV0aWMgY2xpY2tzIG9uIGFuIGFuY2hvciB3aXRo
IGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBpZ25vcmVkLjwvcD4KKzxwPiBUaGlzIHRlc3QgcGFz
c2VzIGlmIHlvdSBkbyBub3Qgc2VlIGFueSAnRG93bmxvYWQgc3RhcnRlZCcgbWVzc2FnZSBhYm92
ZS48L3A+Cis8YSBpZD0iYmxvYi11cmwiIGRvd25sb2FkPkJsb2IgVVJMPC9hPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBzdHJpbmcgPSAidGVzdCI7CisgICAgdmFy
IGJsb2IgPSBuZXcgQmxvYihbc3RyaW5nXSwge3R5cGU6ICJ0ZXh0L2h0bWwifSk7CisgICAgdmFy
IGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmxvYi11cmwiKTsKKyAgICBsaW5rLmhy
ZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKKyAgICBsaW5rLmNsaWNrKCk7
CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgfSwgMTAwKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQK
aW5kZXggZWVjYmM5Mi4uNDRhMDhlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9h
ZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAorRG93bmxvYWRpbmcgVVJMIHdpdGgg
c3VnZ2VzdGVkIGZpbGVuYW1lICIiCiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWQgZmFpbGVk
LgotRmFpbGVkOiBOU1VSTEVycm9yRG9tYWluLCBjb2RlPS0xMDAyLCBkZXNjcmlwdGlvbj11bnN1
cHBvcnRlZCBVUkwKK0Rvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9i
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRv
d25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CmluZGV4IDdmMjQxZTQuLjY4NmMxMWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2Fk
LWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
MTEgQEAKIERvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiZm9vLnBkZiIK
K0Rvd25sb2FkIHN0YXJ0ZWQuCitEb3dubG9hZCBjb21wbGV0ZWQuCiBUZXN0cyB0aGF0IGEgc3Vn
Z2VzdGVkIGZpbGVuYW1lIG9uIGEgZG93bmxvYWQgYXR0cmlidXRlIGlzIGFsbG93ZWQgaWYgdGhl
IGxpbmsgaXMgYSBibG9iIFVSTC4KIAogVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBhdCB0aGUgdG9w
IHNob3VsZCBiZSBmb28ucGRmLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTJmMDIyYy4uNjljYzNmNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMzEyLDcgKzEzMTIsOCBAQCBpbXBvcnRlZC9ibGluay9zdG9yYWdl
L2luZGV4ZWRkYi9lbXB0eS1ibG9iLWZpbGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMTU1NDk1IGNvbXBvc2l0aW5nL3Zpc2libGUtcmVjdC9hbmltYXRlZC1mcm9tLW5vbmUuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiAKLSMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0IGluIFdL
MSB5ZXQuCisjIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydGVkIGluIFdLMSB5ZXQuCit3ZWJr
aXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC1zeW50aGV0aWMtY2xpY2suaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRw
L3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQt
YWxsb3ctZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY5IGh0dHAvdGVzdHMv
c2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmlnaW4uaHRtbCBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDMw
Mjc5ODEuLmI5ODMyMDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE4Nyw5ICsxODcsMTAgQEAgZmFzdC9zY3JvbGxpbmcvc2Nyb2xsLWFu
aW1hdG9yLW92ZXJsYXktc2Nyb2xsYmFycy1ob3ZlcmVkLmh0bWwgWyBTa2lwIF0KICMgVGhpcyBo
aXQtdGVzdCB0ZXN0IGRvZXNuJ3Qgd29yayBvbiBEUlQKIHdlYmtpdC5vcmcvYi8xNTYwODQgYWNj
ZXNzaWJpbGl0eS9tYWMvdmlkZW8tdGFnLWhpdC10ZXN0Lmh0bWwgWyBTa2lwIF0KIAotIyA8YSBk
b3dubG9hZD4gaXMgbm90IHN1cHBvcnQgaW4gV0sxIHlldC4KKyMgPGEgZG93bmxvYWQ+IGlzIG5v
dCBzdXBwb3J0ZWQgaW4gV0sxIHlldC4KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25s
b2FkLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTU2MDY5IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2Fk
LWFsbG93LWJsb2IuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1kYXRhLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ct
c2FtZW9yaWdpbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGJkMzViZmIuLjdjNjQzYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzgxLDExICsxMzgxLDggQEAgd2Via2l0Lm9yZy9i
LzE1ODg4OSBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwg
WyBQYXNzIEZhaWwKIFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1NTM2MjY2PiBbTWFjXVtpT1NdW05FVFdPUktfU0VTU0lP
Tl0gVW5hYmxlIHRvIGRvd25sb2FkIEJMT0IgVVJMcyAoMTU2MTgwKQotWyBTaWVycmErIF0gZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBTa2lwIF0KLVsg
U2llcnJhKyBdIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNl
dC5odG1sIFsgU2tpcCBdCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1k
b3dubG9hZC1hbGxvdy1kYXRhLmh0bWwgWyBTa2lwIF0KIFsgU2llcnJhKyBdIGh0dHAvdGVzdHMv
c2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmlnaW4uaHRtbCBbIFNraXAgXQot
WyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctYmxv
Yi5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1NzgwMDM1PiBDU1AgZG9lcyBu
b3QgaWdub3JlIHBhdGhzIGZvciBtZWRpYSByZWRpcmVjdHMKIFsgU2llcnJhKyBdIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQy
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAK
aW5kZXggZDYxNjBkZC4uYjliNWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKQEAgLTM2Nyw4ICszNjcsMTQgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6
aGFuZGxlQ2xpY2soRXZlbnQmIGV2ZW50KQogCiAgICAgYXV0byBkb3dubG9hZEF0dHJpYnV0ZSA9
IG51bGxBdG9tOwogI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG93bmxvYWRBdHRyaWJ1dGVFbmFi
bGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKCkpIHsKICAgICAgICAgZG93bmxvYWRBdHRyaWJ1dGUg
PSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRvd25sb2FkQXR0cik7CisgICAgICAg
IC8vIElmIHRoZSBhIGVsZW1lbnQgaGFzIGEgZG93bmxvYWQgYXR0cmlidXRlIGFuZCB0aGUgYWxn
b3JpdGhtIGlzIG5vdCB0cmlnZ2VyZWQgYnkgdXNlciBhY3RpdmF0aW9uCisgICAgICAgIC8vIHRo
ZW4gYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvI3RoZS1hLWVsZW1lbnQ6dHJpZ2dlcmVkLWJ5LXVzZXItYWN0aXZhdGlvbgorICAgICAg
ICBpZiAoIWRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpICYmICFldmVudC5pc1RydXN0ZWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAogICAgIGZyYW1lLT5sb2FkZXIo
KS51cmxTZWxlY3RlZChrdXJsLCB0YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSA/IE5ldmVy
U2VuZFJlZmVycmVyIDogTWF5YmVTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIGRvd25sb2FkQXR0cmlidXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKaW5kZXggZDVkNzk0Ni4uNDdkMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
QEAgLTIxMyw2ICsyMTMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAgTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYzE1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcApA
QCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJsb2JEb3dubG9hZENsaWVudC5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitCbG9iRG93bmxvYWRDbGllbnQ6OkJsb2JE
b3dubG9hZENsaWVudChEb3dubG9hZCYgZG93bmxvYWQpCisgICAgOiBtX2Rvd25sb2FkKGRvd25s
b2FkKQoreworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQoreworICAgIG1f
ZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKKworICAgIGJv
b2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKKyAgICBtX2Rlc3RpbmF0aW9uUGF0aCA9IG1fZG93
bmxvYWQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9kb3dubG9hZC5z
dWdnZXN0ZWROYW1lKCksIGFsbG93T3ZlcndyaXRlKTsKKyAgICBpZiAoZmlsZUV4aXN0cyhtX2Rl
c3RpbmF0aW9uUGF0aCkpIHsKKyAgICAgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSkgeworICAgICAg
ICAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgLy8g
RklYTUU6IFVzZSBhIGJldHRlciBlcnJvci4KKyAgICAgICAgICAgIGRpZEZhaWwobnVsbHB0ciwg
UmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBkZWxldGVGaWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0
aW9uRmlsZSA9IG9wZW5GaWxlKG1fZGVzdGluYXRpb25QYXRoLCBPcGVuRm9yV3JpdGUpOworICAg
IG1fZG93bmxvYWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOworfQor
Cit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRs
ZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQpCit7CisgICAgd3JpdGVUb0ZpbGUo
bV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
bV9kb3dubG9hZC5kaWRSZWNlaXZlRGF0YShidWZmZXItPnNpemUoKSk7Cit9CisKK3ZvaWQgQmxv
YkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91Ymxl
KQoreworICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgbV9kb3dubG9hZC5k
aWRGaW5pc2goKTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBjbG9zZUZpbGUo
bV9kZXN0aW5hdGlvbkZpbGUpOworICAgIGlmICghbV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgp
KQorICAgICAgICBkZWxldGVGaWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKworICAgIG1fZG93bmxv
YWQuZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKCkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2Fk
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRv
d25sb2FkQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3ZGQy
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWQ7CitjbGFzcyBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnM7CisKK2NsYXNzIEJsb2JEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
QmxvYkRvd25sb2FkQ2xpZW50KERvd25sb2FkJik7CisKKyAgICAvLyBSZXNvdXJjZUhhbmRsZUNs
aWVudAorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZp
bmlzaFRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKworcHJpdmF0
ZToKKyAgICBEb3dubG9hZCYgbV9kb3dubG9hZDsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblBh
dGg7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsg
V2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5k
ZXggZGYzZjM2NC4uMjUxNmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiRG93bmxvYWQuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkJsb2JEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBA
IC00NCwxOCArNDUsMjEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKSAmJiBQTEFURk9STShDT0NPQSkKIERvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1h
bmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOU1VSTFNlc3Np
b25Eb3dubG9hZFRhc2sqIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotI2Vsc2UKLURvd25sb2FkOjpEb3du
bG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkTmFtZSkKLSNlbmRpZgogICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2Vy
KQogICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKLSNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9kb3dubG9hZChkb3dubG9hZCkKLSAg
ICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fc3VnZ2VzdGVkTmFtZShzdWdnZXN0
ZWROYW1lKQoreworICAgIEFTU0VSVChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKKworICAg
IG1fZG93bmxvYWRNYW5hZ2VyLmRpZENyZWF0ZURvd25sb2FkKCk7Cit9CiAjZW5kaWYKKworRG93
bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWROYW1lKQorICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5h
Z2VyKQorICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCisgICAgLCBtX3JlcXVlc3QocmVx
dWVzdCkKICAgICAsIG1fc3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQogewogICAgIEFTU0VS
VChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKQEAgLTcwLDE4ICs3NCwzMyBAQCBEb3dubG9h
ZDo6fkRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWREZXN0cm95RG93bmxvYWQo
KTsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBEb3dubG9hZDo6c3RhcnQo
KQoreworICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgeworICAgICAg
ICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRG93bmxvYWRDbGllbnQ+
KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVh
dGUobnVsbHB0ciwgbV9yZXF1ZXN0LCBtX2Rvd25sb2FkQ2xpZW50LmdldCgpLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICBkaWRTdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisg
ICAgc3RhcnROZXR3b3JrTG9hZCgpOworI2VuZGlmCit9CisKIHZvaWQgRG93bmxvYWQ6OmRpZFN0
YXJ0KCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydChtX3Jl
cXVlc3QsIG1fc3VnZ2VzdGVkTmFtZSkpOwogfQotI2VuZGlmCiAKICNpZiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CiB7CiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2Vy
KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk7CiB9CisjZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewpAQCAtODksNyArMTA4LDYg
QEAgdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlk
UmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewpAQCAtMTEwLDcgKzEyOCw2IEBAIGJvb2wg
RG93bmxvYWQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQogU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSkKIHsKICAg
ICBTdHJpbmcgZGVzdGluYXRpb247CkBAIC0xMjQsNyArMTQxLDYgQEAgU3RyaW5nIERvd25sb2Fk
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLAogCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQotI2VuZGlmCiAKIHZvaWQgRG93
bmxvYWQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5k
ZXggMTcwY2ZiOC4uNmYzYTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI5LDggKzI5LDExIEBACiAjaW5jbHVkZSAi
RG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkBAIC00NCwxMiArNDcsNiBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVn
YXRlOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2VuZGlmCi0KICNp
ZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5o
PgogI2VuZGlmCkBAIC03NywzMiArNzQsMzIgQEAgY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiBQ
TEFURk9STShDT0NPQSkKICAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3dubG9hZElE
LCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0jZWxzZQot
ICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0p
OwogI2VuZGlmCisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSA9IHsgfSk7CisKICAgICB+RG93bmxvYWQoKTsKIAotI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIHZvaWQgc3RhcnQoKTsKKworI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlmCiAgICAgdm9pZCByZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBE
b3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3N1Z2dlc3Rl
ZE5hbWU7IH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzZXRTYW5kYm94
RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pIHsg
bV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsgfQogI2Vsc2UK
LSAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAjZW5kaWYKKyAgICB2b2lkIGRpZFN0YXJ0KCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICBib29sIHNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSk7Ci0jZW5kaWYKICAg
ICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIHBsYXRmb3JtRGlkRmluaXNoKCk7CkBAIC0xMTQsMTUg
KzExMSwxNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIG92ZXJyaWRlOwogCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdm9pZCBz
dGFydE5ldHdvcmtMb2FkKCk7CisjZW5kaWYKKwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRl
KCk7CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAgICAg
RG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsKICAgICBEb3dubG9hZElEIG1fZG93
bmxvYWRJRDsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwotI2VuZGlmCiAKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogCkBAIC0xMzgsMTAgKzEzNyw4IEBAIHByaXZhdGU6CiAj
aWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3du
bG9hZDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENs
aWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5k
bGU7Ci0jZW5kaWYKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWROYW1lOwogICAgIGJvb2wgbV9oYXNS
ZWNlaXZlZERhdGEgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMTU5
NGVmNC4uMjZlMzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTQ3LDIxICs0NywyMyBA
QCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAgaWYgKCFyZXF1ZXN0LnVybCgp
LnByb3RvY29sSXNCbG9iKCkpIHsKKyAgICAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNz
aW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgaWYgKCFuZXR3
b3JrU2Vzc2lvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gc2Vzc2lv
bklEOworICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBwYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpN
YXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKKyAgICAgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92ZShw
YXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uKSk7CiAgICAgICAgIHJldHVy
bjsKLSAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJz
LnNlc3Npb25JRCA9IHNlc3Npb25JRDsKLSAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0
OwotICAgIHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwotICAgIG1fcGVuZGluZ0Rvd25s
b2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdU
Rk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbikpOwotI2Vsc2UK
KyAgICB9CisjZW5kaWYKICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpOwogICAgIGRv
d25sb2FkLT5zdGFydCgpOwogCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3du
bG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxv
YWQpKTsKLSNlbmRpZgogfQogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tCmluZGV4IDdhYjBiY2QuLjk0Zjg4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQpAQCAt
MTIyLDcgKzEyMiw3IEBAIHN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3du
bG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCiAgICAgfTsKIH0KIAotdm9p
ZCBEb3dubG9hZDo6c3RhcnQoKQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCmluZGV4IGMwMDA0
OWEuLmU1YWI1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQpAQCAtNDksNyArNDksNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgRG93bmxv
YWQ6OnN0YXJ0KCkKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIEFT
U0VSVCghbV9uc1VSTERvd25sb2FkKTsKICAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxv
YWRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKaW5kZXggNTZiYmQwMC4uODZlZmE2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3du
bG9hZFNvdXAuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9hbGxv
d092ZXJ3cml0ZTsKIH07CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKK3ZvaWQgRG93bmxvYWQ6
OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIEFTU0VSVCghbV9kb3dubG9hZENsaWVudCk7CiAg
ICAgQVNTRVJUKCFtX3Jlc291cmNlSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmluZGV4IDIzZjMzZGUuLjhjNzZiZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aApAQCAtMjI3LDcgKzIyNyw3IEBACiAgICAgbWFjcm8oU2hhZG93RE9NRW5hYmxlZCwgc2hhZG93
RE9NRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIlNoYWRvdyBET00iLCAiSFRNTCBTaGFkb3cg
RE9NIHByb3RvdHlwZSIpIFwKICAgICBtYWNybyhET01JdGVyYXRvckVuYWJsZWQsIGRvbUl0ZXJh
dG9yRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oRmV0Y2hB
UElFbmFibGVkLCBmZXRjaEFQSUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUsICIiLCAiIikgXAot
ICAgIG1hY3JvKERvd25sb2FkQXR0cmlidXRlRW5hYmxlZCwgZG93bmxvYWRBdHRyaWJ1dGVFbmFi
bGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCisgICAgbWFjcm8oRG93bmxvYWRBdHRy
aWJ1dGVFbmFibGVkLCBkb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUs
ICIiLCAiIikgXAogICAgIG1hY3JvKFNlbGVjdGlvblBhaW50aW5nV2l0aG91dFNlbGVjdGlvbkdh
cHNFbmFibGVkLCBzZWxlY3Rpb25QYWludGluZ1dpdGhvdXRTZWxlY3Rpb25HYXBzRW5hYmxlZCwg
Qm9vbCwgYm9vbCwgREVGQVVMVF9TRUxFQ1RJT05fUEFJTlRJTkdfV0lUSE9VVF9TRUxFQ1RJT05f
R0FQU19FTkFCTEVELCAiIiwgIiIpIFwKICAgICBtYWNybyhBcHBsZVBheUVuYWJsZWQsIGFwcGxl
UGF5RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIiLCAiIikgXAogICAgIG1hY3JvKEFwcGxl
UGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkLCBhcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9z
dXJlQWxsb3dlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCAxMjg2
ZGUwLi4yNTQ5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTE4OSw3ICsxODksOCBAQCB2b2lkIERvd25sb2Fk
UHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxv
YWRJRCBkb3dubAogICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9
IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIG5ldHdvcmtQcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURl
Y2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSksIDApOwogfQotI2Vsc2UKKyNl
bmRpZgorCiB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFN0cmluZyYgZGVzdGluYXRpb24sIGJv
b2wmIGFsbG93T3ZlcndyaXRlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpCiB7CiAgICAgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKQEAgLTIwNiw3ICsy
MDcsNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbQogICAgIGlmICghZGVzdGluYXRpb24uaXNO
dWxsKCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
IH0KLSNlbmRpZgogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMTVmZTU0MmMuLjIzMDI2YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBA
IC04Miw5ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
dWludDY0X3QgbGVuZ3RoKTsKICAgICB2b2lkIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wmIHJlc3VsdCk7Ci0jaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sJiBh
bGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3Ry
aW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1
bWVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiN2UzOTNhLi5jYWI0OWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw5ICszMiw3IEBAIG1lc3NhZ2VzIC0+IERv
d25sb2FkUHJveHkgewogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKICAg
ICBTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChi
b29sIHJlc3VsdCkKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBEZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShTdHJpbmcgZmlsZW5hbWUpIC0+IChTdHJpbmcgZGVz
dGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0jZW5kaWYKICAgICBEaWRDcmVhdGVEZXN0
aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5pc2goKQogICAgIERpZEZhaWwoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZGQwODRhNi4uNjcyNTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxMyw2ICsxMjEzLDggQEAKIAkJODM5OTAyMDIx
QkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZGMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5jcHAgKi87IH07CiAJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3Jr
TG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5
OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggKi87IH07CiAJCTgzQkRDQ0I5
MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkRDQ0I4MUFDNUZEQjYwMDNG
NjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLzsgfTsKKwkJODNCRkFDNDIxRDk2
MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJs
b2JEb3dubG9hZENsaWVudC5oICovOyB9OworCQk4M0JGQUM0MzFEOTYxMzdDMDA0MzM0OTAgLyog
QmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGll
bnQuY3BwICovOyB9OwogCQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
RDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovOyB9OwogCQk4
NDQ3Nzg1MzE3NkZDQzA4MDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVk
aWFUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVk
aWFUeXBlLmggKi87IH07CiAJCTg2ODE2MEQwMTg3NjQ1NTcwMDIxRTc5RCAvKiBXaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY4MTYwQ0YxODc2NDUzNzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24u
bW0gKi87IH07CkBAIC0zMzA4LDYgKzMzMTAsOCBAQAogCQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2
NTMgLyogTmV0d29ya0xvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0
d29ya0xvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOTkwMUZGMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3Jr
TG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrTG9h
ZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2Fk
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JEb3du
bG9hZENsaWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNENDU0RDYxQkU5
RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDQ3Nzg1
MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdE1lZGlhVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjgxNjBD
RDE4NzYzRDRCMDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NzM4LDYgKzU3NDIsOCBAQAogCQkJCTVDMTQyNzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBj
b2NvYSAqLywKIAkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovLAogCQkJCTVD
MTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCisJCQkJODNCRkFDNDAxRDk2MTM2MDAw
NDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovLAorCQkJCTgzQkZBQzQxMUQ5NjEzNjAw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLAogCQkJCTVDMTQyNkYzMUMyM0Y4
NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgKi8sCiAJCQkJNUMxNDI2RjQxQzIzRjg0MzAwRDQx
MTgzIC8qIERvd25sb2FkLmggKi8sCiAJCQkJNUMxNDI2RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERv
d25sb2FkSUQuaCAqLywKQEAgLTc2MTIsNiArNzYxOCw3IEBACiAJCQkJMjk4NEY1N0QxNjRCOTE1
RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUU3NzJDMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkE5NzYxMTgwRTAzMUQw
MDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3REQ1QkYxODBEQTdEMzAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1By
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJBOTc2QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0
YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUx
ODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNDksNiArOTE1Niw3IEBACiAJCQkJMEYwQzM2NUUxOEMx
MTBBNTAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTkyREMxMzEyRjhCQUI5MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUZERTY0NTE5NTEwQjU1MDBDNDhGRkEgLyogTGVnYWN5QnVuZGxlRm9y
Q2xhc3MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4M0JGQUM0MzFEOTYxMzdDMDA0MzM0OTAgLyog
QmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRkRFNjVEMTk1NEU4
RDUwMEM0OEZGQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVy
c0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289756</attachid>
            <date>2016-09-24 13:42:20 -0700</date>
            <delta_ts>2016-09-24 19:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156099-20160924133926.patch</filename>
            <type>text/plain</type>
            <size>39169</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZmYjNhYzA0ZDQwNTQ4
MGU0NDNlZDYwN2E4MjIwOWEwYzRjZjliNC4uYWIxNjNjZmU2OWE3MWI2ZTBhNzEyMzBiNDQ0YTJj
YmI4NzUyZGE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA5LTI0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgPGEgZG93bmxvYWQ+IGRvZXMg
bm90IHN1cHBvcnQgQmxvYiBVUkxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTYwOTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NTM1NTIwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9ubHkgYWxs
b3cgdHJ1c3RlZCBldmVudHMgdG8gdHJpZ2dlciBkb3dubG9hZHMgZm9yIDxhIGRvd25sb2FkPiwg
YXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1hLWVs
ZW1lbnQ6dHJpZ2dlcmVkLWJ5LXVzZXItYWN0aXZhdGlvbgorCisgICAgICAgIFdpdGhvdXQgdGhp
cywgYSBzY3JpcHQgY291bGQgZG93bmxvYWQgYSBmaWxlIHRvIHRoZSB1c2VyJ3MgZGlzayB3aXRo
b3V0CisgICAgICAgIGFueSB1c2VyIGdlc3R1cmUgb3IgY29uc2VudCwgc2ltcGx5IGJ5IGNhbGxp
bmcgYS5jbGljaygpLiBJIGhhdmUgY29uZmlybWVkCisgICAgICAgIHRoYXQgRmlyZWZveCBhbHNv
IGlnbm9yZXMgdGhlIGNsaWNrIGZvciA8YSBkb3dubG9hZD4gaWYgaXQgaXMgc3ludGhldGljLgor
ICAgICAgICBDaHJvbWUgYWxsb3dzIHN5bnRoZXRpYyBjbGlja3MgdG8gdHJpZ2dlciBkb3dubG9h
ZHMgYnV0IEkgZmlsZWQgYSBidWcKKyAgICAgICAgYWJvdXQgaXQuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGlj
ay5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayk6CisKIDIwMTYtMDktMjMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGlnbiBIVE1MTGFi
ZWxFbGVtZW50LnByb3RvdHlwZS5mb3JtIHdpdGggdGhlIEhUTUwgc3BlY2lmaWNhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGU3MTczZjM1MDYwNmNkYzgwMzAwNTFiNzVkNTY3ZDRmZDk0MjNhMTYuLmM2OTk5
MTlhMTE1ZTg1MWFhMDZjZDgxMDMzZGY1ZjdlYzZmZWJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MiBAQAorMjAxNi0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIDxhIGRvd25sb2FkPiBkb2VzIG5vdCBzdXBwb3J0IEJsb2IgVVJMcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDk5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yNTUzNTUyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZG93bmxvYWRpbmcgQmxvYiBVUkxzIHRv
IFdlYktpdDIuIFRoaXMgc2hvdWxkIHdvcmsgZm9yCisgICAgICAgIGFsbCBXZWJLaXQyIHBvcnQu
IFRoaXMgYWxzbyB3b3JrcyBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBkb3dubG9hZAorICAgICAg
ICBhdHRyaWJ1dGUgb24gYW5jaG9yIGVsZW1lbnRzLiBOb3RlIHRoYXQgdGhlIGRvd25sb2FkIGF0
dHJpYnV0ZSBpcyBvbmx5CisgICAgICAgIGVuYWJsZWQgYXQgcnVudGltZSBpbiB0aGUgY29udGV4
dCBvZiB0aGUgbGF5b3V0IHRlc3RzIGZvciBub3cuIEknbGwKKyAgICAgICAgZW5hYmxlIHRoZSBk
b3dubG9hZCBhdHRyaWJ1dGUgb24gV0syIG9uY2UgSSBoYXZlIGZpeGVkIEJ1ZyAxNjI1MzEuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkJs
b2JEb3dubG9hZENsaWVudDo6QmxvYkRvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpCbG9iRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkOjp+RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
ZGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3VnZ2VzdGVkTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L21hYy9Eb3dubG9hZE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25s
b2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydE5ldHdvcmtMb2Fk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAx
Ni0wOS0yMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IE1hYyBDTWFrZSBidWlsZCBhZnRlciByMjA2MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGQ2MTYwZGRiNWExYTY3ZjU0NjJkNWYyYTlmN2Y0MGFj
ZWVmZmZmOTEuLmI5YjVhYzk3NmUxZDc3MDYwMzg3NGVjYjZlYzViNDc0ODY0ODhhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zNjcsOCArMzY3LDE0
IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKIAog
ICAgIGF1dG8gZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbTsKICNpZiBFTkFCTEUoRE9XTkxP
QURfQVRUUklCVVRFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCgpKSB7
CiAgICAgICAgIGRvd25sb2FkQXR0cmlidXRlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihkb3dubG9hZEF0dHIpOworICAgICAgICAvLyBJZiB0aGUgYSBlbGVtZW50IGhhcyBhIGRv
d25sb2FkIGF0dHJpYnV0ZSBhbmQgdGhlIGFsZ29yaXRobSBpcyBub3QgdHJpZ2dlcmVkIGJ5IHVz
ZXIgYWN0aXZhdGlvbgorICAgICAgICAvLyB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtYS1lbGVtZW50OnRyaWdnZXJl
ZC1ieS11c2VyLWFjdGl2YXRpb24KKyAgICAgICAgaWYgKCFkb3dubG9hZEF0dHJpYnV0ZS5pc051
bGwoKSAmJiAhZXZlbnQuaXNUcnVzdGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQog
I2VuZGlmCiAKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoa3VybCwgdGFyZ2V0KCks
ICZldmVudCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgaGFzUmVs
KFJlbGF0aW9uTm9SZWZlcnJlcikgPyBOZXZlclNlbmRSZWZlcnJlciA6IE1heWJlU2VuZFJlZmVy
cmVyLCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgp
LCBkb3dubG9hZEF0dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ1ZDc5NDY2Y2Yw
MzNlZGYxMTkwOTkyODUxMjQzNzg0NjliYWVjMjguLjQ3ZDI5NGRkNDk1YTMxMzdkNzZmZjA4ODZl
ZjUxM2I3YmZjNDhlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0yMTMsNiArMjEzLDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3du
bG9hZENsaWVudC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
CiAgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3du
bG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGQxNDA5ZTY2ZjQ2MTExNmI4Y2Nm
YjkwMzYxMmY0M2M3M2ZiYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKQEAgLTAsMCArMSw4
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9iRG93
bmxvYWRDbGllbnQuaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJE
b3dubG9hZC5oIgorI2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQmxvYkRvd25sb2Fk
Q2xpZW50OjpCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmIGRvd25sb2FkKQorICAgIDogbV9k
b3dubG9hZChkb3dubG9hZCkKK3sKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSkKK3sKKyAgICBtX2Rvd25sb2FkLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSk7CisKKyAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7CisgICAgbV9kZXN0aW5hdGlv
blBhdGggPSBtX2Rvd25sb2FkLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KG1fZG93bmxvYWQuc3VnZ2VzdGVkTmFtZSgpLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgaWYgKGZp
bGVFeGlzdHMobV9kZXN0aW5hdGlvblBhdGgpKSB7CisgICAgICAgIGlmICghYWxsb3dPdmVyd3Jp
dGUpIHsKKyAgICAgICAgICAgIG1fZGVzdGluYXRpb25QYXRoID0gZW1wdHlTdHJpbmcoKTsKKyAg
ICAgICAgICAgIGRpZEZhaWwobnVsbHB0ciwgY2FuY2VsbGVkRXJyb3IobV9kb3dubG9hZC5yZXF1
ZXN0KCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZWxldGVG
aWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9
IG9wZW5GaWxlKG1fZGVzdGluYXRpb25QYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fZG93bmxv
YWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOworfQorCit2b2lkIEJs
b2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQpCit7CisgICAgd3JpdGVUb0ZpbGUobV9kZXN0aW5h
dGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgbV9kb3dubG9h
ZC5kaWRSZWNlaXZlRGF0YShidWZmZXItPnNpemUoKSk7Cit9CisKK3ZvaWQgQmxvYkRvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlKQoreworICAg
IGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgbV9kb3dubG9hZC5kaWRGaW5pc2go
KTsKK30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBjbG9zZUZpbGUobV9kZXN0aW5h
dGlvbkZpbGUpOworICAgIGlmICghbV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQorICAgICAg
ICBkZWxldGVGaWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKworICAgIG1fZG93bmxvYWQuZGlkRmFp
bChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTZkZjI1NWI5ZjhhMTNkOGI1ODNhMTFhYzM2YWFlYzk3MzAzOTgy
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWQ7CitjbGFzcyBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnM7CisKK2NsYXNzIEJsb2JEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
QmxvYkRvd25sb2FkQ2xpZW50KERvd25sb2FkJik7CisKKyAgICAvLyBSZXNvdXJjZUhhbmRsZUNs
aWVudAorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRp
bWUpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBEb3du
bG9hZCYgbV9kb3dubG9hZDsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblBhdGg7CisgICAgV2Vi
Q29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggZGYzZjM2NDJm
YmIzNTdmZWVmOGE0ODk3NmU0ZGMwNzIwYmQwM2ZiMC4uMjUxNmEzYjUwNGVmMjc1MDA3MGE4YjZk
MzE4YWU0NTY3M2RlYjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
RG93bmxvYWQuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgorI2luY2x1
ZGUgIkJsb2JEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBAIC00
NCwxOCArNDUsMjEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKSAmJiBQTEFURk9STShDT0NPQSkKIERvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFn
ZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2sqIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotI2Vsc2UKLURvd25sb2FkOjpEb3dubG9h
ZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSkKLSNlbmRpZgogICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQog
ICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04p
Ci0gICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKLSNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pICYmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9kb3dubG9hZChkb3dubG9hZCkKLSAgICAs
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fc3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWRO
YW1lKQoreworICAgIEFTU0VSVChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKKworICAgIG1f
ZG93bmxvYWRNYW5hZ2VyLmRpZENyZWF0ZURvd25sb2FkKCk7Cit9CiAjZW5kaWYKKworRG93bmxv
YWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElE
IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lKQorICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2Vy
KQorICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCisgICAgLCBtX3JlcXVlc3QocmVxdWVz
dCkKICAgICAsIG1fc3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQogewogICAgIEFTU0VSVCht
X2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKQEAgLTcwLDE4ICs3NCwzMyBAQCBEb3dubG9hZDo6
fkRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWREZXN0cm95RG93bmxvYWQoKTsK
IH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBEb3dubG9hZDo6c3RhcnQoKQor
eworICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgeworICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRG93bmxvYWRDbGllbnQ+KCp0
aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUo
bnVsbHB0ciwgbV9yZXF1ZXN0LCBtX2Rvd25sb2FkQ2xpZW50LmdldCgpLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICBkaWRTdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisgICAg
c3RhcnROZXR3b3JrTG9hZCgpOworI2VuZGlmCit9CisKIHZvaWQgRG93bmxvYWQ6OmRpZFN0YXJ0
KCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydChtX3JlcXVl
c3QsIG1fc3VnZ2VzdGVkTmFtZSkpOwogfQotI2VuZGlmCiAKICNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7
CiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCku
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk7CiB9CisjZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewpAQCAtODksNyArMTA4LDYgQEAg
dm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewpAQCAtMTEwLDcgKzEyOCw2IEBAIGJvb2wgRG93
bmxvYWQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQogU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSkKIHsKICAgICBT
dHJpbmcgZGVzdGluYXRpb247CkBAIC0xMjQsNyArMTQxLDYgQEAgU3RyaW5nIERvd25sb2FkOjpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLAogCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQotI2VuZGlmCiAKIHZvaWQgRG93bmxv
YWQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXgg
MTcwY2ZiODZlM2RlYmUwNjQ1OGJhMTcxNmYyYTc0ZDRhNWRlYmQ5Mi4uNTgzZDBkNDVkZWZhMTIz
NDI5NmEwOTc4YjQ2ODAxOTY2YmZiZWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI5LDggKzI5LDExIEBACiAjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC00NCwxMiArNDcsNiBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRB
c0RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2VuZGlm
Ci0KICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2Fk
UHJpdi5oPgogI2VuZGlmCkBAIC03NywzMiArNzQsMzMgQEAgY2xhc3MgRG93bmxvYWQgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KSAmJiBQTEFURk9STShDT0NPQSkKICAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBEb3du
bG9hZElELCBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sqLCBjb25zdCBXZWJDb3JlOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0j
ZWxzZQotICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUg
PSB7IH0pOwogI2VuZGlmCisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSA9IHsgfSk7CisKICAgICB+RG93bmxvYWQoKTsKIAotI2lmICFVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgc3RhcnQoKTsKKworI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQogICAgIHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlmCiAgICAgdm9pZCByZXN1bWUo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAK
ICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7
IH0KKyAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3N1
Z2dlc3RlZE5hbWU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uKTsgfQogI2Vsc2UKLSAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYKKyAgICB2b2lkIGRpZFN0YXJ0KCk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICBib29s
IHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxv
d092ZXJ3cml0ZSk7Ci0jZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIHBsYXRmb3Jt
RGlkRmluaXNoKCk7CkBAIC0xMTQsMTUgKzExMiwxNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlOwogCisjaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCisgICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkKCk7CisjZW5kaWYKKwogICAg
IHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0OwogCiAgICAgRG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdl
cjsKICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwotI2VuZGlmCiAKICAg
ICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogCkBAIC0xMzgs
MTAgKzEzOCw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8
Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7Ci0jZW5kaWYKICAgICBTdHJpbmcgbV9zdWdnZXN0
ZWROYW1lOwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZERhdGEgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKaW5kZXggMTU5NGVmNGE0MTNkMGQ4NjM1OTViNTBiNDliMGU2YzdlYTU4
MmVmZS4uMjZlMzdmNDcxNGFhNDkyYTgwOTk0Zjc3ZDgwOTYzMTc0YjkxZDFmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKQEAgLTQ3LDIxICs0NywyMyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25s
b2FkTWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERv
d25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7
CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNl
c3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29y
a1Nlc3Npb24pCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpIHsKKyAg
ICAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAg
ICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgICAgICBwYXJhbWV0ZXJz
LnJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQ
b2xpY3kgPSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFs
czsKKyAgICAgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2Vf
dW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwg
Km5ldHdvcmtTZXNzaW9uKSk7CiAgICAgICAgIHJldHVybjsKLSAgICBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHNlc3Npb25JRDsK
LSAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwotICAgIHBhcmFtZXRlcnMuY2xpZW50
Q3JlZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZv
ckNyZWRlbnRpYWxzOwotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUocGFyYW1ldGVycyksIGRvd25s
b2FkSUQsICpuZXR3b3JrU2Vzc2lvbikpOwotI2Vsc2UKKyAgICB9CisjZW5kaWYKICAgICBhdXRv
IGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQs
IHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpOwogICAgIGRvd25sb2FkLT5zdGFydCgpOwogCiAgICAg
QVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9h
ZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQogCiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCmluZGV4IDdhYjBiY2RmY2Rl
NjVmYzM1ZjZhNmZmZGQ3Y2UwOTc2YmZkZjVjMmEuLjk0Zjg4OWE2YmU0MjJlMzBlZTUyYjNkYzY1
NjdmODAwMjRmNjMyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xp
ZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCiAgICAgfTsKIH0KIAotdm9pZCBEb3dubG9hZDo6c3Rh
cnQoKQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCmluZGV4IGMwMDA0OWE1N2U0OWNlOWUzNGM4
Mzg1OGQ4ZDA3NTMzZjBhZTBmM2IuLmU1YWI1MjE3YjNkOWNkY2Q1MDExOTdjMDY4YmE5MWU2YmQ3
ZTM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQpAQCAtNDksNyArNDksNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgRG93bmxvYWQ6OnN0
YXJ0KCkKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIEFTU0VSVCgh
bV9uc1VSTERvd25sb2FkKTsKICAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25s
b2FkU291cC5jcHAKaW5kZXggNTZiYmQwMDQ3OWU4YzhiYTBjMTI5YWUzM2VmYzU0ZTI2MGI2MGJk
OS4uODZlZmE2Y2I2YmRjNDIzNzk5ZWM5ZGJlNGRhMDkyNDRjNDE2MGUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9h
bGxvd092ZXJ3cml0ZTsKIH07CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKK3ZvaWQgRG93bmxv
YWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogewogICAgIEFTU0VSVCghbV9kb3dubG9hZENsaWVudCk7
CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDEyODZkZTAyZWFl
YmViMDQ3MTU2MTA1NWFhZjgzYzU1YzFjMmU4NzAuLjI1NDk1MDJlZDgzYWFjMjE0OGRhYmJmYmU0
MTA1YTljNWQyODc0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMTg5LDcgKzE4OSw4IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3du
bG9hZElEIGRvd25sCiAgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNz
ID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVl
RGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24s
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKSwgMCk7CiB9Ci0jZWxzZQor
I2VuZGlmCisKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlvbiwg
Ym9vbCYgYWxsb3dPdmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKIHsKICAgICBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOwpAQCAtMjA2LDcg
KzIwNyw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtCiAgICAgaWYgKCFkZXN0aW5hdGlvbi5p
c051bGwoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0
aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwogfQotI2VuZGlmCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAxNWZlNTQyYzMwNjRkOGExM2UyNDA1NzQ5
NWIyMmY3MWQ2ZTZiYzgyLi4yMzAyNmFkZjAwMTY5NGU5N2M5MGZjZTJiMDMzY2JkYzM0NDQ2OWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaApAQCAtODIsOSArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CiAgICAgdm9pZCBzaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sJiByZXN1bHQpOwotI2lm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlv
biwgYm9vbCYgYWxsb3dPdmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7Ci0jZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjdlMzkzYTNm
Y2RiMTk0MmUwNTU2N2ZmNmUzOGYzNjdkZTYwNTQzZS4uY2FiNDliMTEyYzg3NDQ0ZGIzM2IxYzNk
ODYzYTcwZjFhZTZmMzk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIsOSArMzIs
NyBAQCBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKICAgICBEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBsZW5ndGgpCiAgICAgU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoU3Ry
aW5nIG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5nIGZpbGVu
YW1lKSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQotI2VuZGlm
CiAgICAgRGlkQ3JlYXRlRGVzdGluYXRpb24oU3RyaW5nIHBhdGgpCiAgICAgRGlkRmluaXNoKCkK
ICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIElQQzo6RGF0YVJlZmVy
ZW5jZSByZXN1bWVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGRkMDg0YTZlYmY1ODQ0NjYyM2E2Mzc2MzY1MTc3OWNmNDlj
OTYwZGIuLjY3MjU0YWJiOTRhYjA1MjZjNDU4MDBjMThmYzU1MTMwNzU0N2YwMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
MTMsNiArMTIxMyw4IEBACiAJCTgzOTkwMjAyMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9h
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk5
MDFGRjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICovOyB9OwogCQk4Mzk5MDIw
MzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5oICovOyB9OwogCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgKi87IH07CisJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJ
ODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JGQUM0MTFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLzsgfTsKIAkJODNENDU0RDcxQkU5
RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Q0NTRENjFCRTlEM0M0MDA2QzkzQkQgLyogTmV0
d29ya0xvYWRDbGllbnQuaCAqLzsgfTsKIAkJODQ0Nzc4NTMxNzZGQ0MwODAwQ0RDN0JCIC8qIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ0Nzc4NTExNzZGQ0FDMTAwQ0RDN0JCIC8qIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oICovOyB9OwogCQk4NjgxNjBEMDE4
NzY0NTU3MDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MENGMTg3NjQ1MzcwMDIxRTc5
RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tICovOyB9OwpAQCAtMzMwOCw2ICszMzEwLDgg
QEAKIAkJODM5OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzk5MDFG
RjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0xvYWQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JEQ0NCODFB
QzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJs
b2JEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9i
RG93bmxvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRkFDNDExRDk2
MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iRG93bmxvYWRDbGllbnQuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrTG9hZENsaWVu
dC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ0Nzc4NTExNzZGQ0FDMTAwQ0RDN0JCIC8qIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4MTYwQ0QxODc2M0Q0QjAwMjFFNzlEIC8qIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93U2VydmVyQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczOCw2ICs1NzQyLDggQEAKIAkJCQk1
QzE0MjcwODFDMjNGODUyMDBENDExODMgLyogY29jb2EgKi8sCiAJCQkJNUMxNDI3MEMxQzIzRjg3
NzAwRDQxMTgzIC8qIGlvcyAqLywKIAkJCQk1QzE0MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFj
ICovLAorCQkJCTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQu
aCAqLywKKwkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50
LmNwcCAqLywKIAkJCQk1QzE0MjZGMzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWQuY3BwICov
LAogCQkJCTVDMTQyNkY0MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5oICovLAogCQkJCTVD
MTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi8sCkBAIC03NjEyLDYgKzc2
MTgsNyBAQAogCQkJCTI5ODRGNTdEMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyQzE4NDAwOEI5
MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTJBOTc2MTE4MEUwMzFEMDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBC
bG9iRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0RENUJGMTgwREE3RDMw
MDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
QTk3NkExODBFMDlCODAwMzlBMTQ5IC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDMyRjFFMTgwRjc5MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTQ5LDYg
KzkxNTYsNyBAQAogCQkJCTBGMEMzNjVFMThDMTEwQTUwMEY2MDdENyAvKiBMYXllclJlcHJlc2Vu
dGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5MkRDMTMxMkY4QkFCOTAwMTdBRjY1IC8q
IExheWVyVHJlZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NDUxOTUxMEI1
NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUZERTY1RDE5NTRFOEQ1MDBDNDhGRkEgLyogTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTA4NzYwMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDEwODc2MzFEMkM2
NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGVhODhjOTYwZjBkOTkwYjdmZTFjNTRlZWE1NzZiMWFiNDAyMTY4ZDEuLmVhMWM5ODE1ZTMw
ODVmMjRhOTExOGY3YmRhN2E2NTVjNmViNWRlOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
Ni0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIDxhIGRv
d25sb2FkPiBkb2VzIG5vdCBzdXBwb3J0IEJsb2IgVVJMcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTUzNTUyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVbnNraXAgLyByZWJhc2VsaW5lIGV4aXN0aW5nIHRlc3RzIG5vdyB0aGF0IDxhIGRvd25s
b2FkPiBzdXBwb3J0cyBCbG9iIFVSTHMuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRv
d25sb2FkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNi0wOS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEFsaWduIEhUTUxMYWJlbEVsZW1lbnQucHJvdG90eXBlLmZvcm0g
d2l0aCB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMjgzNTU2
MjE2OGFmMDc2ZTYyNTEwMmU4YzhiZTA2ZDQ5YzdmYzY3Li5jY2E5OTk5MzI3ZjZkMTBkN2I5YTVj
ZGViZmQyYzMzNDVmZjU2ZDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg5NCw5ICs4OTQsNiBA
QCBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtYm9keS1kaXItYXR0ci1k
b2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLQogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
YWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXIt
cGxhY2VtZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGZhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLWFuaW1hdGlvbi1wcm9wZXJ0eS5odG1sIFsgRmFpbHVyZSBdCiAKLSMgPGEgZG93
bmxvYWQ+IGRvZXMgbm90IHN1cHBvcnQgQmxvYnMKLXdlYmtpdC5vcmcvYi8xNTYwOTkgaHR0cC90
ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctYmxvYi5odG1sIFsgRmFpbHVyZSBd
Ci0KICMgPGEgZG93bmxvYWQ+IGRvZXMgbm90IGhvbm9yIGNyb3NzLW9yaWdpbiByZXN0cmljdGlv
bnMKIHdlYmtpdC5vcmcvYi8xNTYxMDAgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxv
YWQtYmxvY2stY3Jvc3NvcmlnaW4uaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRv
d25sb2FkLWV4cGVjdGVkLnR4dAppbmRleCBlZWNiYzkyYzIyN2U5YzRjZTc0MGUwYTc4MjhkNmI2
ZmZkMzdjYjBmLi40NGEwOGU2ODQ5MGU1MDhiNjgwMzA5NDA1ZWUwY2FmMzM5MjYxZTRkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93
bmxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACitEb3du
bG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIiIKIERvd25sb2FkIHN0YXJ0ZWQu
Ci1Eb3dubG9hZCBmYWlsZWQuCi1GYWlsZWQ6IE5TVVJMRXJyb3JEb21haW4sIGNvZGU9LTEwMDIs
IGRlc2NyaXB0aW9uPXVuc3VwcG9ydGVkIFVSTAorRG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBV
UkwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGlj
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFkODI2YWY5N2Q5OGNmM2RkNDI0M2JiYWEwMzEx
MzA2ZTRjYjExOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorVGVzdCB0aGF0IHN5bnRoZXRpYyBjbGlja3Mgb24gYW4gYW5jaG9y
IHdpdGggYSBkb3dubG9hZCBhdHRyaWJ1dGUgYXJlIGlnbm9yZWQuCisKK1RoaXMgdGVzdCBwYXNz
ZXMgaWYgeW91IGRvIG5vdCBzZWUgYW55ICdEb3dubG9hZCBzdGFydGVkJyBtZXNzYWdlIGFib3Zl
LgorCitCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1j
bGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NWRiZGJhNmJkZGM3Y2Q1ODZmMjM2NmYxOTExZTBkOWUy
YzEyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNrLmh0bWwKQEAgLTAsMCArMSwz
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSd0ZXh0
L2phdmFzY3JpcHQnPgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IHRoYXQgc3ludGhldGljIGNsaWNrcyBvbiBhbiBhbmNo
b3Igd2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUgaWdub3JlZC48L3A+Cis8cD4gVGhpcyB0
ZXN0IHBhc3NlcyBpZiB5b3UgZG8gbm90IHNlZSBhbnkgJ0Rvd25sb2FkIHN0YXJ0ZWQnIG1lc3Nh
Z2UgYWJvdmUuPC9wPgorPGEgaWQ9ImJsb2ItdXJsIiBkb3dubG9hZD5CbG9iIFVSTDwvYT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc3RyaW5nID0gInRlc3QiOwor
ICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3N0cmluZ10sIHt0eXBlOiAidGV4dC9odG1sIn0pOwor
ICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJsb2ItdXJsIik7CisgICAg
bGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAgbGluay5j
bGljaygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0sIDEwMCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0
ZWQudHh0CmluZGV4IGVlY2JjOTJjMjI3ZTljNGNlNzQwZTBhNzgyOGQ2YjZmZmQzN2NiMGYuLjQ0
YTA4ZTY4NDkwZTUwOGI2ODAzMDk0MDVlZTBjYWYzMzkyNjFlNGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKK0Rvd25s
b2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiIgogRG93bmxvYWQgc3RhcnRlZC4K
LURvd25sb2FkIGZhaWxlZC4KLUZhaWxlZDogTlNVUkxFcnJvckRvbWFpbiwgY29kZT0tMTAwMiwg
ZGVzY3JpcHRpb249dW5zdXBwb3J0ZWQgVVJMCitEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVS
TApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93
bmxvYWQtYWxsb3ctYmxvYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLWV4cGVjdGVkLnR4dAppbmRleCA3ZjI0
MWU0YTE2MmYxMzg1NTZlMzFkZDE0NGU2OWI2YWVhNWMwOWJjLi42ODZjMTFkMWI3ZTdiYjUxMWZi
ZjJmMWNiNTcwODFjNjRkNzYxMDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9i
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDExIEBACiBEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdn
ZXN0ZWQgZmlsZW5hbWUgImZvby5wZGYiCitEb3dubG9hZCBzdGFydGVkLgorRG93bmxvYWQgY29t
cGxldGVkLgogVGVzdHMgdGhhdCBhIHN1Z2dlc3RlZCBmaWxlbmFtZSBvbiBhIGRvd25sb2FkIGF0
dHJpYnV0ZSBpcyBhbGxvd2VkIGlmIHRoZSBsaW5rIGlzIGEgYmxvYiBVUkwuCiAKIFRoZSBzdWdn
ZXN0ZWQgZmlsZW5hbWUgYXQgdGhlIHRvcCBzaG91bGQgYmUgZm9vLnBkZi4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDUyZjAyMmMwNDQ2OGJiNWNmYzQyNmUyY2ZiYzRlNzBkODExOWE2NWYuLjY5Y2MzZjY5ZmEw
YjViOWNiMzA0YTQ1M2E2MmNhZjE0NDZjOTc3YjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTMxMiw3
ICsxMzEyLDggQEAgaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvZW1wdHktYmxvYi1m
aWxlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NTQ5NSBjb21wb3NpdGluZy92
aXNpYmxlLXJlY3QvYW5pbWF0ZWQtZnJvbS1ub25lLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCi0j
IDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydCBpbiBXSzEgeWV0LgorIyA8YSBkb3dubG9hZD4g
aXMgbm90IHN1cHBvcnRlZCBpbiBXSzEgeWV0Lgord2Via2l0Lm9yZy9iLzE1NjA2OSBmYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNrLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3It
ZG93bmxvYWQtYWxsb3ctYmxvYi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY5IGh0
dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWRhdGEuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9h
ZC1hbGxvdy1zYW1lb3JpZ2luLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMDI3OTgxMDAzMTdiYTkwYjNjYjZmOGEw
OGY0YjViY2ViNGMzNGYyLi5iOTgzMjA1ZDQwZTA1ZWE2NDJiNmM1OWU5MTZhOWMyMmQzYmRiMWQ2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xODcsOSArMTg3LDEwIEBAIGZhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1hbmltYXRvci1vdmVybGF5
LXNjcm9sbGJhcnMtaG92ZXJlZC5odG1sIFsgU2tpcCBdCiAjIFRoaXMgaGl0LXRlc3QgdGVzdCBk
b2Vzbid0IHdvcmsgb24gRFJUCiB3ZWJraXQub3JnL2IvMTU2MDg0IGFjY2Vzc2liaWxpdHkvbWFj
L3ZpZGVvLXRhZy1oaXQtdGVzdC5odG1sIFsgU2tpcCBdCiAKLSMgPGEgZG93bmxvYWQ+IGlzIG5v
dCBzdXBwb3J0IGluIFdLMSB5ZXQuCisjIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydGVkIGlu
IFdLMSB5ZXQuCiB3ZWJraXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1ub2Rvd25sb2FkLXNldC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU2
MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC5odG1sIFsgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2suaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzE1NjA2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNo
b3ItZG93bmxvYWQtYWxsb3ctZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2MDY5
IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmlnaW4uaHRt
bCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBiZDM1YmZiZDQ2Yjk3OGMxMDZhMmNiZWMyNWRiM2ZiNTU4YzAzNmEwLi43YzY0M2FkNmE4N2I4
ZTU4NTliYWI2ZmFmNzRkZTk0OGM0NWY5NmExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM4MSwxMSArMTM4MSw4IEBAIHdlYmtpdC5vcmcvYi8xNTg4
ODkgbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sIFsgUGFz
cyBGYWlsCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNl
Y3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS8yNTUzNjI2Nj4gW01hY11baU9TXVtORVRXT1JLX1NFU1NJT05dIFVu
YWJsZSB0byBkb3dubG9hZCBCTE9CIFVSTHMgKDE1NjE4MCkKLVsgU2llcnJhKyBdIGZhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC5odG1sIFsgU2tpcCBdCi1bIFNpZXJy
YSsgXSBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQuaHRt
bCBbIFNraXAgXQogWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxv
YWQtYWxsb3ctZGF0YS5odG1sIFsgU2tpcCBdCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1zYW1lb3JpZ2luLmh0bWwgWyBTa2lwIF0KLVsgU2ll
cnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWJsb2IuaHRt
bCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNTc4MDAzNT4gQ1NQIGRvZXMgbm90IGln
bm9yZSBwYXRocyBmb3IgbWVkaWEgcmVkaXJlY3RzCiBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi5odG1s
IFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289765</attachid>
            <date>2016-09-24 19:08:19 -0700</date>
            <delta_ts>2016-09-24 19:41:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156099-20160924190525.patch</filename>
            <type>text/plain</type>
            <size>39578</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMwODg2NjM3YjViY2Fk
NDRjZjg0OGM2MWI5YWE5YjcwOWM3ZGY4YS4uYzQzMDllNWE1MGQ3ZTZjMmM5YzRhYzgyZmMzYTUx
MzU2ZDVhNWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA5LTI0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgPGEgZG93bmxvYWQ+IGRvZXMg
bm90IHN1cHBvcnQgQmxvYiBVUkxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTYwOTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NTM1NTIwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE9ubHkgYWxsb3cg
dHJ1c3RlZCBldmVudHMgdG8gdHJpZ2dlciBkb3dubG9hZHMgZm9yIDxhIGRvd25sb2FkPiwgYXMg
cGVyOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1hLWVsZW1l
bnQ6dHJpZ2dlcmVkLWJ5LXVzZXItYWN0aXZhdGlvbgorCisgICAgICAgIFdpdGhvdXQgdGhpcywg
YSBzY3JpcHQgY291bGQgZG93bmxvYWQgYSBmaWxlIHRvIHRoZSB1c2VyJ3MgZGlzayB3aXRob3V0
CisgICAgICAgIGFueSB1c2VyIGdlc3R1cmUgb3IgY29uc2VudCwgc2ltcGx5IGJ5IGNhbGxpbmcg
YS5jbGljaygpLiBJIGhhdmUgY29uZmlybWVkCisgICAgICAgIHRoYXQgRmlyZWZveCBhbHNvIGln
bm9yZXMgdGhlIGNsaWNrIGZvciA8YSBkb3dubG9hZD4gaWYgaXQgaXMgc3ludGhldGljLgorICAg
ICAgICBDaHJvbWUgYWxsb3dzIHN5bnRoZXRpYyBjbGlja3MgdG8gdHJpZ2dlciBkb3dubG9hZHMg
YnV0IEkgZmlsZWQgYSBidWcKKyAgICAgICAgYWJvdXQgaXQuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay5o
dG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayk6CisKIDIwMTYtMDktMjQgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpbmRpbmdd
IHNldERPTUV4Y2VwdGlvbiBzaG91bGQgYmUgaW5saW5lZCBhbmQgZmFsbCB0byB0aGUgc2xvdyBw
YXRoIGlmIGV4Y2VwdGlvbiBvY2N1cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMWVkZjJiYTMzYzg5ODNjNGM0
NzFmODVjMTEzYzljZjlkMWVhZDBmLi40YWJkNjc3ZDA2ODczMTFhNDVjZTgyZGNiMDI4NWJkOTc3
ZjQwNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAKIDIwMTYtMDktMjQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICA8YSBkb3dubG9hZD4gZG9lcyBub3Qg
c3VwcG9ydCBCbG9iIFVSTHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NjA5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU1MzU1MjA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGRvd25sb2FkaW5nIEJsb2IgVVJMcyB0byBXZWJLaXQyLiBUaGlzIHNob3VsZCB3b3JrIGZvcgor
ICAgICAgICBhbGwgV2ViS2l0MiBwb3J0LiBUaGlzIGFsc28gd29ya3MgaW4gY29tYmluYXRpb24g
d2l0aCB0aGUgZG93bmxvYWQKKyAgICAgICAgYXR0cmlidXRlIG9uIGFuY2hvciBlbGVtZW50cy4g
Tm90ZSB0aGF0IHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaXMgb25seQorICAgICAgICBlbmFibGVk
IGF0IHJ1bnRpbWUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxheW91dCB0ZXN0cyBmb3Igbm93LiBJ
J2xsCisgICAgICAgIGVuYWJsZSB0aGUgZG93bmxvYWQgYXR0cmlidXRlIG9uIFdLMiBvbmNlIEkg
aGF2ZSBmaXhlZCBCdWcgMTYyNTMxLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpCbG9iRG93bmxvYWRDbGllbnQ6OkJsb2JEb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6fkRvd25sb2FkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnN1Z2dlc3RlZE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVx
dWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTYtMDktMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBbV0syXSBhbmNob3IuZG93bmxvYWQgYXR0cmlidXRlIHZhbHVl
IGlzIGlnbm9yZWQgYnkgTkVUV09SS19TRVNTSU9OIGNvZGUgcGF0aAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNTMxCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggZDYxNjBkZGI1YTFhNjdmNTQ2MmQ1ZjJh
OWY3ZjQwYWNlZWZmZmY5MS4uYjliNWFjOTc2ZTFkNzcwNjAzODc0ZWNiNmVjNWI0NzQ4NjQ4OGEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTM2Nyw4
ICszNjcsMTQgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQmIGV2
ZW50KQogCiAgICAgYXV0byBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tOwogI2lmIEVOQUJM
RShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuZG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG93bmxvYWRBdHRyaWJ1dGVFbmFi
bGVkKCkpIHsKICAgICAgICAgZG93bmxvYWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGRvd25sb2FkQXR0cik7CisgICAgICAgIC8vIElmIHRoZSBhIGVsZW1lbnQg
aGFzIGEgZG93bmxvYWQgYXR0cmlidXRlIGFuZCB0aGUgYWxnb3JpdGhtIGlzIG5vdCB0cmlnZ2Vy
ZWQgYnkgdXNlciBhY3RpdmF0aW9uCisgICAgICAgIC8vIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMu
CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1hLWVsZW1lbnQ6
dHJpZ2dlcmVkLWJ5LXVzZXItYWN0aXZhdGlvbgorICAgICAgICBpZiAoIWRvd25sb2FkQXR0cmli
dXRlLmlzTnVsbCgpICYmICFldmVudC5pc1RydXN0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CiAjZW5kaWYKIAogICAgIGZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChrdXJsLCB0
YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
LCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSA/IE5ldmVyU2VuZFJlZmVycmVyIDogTWF5YmVT
ZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCksIGRvd25sb2FkQXR0cmlidXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDVk
Nzk0NjZjZjAzM2VkZjExOTA5OTI4NTEyNDM3ODQ2OWJhZWMyOC4uNDdkMjk0ZGQ0OTVhMzEzN2Q3
NmZmMDg4NmVmNTEzYjdiZmM0OGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTIxMyw2ICsy
MTMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTA3ZmZiMjA5ZDY5
Njk2MTZkODhmNmFiZmFkODJiZDkwOGIxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkJsb2JEb3dubG9hZENsaWVudC5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitCbG9i
RG93bmxvYWRDbGllbnQ6OkJsb2JEb3dubG9hZENsaWVudChEb3dubG9hZCYgZG93bmxvYWQpCisg
ICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQoreworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlKQoreworICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpKTsKKworICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKKyAgICBtX2Rl
c3RpbmF0aW9uUGF0aCA9IG1fZG93bmxvYWQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUobV9kb3dubG9hZC5zdWdnZXN0ZWROYW1lKCksIGFsbG93T3ZlcndyaXRlKTsKKyAg
ICBpZiAobV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIGRpZEZhaWwobnVs
bHB0ciwgY2FuY2VsbGVkRXJyb3IobV9kb3dubG9hZC5yZXF1ZXN0KCkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoZmlsZUV4aXN0cyhtX2Rlc3RpbmF0aW9uUGF0aCkpIHsKKyAg
ICAgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSkgeworICAgICAgICAgICAgbV9kZXN0aW5hdGlvblBh
dGggPSBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBjYW5jZWxs
ZWRFcnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgIH0KKwor
ICAgIG1fZGVzdGluYXRpb25GaWxlID0gb3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5G
b3JXcml0ZSk7CisgICAgbV9kb3dubG9hZC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0
aW9uUGF0aCk7Cit9CisKK3ZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCkKK3sKKyAg
ICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBtX2Rvd25sb2FkLmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsK
K30KKwordm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VI
YW5kbGUqLCBkb3VibGUpCit7CisgICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAg
ICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOworfQorCit2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorewor
ICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
UGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOwor
CisgICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9CbG9iRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmQzN2Y1OGMwZDA5YTlk
OWRiNjI4ZGI5ZGY0NGNjMTZkNDJhOGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBE
b3dubG9hZDsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKKworY2xhc3MgQmxvYkRvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAorICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKKworICAgIERvd25sb2FkJiBtX2Rvd25sb2FkOworICAgIFN0cmluZyBtX2Rl
c3RpbmF0aW9uUGF0aDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5h
dGlvbkZpbGUgeyBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAppbmRleCBkZjNmMzY0MmZiYjM1N2ZlZWY4YTQ4OTc2ZTRkYzA3MjBiZDAzZmIwLi4y
NTE2YTNiNTA0ZWYyNzUwMDcwYThiNmQzMThhZTQ1NjczZGViOWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiQmxvYkRvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJE
b3dubG9hZE1hbmFnZXIuaCIKQEAgLTQ0LDE4ICs0NSwyMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQogRG93bmxvYWQ6
OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0j
ZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotI2VuZGlmCiAgICAgOiBtX2Rvd25sb2FkTWFu
YWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKLSNp
ZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotI2VuZGlm
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX2Rv
d25sb2FkKGRvd25sb2FkKQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9z
dWdnZXN0ZWROYW1lKHN1Z2dlc3RlZE5hbWUpCit7CisgICAgQVNTRVJUKG1fZG93bmxvYWRJRC5k
b3dubG9hZElEKCkpOworCisgICAgbV9kb3dubG9hZE1hbmFnZXIuZGlkQ3JlYXRlRG93bmxvYWQo
KTsKK30KICNlbmRpZgorCitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3du
bG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCisgICAgOiBtX2Rvd25sb2Fk
TWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCisgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkK
KyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9zdWdnZXN0ZWROYW1lKHN1Z2dlc3Rl
ZE5hbWUpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRC5kb3dubG9hZElEKCkpOwpAQCAtNzAs
MTggKzc0LDMzIEBAIERvd25sb2FkOjp+RG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRNYW5hZ2Vy
LmRpZERlc3Ryb3lEb3dubG9hZCgpOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCit2
b2lkIERvd25sb2FkOjpzdGFydCgpCit7CisgICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzQmxvYigpKSB7CisgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJsb2JEb3dubG9hZENsaWVudD4oKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlSGFuZGxlID0g
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShudWxscHRyLCBtX3JlcXVlc3QsIG1fZG93bmxvYWRDbGll
bnQuZ2V0KCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGRpZFN0YXJ0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2Vsc2UKKyAgICBzdGFydE5ldHdvcmtMb2FkKCk7CisjZW5kaWYKK30KKwog
dm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQogewogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZFN0YXJ0KG1fcmVxdWVzdCwgbV9zdWdnZXN0ZWROYW1lKSk7CiB9Ci0jZW5kaWYK
IAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kb3dubG9hZHNB
dXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKIH0KKyNlbmRpZgogCiB2b2lkIERvd25s
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CkBAIC04OSw3ICsxMDgsNiBAQCB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBzZW5kKE1lc3NhZ2VzOjpE
b3dubG9hZFByb3h5OjpEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpKTsKIH0KLSNlbmRpZgog
CiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCiB7CkBAIC0x
MTAsNyArMTI4LDYgQEAgYm9vbCBEb3dubG9hZDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0j
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiBTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFs
bG93T3ZlcndyaXRlKQogewogICAgIFN0cmluZyBkZXN0aW5hdGlvbjsKQEAgLTEyNCw3ICsxNDEs
NiBAQCBTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsCiAKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9
Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3Ry
aW5nJiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaAppbmRleCAxNzBjZmI4NmUzZGViZTA2NDU4YmExNzE2ZjJhNzRkNGE1
ZGViZDkyLi41ODNkMGQ0NWRlZmExMjM0Mjk2YTA5NzhiNDY4MDE5NjZiZmJlYzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApA
QCAtMjksOCArMjksMTEgQEAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQ0LDEyICs0Nyw2IEBA
IE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jZW5kaWYKLQogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKQEAgLTc3LDMyICs3NCwzMyBA
QCBjbGFzcyBEb3dubG9hZCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgog
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQogICAgIERvd25sb2Fk
KERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayos
IGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lID0geyB9KTsKLSNlbHNlCi0gICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2Vy
JiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjZW5kaWYKKyAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKKwogICAgIH5Eb3dubG9h
ZCgpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzdGFydCgpOworCisj
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzdGFydFdpdGhIYW5kbGUoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAj
ZW5kaWYKICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7
CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VnZ2VzdGVkTmFtZTsgfQorICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQog
CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24o
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hF
eHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CiAjZWxzZQotICAgIHZvaWQg
ZGlkU3RhcnQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICNlbmRpZgor
ICAgIHZvaWQgZGlkU3RhcnQoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBsZW5ndGgpOwogICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
U3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlz
aCgpOwogICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKQEAgLTExNCwxNSArMTEyLDE3IEBA
IHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICB2b2lkIHN0YXJ0TmV0d29y
a0xvYWQoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAg
IGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBEb3dubG9hZE1h
bmFnZXImIG1fZG93bmxvYWRNYW5hZ2VyOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwot
I2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRi
b3hFeHRlbnNpb247CiAKQEAgLTEzOCwxMCArMTM4LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAg
IFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKLSNlbmRp
ZgogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRGF0
YSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBlYWYwMjBhYTZlMDYw
ZDY4MzE1OWYxNTc0N2MzNTczNjMwNDFmYmRmLi5iMGE2ODhkNTdkY2E4NWQwMDZiNzEwNjVhMmQ0
MDljMjI5MjE5M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDcsMjEgKzQ3LDIzIEBA
IERvd25sb2FkTWFuYWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCYgY2xpZW50KQogdm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7Ci0gICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKKyAgICBpZiAoIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0Jsb2IoKSkgeworICAgICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Np
b25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBpZiAoIW5ldHdv
cmtTZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9u
SUQ7CisgICAgICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIHBhcmFt
ZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1h
eUFza0NsaWVudEZvckNyZWRlbnRpYWxzOworICAgICAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sIHN1Z2dlc3RlZE5hbWUpKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
ICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gc2Vzc2lvbklEOwotICAgIHBhcmFtZXRlcnMucmVx
dWVzdCA9IHJlcXVlc3Q7Ci0gICAgcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7Ci0gICAg
bV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdEb3dubG9hZD4oV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNz
aW9uLCBzdWdnZXN0ZWROYW1lKSk7Ci0jZWxzZQorICAgIH0KKyNlbmRpZgogICAgIGF1dG8gZG93
bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgcmVx
dWVzdCwgc3VnZ2VzdGVkTmFtZSk7CiAgICAgZG93bmxvYWQtPnN0YXJ0KCk7CiAKICAgICBBU1NF
UlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5h
ZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KaW5kZXggN2FiMGJjZGZjZGU2NWZj
MzVmNmE2ZmZkZDdjZTA5NzZiZmRmNWMyYS4uOTRmODg5YTZiZTQyMmUzMGVlNTJiM2RjNjU2N2Y4
MDAyNGY2MzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgc3Rh
dGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQs
IERvd25sb2FkJiBkb3dubG9hZCkKICAgICB9OwogfQogCi12b2lkIERvd25sb2FkOjpzdGFydCgp
Cit2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggYzAwMDQ5YTU3ZTQ5Y2U5ZTM0YzgzODU4
ZDhkMDc1MzNmMGFlMGYzYi4uZTVhYjUyMTdiM2Q5Y2RjZDUwMTE5N2MwNjhiYTkxZTZiZDdlMzQ1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBEb3dubG9hZDo6c3RhcnQo
KQordm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX25z
VVJMRG93bmxvYWQpOwogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRT
b3VwLmNwcAppbmRleCA1NmJiZDAwNDc5ZThjOGJhMGMxMjlhZTMzZWZjNTRlMjYwYjYwYmQ5Li44
NmVmYTZjYjZiZGM0MjM3OTllYzlkYmU0ZGEwOTI0NGM0MTYwZTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25s
b2FkU291cC5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2FsbG93
T3ZlcndyaXRlOwogfTsKIAotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQordm9pZCBEb3dubG9hZDo6
c3RhcnROZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQ2xpZW50KTsKICAg
ICBBU1NFUlQoIW1fcmVzb3VyY2VIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggMTI4NmRlMDJlYWViZWIw
NDcxNTYxMDU1YWFmODNjNTVjMWMyZTg3MC4uMjU0OTUwMmVkODNhYWMyMTQ4ZGFiYmZiZTQxMDVh
OWM1ZDI4NzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODksNyArMTg5LDggQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2Fk
SUQgZG93bmwKICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBt
X3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQogICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNp
ZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpLCAwKTsKIH0KLSNlbHNlCisjZW5k
aWYKKwogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29s
JiBhbGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKQogewogICAgIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7CkBAIC0yMDYsNyArMjA3
LDYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW0KICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVs
bCgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24s
IFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiB9
Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDE1ZmU1NDJjMzA2NGQ4YTEzZTI0MDU3NDk1YjIy
ZjcxZDZlNmJjODIuLjIzMDI2YWRmMDAxNjk0ZTk3YzkwZmNlMmIwMzNjYmRjMzQ0NDY5ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCkBAIC04Miw5ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICB2b2lkIHNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wmIHJlc3VsdCk7Ci0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBi
b29sJiBhbGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKLSNlbmRpZgogICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiN2UzOTNhM2ZjZGIx
OTQyZTA1NTY3ZmY2ZTM4ZjM2N2RlNjA1NDNlLi5jYWI0OWIxMTJjODc0NDRkYjMzYjFjM2Q4NjNh
NzBmMWFlNmYzOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw5ICszMiw3IEBA
IG1lc3NhZ2VzIC0+IERvd25sb2FkUHJveHkgewogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IGxlbmd0aCkKICAgICBTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcg
bWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShTdHJpbmcgZmlsZW5hbWUp
IC0+IChTdHJpbmcgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUsIFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0jZW5kaWYKICAg
ICBEaWRDcmVhdGVEZXN0aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5pc2goKQogICAg
IERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VtZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZGQwODRhNmViZjU4NDQ2NjIzYTYzNzYzNjUxNzc5Y2Y0OWM5NjBk
Yi4uNjcyNTRhYmI5NGFiMDUyNmM0NTgwMGMxOGZjNTUxMzA3NTQ3ZjAwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxMyw2
ICsxMjEzLDggQEAKIAkJODM5OTAyMDIxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZG
MUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgKi87IH07CiAJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM5OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtM
b2FkLmggKi87IH07CiAJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cCAqLzsgfTsKKwkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRkFD
NDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovOyB9OworCQk4M0JG
QUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZBQzQxMUQ5NjEzNjAwMDQz
MzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovOyB9OwogCQk4M0Q0NTRENzFCRTlEM0M0
MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3Jr
TG9hZENsaWVudC5oICovOyB9OwogCQk4NDQ3Nzg1MzE3NkZDQzA4MDBDREM3QkIgLyogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi87IH07CiAJCTg2ODE2MEQwMTg3NjQ1
NTcwMDIxRTc5RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYwQ0YxODc2NDUzNzAwMjFFNzlEIC8q
IFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0gKi87IH07CkBAIC0zMzA4LDYgKzMzMTAsOCBAQAog
CQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0xvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOTkwMUZGMUJF
OUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBOZXR3b3JrTG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkRDQ0I4MUFDNUZE
QjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRv
d25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2JEb3du
bG9hZENsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9h
ZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JGQUM0MTFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkQ2xpZW50Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjgxNjBDRDE4NzYzRDRCMDAyMUU3OUQgLyogV2luZG93U2VydmVy
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzM4LDYgKzU3NDIsOCBAQAogCQkJCTVDMTQy
NzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBjb2NvYSAqLywKIAkJCQk1QzE0MjcwQzFDMjNGODc3MDBE
NDExODMgLyogaW9zICovLAogCQkJCTVDMTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8s
CisJCQkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICov
LAorCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3Bw
ICovLAogCQkJCTVDMTQyNkYzMUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgKi8sCiAJ
CQkJNUMxNDI2RjQxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkLmggKi8sCiAJCQkJNUMxNDI2
RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLywKQEAgLTc2MTIsNiArNzYxOCw3
IEBACiAJCQkJMjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzJDMTg0MDA4QjkwMDA3
MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkE5NzYxMTgwRTAzMUQwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JE
b3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3REQ1QkYxODBEQTdEMzAwODE2
NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJBOTc2
QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUxODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNDksNiArOTE1
Niw3IEBACiAJCQkJMEYwQzM2NUUxOEMxMTBBNTAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTkyREMxMzEyRjhCQUI5MDAxN0FGNjUgLyogTGF5
ZXJUcmVlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY0NTE5NTEwQjU1MDBD
NDhGRkEgLyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4M0JG
QUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRkRFNjVEMTk1NEU4RDUwMEM0OEZGQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8q
IExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTA4NzYzMUQyQzY0MUIw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OGRiZTMzMjgyZmZkYzBlNjgxYTc0NzYyZmQ3MGNiNGVmMTlhMDZlMi4uNzhmMzEyNWFmNzZiYTQx
MWExZjM0ZjRmMWI0MzIwNDMzZTY4MjdlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTA5
LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgPGEgZG93bmxv
YWQ+IGRvZXMgbm90IHN1cHBvcnQgQmxvYiBVUkxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwOTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1
NTM1NTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVu
c2tpcCAvIHJlYmFzZWxpbmUgZXhpc3RpbmcgdGVzdHMgbm93IHRoYXQgPGEgZG93bmxvYWQ+IHN1
cHBvcnRzIEJsb2IgVVJMcy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
c3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3du
bG9hZC1zZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5j
aG9yLWRvd25sb2FkLWFsbG93LWJsb2ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zOgorCisyMDE2LTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKICAgICAgICAgW1dLMl0gYW5jaG9yLmRvd25sb2FkIGF0dHJpYnV0ZSB2YWx1ZSBpcyBpZ25v
cmVkIGJ5IE5FVFdPUktfU0VTU0lPTiBjb2RlIHBhdGgKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjUzMQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAw
MjgzNTU2MjE2OGFmMDc2ZTYyNTEwMmU4YzhiZTA2ZDQ5YzdmYzY3Li5jY2E5OTk5MzI3ZjZkMTBk
N2I5YTVjZGViZmQyYzMzNDVmZjU2ZDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg5NCw5ICs4
OTQsNiBAQCBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtYm9keS1kaXIt
YXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLQogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3Jv
bGxiYXItcGxhY2VtZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGZhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLWFuaW1hdGlvbi1wcm9wZXJ0eS5odG1sIFsgRmFpbHVyZSBdCiAKLSMg
PGEgZG93bmxvYWQ+IGRvZXMgbm90IHN1cHBvcnQgQmxvYnMKLXdlYmtpdC5vcmcvYi8xNTYwOTkg
aHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctYmxvYi5odG1sIFsgRmFp
bHVyZSBdCi0KICMgPGEgZG93bmxvYWQ+IGRvZXMgbm90IGhvbm9yIGNyb3NzLW9yaWdpbiByZXN0
cmljdGlvbnMKIHdlYmtpdC5vcmcvYi8xNTYxMDAgaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNob3It
ZG93bmxvYWQtYmxvY2stY3Jvc3NvcmlnaW4uaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dAppbmRleCBlZWNiYzkyYzIyN2U5YzRjZTc0MGUwYTc4
MjhkNmI2ZmZkMzdjYjBmLi40NGEwOGU2ODQ5MGU1MDhiNjgwMzA5NDA1ZWUwY2FmMzM5MjYxZTRk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBA
CitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIiIKIERvd25sb2FkIHN0
YXJ0ZWQuCi1Eb3dubG9hZCBmYWlsZWQuCi1GYWlsZWQ6IE5TVVJMRXJyb3JEb21haW4sIGNvZGU9
LTEwMDIsIGRlc2NyaXB0aW9uPXVuc3VwcG9ydGVkIFVSTAorRG93bmxvYWQgY29tcGxldGVkLgog
QmxvYiBVUkwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRp
Yy1jbGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFkODI2YWY5N2Q5OGNmM2RkNDI0M2Ji
YWEwMzExMzA2ZTRjYjExOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCB0aGF0IHN5bnRoZXRpYyBjbGlja3Mgb24gYW4g
YW5jaG9yIHdpdGggYSBkb3dubG9hZCBhdHRyaWJ1dGUgYXJlIGlnbm9yZWQuCisKK1RoaXMgdGVz
dCBwYXNzZXMgaWYgeW91IGRvIG5vdCBzZWUgYW55ICdEb3dubG9hZCBzdGFydGVkJyBtZXNzYWdl
IGFib3ZlLgorCitCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRoZXRpYy1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXN5bnRo
ZXRpYy1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NWRiZGJhNmJkZGM3Y2Q1ODZmMjM2NmYxOTEx
ZTBkOWUyYzEyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNrLmh0bWwKQEAgLTAs
MCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IHRoYXQgc3ludGhldGljIGNsaWNrcyBvbiBh
biBhbmNob3Igd2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUgaWdub3JlZC48L3A+Cis8cD4g
VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG8gbm90IHNlZSBhbnkgJ0Rvd25sb2FkIHN0YXJ0ZWQn
IG1lc3NhZ2UgYWJvdmUuPC9wPgorPGEgaWQ9ImJsb2ItdXJsIiBkb3dubG9hZD5CbG9iIFVSTDwv
YT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc3RyaW5nID0gInRl
c3QiOworICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3N0cmluZ10sIHt0eXBlOiAidGV4dC9odG1s
In0pOworICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJsb2ItdXJsIik7
CisgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAg
bGluay5jbGljaygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDEwMCk7Cit9CitydW5UZXN0KCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQt
ZXhwZWN0ZWQudHh0CmluZGV4IGVlY2JjOTJjMjI3ZTljNGNlNzQwZTBhNzgyOGQ2YjZmZmQzN2Ni
MGYuLjQ0YTA4ZTY4NDkwZTUwOGI2ODAzMDk0MDVlZTBjYWYzMzkyNjFlNGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2Fk
LXNldC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
K0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiIgogRG93bmxvYWQgc3Rh
cnRlZC4KLURvd25sb2FkIGZhaWxlZC4KLUZhaWxlZDogTlNVUkxFcnJvckRvbWFpbiwgY29kZT0t
MTAwMiwgZGVzY3JpcHRpb249dW5zdXBwb3J0ZWQgVVJMCitEb3dubG9hZCBjb21wbGV0ZWQuCiBC
bG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9hbmNo
b3ItZG93bmxvYWQtYWxsb3ctYmxvYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLWV4cGVjdGVkLnR4dAppbmRl
eCA3ZjI0MWU0YTE2MmYxMzg1NTZlMzFkZDE0NGU2OWI2YWVhNWMwOWJjLi42ODZjMTFkMWI3ZTdi
YjUxMWZiZjJmMWNiNTcwODFjNjRkNzYxMDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxv
dy1ibG9iLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDExIEBACiBEb3dubG9hZGluZyBVUkwgd2l0
aCBzdWdnZXN0ZWQgZmlsZW5hbWUgImZvby5wZGYiCitEb3dubG9hZCBzdGFydGVkLgorRG93bmxv
YWQgY29tcGxldGVkLgogVGVzdHMgdGhhdCBhIHN1Z2dlc3RlZCBmaWxlbmFtZSBvbiBhIGRvd25s
b2FkIGF0dHJpYnV0ZSBpcyBhbGxvd2VkIGlmIHRoZSBsaW5rIGlzIGEgYmxvYiBVUkwuCiAKIFRo
ZSBzdWdnZXN0ZWQgZmlsZW5hbWUgYXQgdGhlIHRvcCBzaG91bGQgYmUgZm9vLnBkZi4KKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDUyZjAyMmMwNDQ2OGJiNWNmYzQyNmUyY2ZiYzRlNzBkODExOWE2NWYuLjY5Y2Mz
ZjY5ZmEwYjViOWNiMzA0YTQ1M2E2MmNhZjE0NDZjOTc3YjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTMxMiw3ICsxMzEyLDggQEAgaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvZW1wdHkt
YmxvYi1maWxlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NTQ5NSBjb21wb3Np
dGluZy92aXNpYmxlLXJlY3QvYW5pbWF0ZWQtZnJvbS1ub25lLmh0bWwgWyBGYWlsdXJlIFBhc3Mg
XQogCi0jIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9ydCBpbiBXSzEgeWV0LgorIyA8YSBkb3du
bG9hZD4gaXMgbm90IHN1cHBvcnRlZCBpbiBXSzEgeWV0Lgord2Via2l0Lm9yZy9iLzE1NjA2OSBm
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtc3ludGhldGljLWNsaWNr
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0eS9h
bmNob3ItZG93bmxvYWQtYWxsb3ctYmxvYi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTU2
MDY5IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LWRhdGEuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzE1NjA2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1k
b3dubG9hZC1hbGxvdy1zYW1lb3JpZ2luLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMDI3OTgxMDAzMTdiYTkwYjNj
YjZmOGEwOGY0YjViY2ViNGMzNGYyLi5iOTgzMjA1ZDQwZTA1ZWE2NDJiNmM1OWU5MTZhOWMyMmQz
YmRiMWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xODcsOSArMTg3LDEwIEBAIGZhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1hbmltYXRvci1v
dmVybGF5LXNjcm9sbGJhcnMtaG92ZXJlZC5odG1sIFsgU2tpcCBdCiAjIFRoaXMgaGl0LXRlc3Qg
dGVzdCBkb2Vzbid0IHdvcmsgb24gRFJUCiB3ZWJraXQub3JnL2IvMTU2MDg0IGFjY2Vzc2liaWxp
dHkvbWFjL3ZpZGVvLXRhZy1oaXQtdGVzdC5odG1sIFsgU2tpcCBdCiAKLSMgPGEgZG93bmxvYWQ+
IGlzIG5vdCBzdXBwb3J0IGluIFdLMSB5ZXQuCisjIDxhIGRvd25sb2FkPiBpcyBub3Qgc3VwcG9y
dGVkIGluIFdLMSB5ZXQuCiB3ZWJraXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTU2MDY5IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L2FuY2hvci1kb3dubG9hZC1zeW50aGV0aWMtY2xpY2suaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzE1NjA2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2FuY2hvci1kb3dubG9hZC1hbGxvdy1i
bG9iLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgaHR0cC90ZXN0cy9zZWN1cml0
eS9hbmNob3ItZG93bmxvYWQtYWxsb3ctZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTU2MDY5IGh0dHAvdGVzdHMvc2VjdXJpdHkvYW5jaG9yLWRvd25sb2FkLWFsbG93LXNhbWVvcmln
aW4uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA0M2I0NGEyZDk4Njk3MzIxZTcxYmIyMGE2NDdjMmYwYWQ5YmFjNjUxLi40YjdlZGI4
OGY0MjY3NzcwZjE2YzhmYmI5M2ZjYjQ0OTU2YTRjMzFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM4MCwxMSArMTM4MCw2IEBAIHdlYmtpdC5vcmcv
Yi8xNTg4ODkgbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1s
IFsgUGFzcyBGYWlsCiAjIDxyZGFyOi8vcHJvYmxlbS8yNTI3OTE4OT4gTGF5b3V0VGVzdCBodHRw
L3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWlu
LWZyYW1lLmh0bWwgaXMgZmxha3kKIFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLSMgPHJkYXI6Ly9wcm9ibGVtLzI1NTM2MjY2PiBbTWFjXVtpT1NdW05FVFdP
UktfU0VTU0lPTl0gVW5hYmxlIHRvIGRvd25sb2FkIEJMT0IgVVJMcyAoMTU2MTgwKQotWyBTaWVy
cmErIF0gZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBT
a2lwIF0KLVsgU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rv
d25sb2FkLXNldC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5
L2FuY2hvci1kb3dubG9hZC1hbGxvdy1ibG9iLmh0bWwgWyBTa2lwIF0KLQogIyA8cmRhcjovL3By
b2JsZW0vMjU3ODAwMzU+IENTUCBkb2VzIG5vdCBpZ25vcmUgcGF0aHMgZm9yIG1lZGlhIHJlZGly
ZWN0cwogWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZDIuaHRtbCBbIFNraXAgXQogWyBTaWVycmErIF0gaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxs
b3dlZDIuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>