<?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>194325</bug_id>
          
          <creation_ts>2019-02-05 19:15:26 -0800</creation_ts>
          <short_desc>Forward Ad Click Attribution data from HTMLAnchorElement::handleClick() to WebKit::NavigationActionData</short_desc>
          <delta_ts>2019-02-06 14:02:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1502658</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-05 19:15:26 -0800</bug_when>
    <thetext>We should pipe through any Ad Click Attribution data to WebKit::NavigationActionData where we can keep track of it across a complete navigational load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502659</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-05 19:16:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47840283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502666</commentid>
    <comment_count>2</comment_count>
      <attachid>361268</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-05 19:43:21 -0800</bug_when>
    <thetext>Created attachment 361268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503366</commentid>
    <comment_count>3</comment_count>
      <attachid>361268</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-06 09:57:32 -0800</bug_when>
    <thetext>Comment on attachment 361268
Patch

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

&gt; Source/WebCore/loader/AdClickAttribution.h:183
&gt; +    AdClickAttribution attribution { Campaign { campaignId.value() }, Source { sourceRegistrableDomain.value() }, Destination { destinationRegistrableDomain.value() } };

Should probably use WTFMove() more here, e.g. WTFMove(*compaignId).

&gt; Source/WebCore/loader/AdClickAttribution.h:209
&gt; +    return Conversion { data.value(), Priority { priority.value() } };

Ditto about WTFMove().

&gt; Source/WebCore/loader/FrameLoader.cpp:407
&gt; +    loadFrameRequest(WTFMove(frameRequest), triggeringEvent, { }, (m_frame.isMainFrame() ? WTFMove(adClickAttribution) : WTF::nullopt));

parentheses are not needed. Also, why do we need the isMainFrame() check here since you&apos;re already doing it later in loadURL()?

&gt; Source/WebCore/loader/FrameLoader.h:383
&gt; +    void loadURL(FrameLoadRequest&amp;&amp;, const String&amp; referrer, FrameLoadType, Event*, RefPtr&lt;FormState&gt;&amp;&amp;, Optional&lt;AdClickAttribution&gt;&amp;&amp; = WTF::nullopt, CompletionHandler&lt;void()&gt;&amp;&amp; = [] { });

Since everybody should provide a completion handler (AFAIK), I don&apos;t think we should add default parameter values here.

&gt; Source/WebCore/loader/NavigationAction.h:138
&gt; +    Optional&lt;AdClickAttribution&gt; adClickAttribution() { return m_adClickAttribution; };

should return a const Optional&lt;AdClickAttribution&gt;&amp;.

&gt; Source/WebCore/loader/NavigationAction.h:139
&gt; +    void setAdClickAttribution(AdClickAttribution adClickAttribution) { m_adClickAttribution = adClickAttribution; };

Couldn&apos;t this take a AdClickAttribution&amp;&amp; in parameter? Assuming you can WTFMove() at the call site, which I think you can.

&gt; Source/WebKit/Shared/NavigationActionData.h:64
&gt; +    Optional&lt;WebCore::AdClickAttribution&gt; adClickAttribution;

I would do the API::Navigation object initialization on the UIProcess side in the same patch too. It&apos;s just a few more lines and it is still merely about plumbing the value through to the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503367</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 09:59:17 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 361268 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=361268&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/AdClickAttribution.h:183
&gt; &gt; +    AdClickAttribution attribution { Campaign { campaignId.value() }, Source { sourceRegistrableDomain.value() }, Destination { destinationRegistrableDomain.value() } };
&gt; 
&gt; Should probably use WTFMove() more here, e.g. WTFMove(*compaignId).
&gt; 
&gt; &gt; Source/WebCore/loader/AdClickAttribution.h:209
&gt; &gt; +    return Conversion { data.value(), Priority { priority.value() } };
&gt; 
&gt; Ditto about WTFMove().
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:407
&gt; &gt; +    loadFrameRequest(WTFMove(frameRequest), triggeringEvent, { }, (m_frame.isMainFrame() ? WTFMove(adClickAttribution) : WTF::nullopt));
&gt; 
&gt; parentheses are not needed. Also, why do we need the isMainFrame() check
&gt; here since you&apos;re already doing it later in loadURL()?
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.h:383
&gt; &gt; +    void loadURL(FrameLoadRequest&amp;&amp;, const String&amp; referrer, FrameLoadType, Event*, RefPtr&lt;FormState&gt;&amp;&amp;, Optional&lt;AdClickAttribution&gt;&amp;&amp; = WTF::nullopt, CompletionHandler&lt;void()&gt;&amp;&amp; = [] { });
&gt; 
&gt; Since everybody should provide a completion handler (AFAIK), I don&apos;t think
&gt; we should add default parameter values here.
&gt; 
&gt; &gt; Source/WebCore/loader/NavigationAction.h:138
&gt; &gt; +    Optional&lt;AdClickAttribution&gt; adClickAttribution() { return m_adClickAttribution; };
&gt; 
&gt; should return a const Optional&lt;AdClickAttribution&gt;&amp;.
&gt; 
&gt; &gt; Source/WebCore/loader/NavigationAction.h:139
&gt; &gt; +    void setAdClickAttribution(AdClickAttribution adClickAttribution) { m_adClickAttribution = adClickAttribution; };
&gt; 
&gt; Couldn&apos;t this take a AdClickAttribution&amp;&amp; in parameter? Assuming you can
&gt; WTFMove() at the call site, which I think you can.
&gt; 
&gt; &gt; Source/WebKit/Shared/NavigationActionData.h:64
&gt; &gt; +    Optional&lt;WebCore::AdClickAttribution&gt; adClickAttribution;
&gt; 
&gt; I would do the API::Navigation object initialization on the UIProcess side
&gt; in the same patch too. It&apos;s just a few more lines and it is still merely
&gt; about plumbing the value through to the UIProcess.

Thanks, Chris! I&apos;ll have a look at all of these comments. And also figure out what Windows is complaining about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503392</commentid>
    <comment_count>5</comment_count>
      <attachid>361309</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 11:20:00 -0800</bug_when>
    <thetext>Created attachment 361309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503393</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 11:20:56 -0800</bug_when>
    <thetext>Fixed everything but the API::Navigation object initialization. Per Arne had an idea of how to fix the Windows issue. Waiting for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503435</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-06 13:00:40 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; Fixed everything but the API::Navigation object initialization. Per Arne had
&gt; an idea of how to fix the Windows issue. Waiting for EWS.

Why not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503440</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 13:12:54 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to John Wilander from comment #6)
&gt; &gt; Fixed everything but the API::Navigation object initialization. Per Arne had
&gt; &gt; an idea of how to fix the Windows issue. Waiting for EWS.
&gt; 
&gt; Why not?

I wanted to discuss that part with you but also see if I had a fix for the Windows issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503442</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 13:23:22 -0800</bug_when>
    <thetext>I discussed with Chris and we agree next steps fit well in a follow-up patch. Probably a getter on API::Navigation similar to currentRequestIsRedirect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503451</commentid>
    <comment_count>10</comment_count>
      <attachid>361309</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-02-06 13:37:18 -0800</bug_when>
    <thetext>Comment on attachment 361309
Patch

mac-debug&apos;s tree seems red and the test failures on win are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503466</commentid>
    <comment_count>11</comment_count>
      <attachid>361309</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-06 14:02:21 -0800</bug_when>
    <thetext>Comment on attachment 361309
Patch

Clearing flags on attachment: 361309

Committed r241049: &lt;https://trac.webkit.org/changeset/241049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503467</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-06 14:02:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361268</attachid>
            <date>2019-02-05 19:43:21 -0800</date>
            <delta_ts>2019-02-06 11:19:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194325-20190205194320.patch</filename>
            <type>text/plain</type>
            <size>22817</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5NjYyMGM3YzNhOGYy
YmMzMTlmMzcyNmUyYmUxMjA4OTI5NjI5ZS4uOWY1MTRkMzkzOWYzNGMwM2YyZjQ4NTI5OGQyNDQ3
YjYwNmNhOWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTAyLTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZvcndhcmQgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gZGF0YSBmcm9tIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljaygp
IHRvIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDMyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDc4NDAyODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIGp1c3QgZGF0YSBmb3J3YXJkaW5nLiBPbmNlIHRoZSBk
YXRhIGlzIHN0b3JlZCwgSSB3aWxsIGNyZWF0ZQorICAgICAgICB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHF1ZXJ5IGl0LgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAg
ICAqIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
bjo6Q29udmVyc2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbjo6Q29udmVyc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgICAgIEluZnJhc3RydWN0
dXJlIGZvciBJUEMuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkVVJMKToKKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBmb3J3YXJkIHRoZSBv
cHRpb25hbCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gb2JqZWN0CisgICAgICAgICAgICBG
cmFtZUxvYWRlcjo6bG9hZFVSTCgpIGNyZWF0ZXMgdGhlIE5hdmlnYXRpb25BY3Rpb24gb2JqZWN0
IGFuZCBzZXRzIHRoZQorICAgICAgICAgICAgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIG9i
amVjdCBvbiB0aGVyZS4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OmFkQ2xpY2tBdHRyaWJ1dGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjpzZXRBZENsaWNrQXR0cmli
dXRpb24pOgorCiAyMDE5LTAyLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU3RvcCB1c2luZyBibG9iUmVnaXN0cnkgaW4gTmV0d29ya1By
b2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggYzgzZmM1MDUyY2U5MmMyNmNkZDZmNGI0ZTFjODEwZWFjMGIyMTFl
NC4uMzk3MzU0M2E4YzlmMDkxNzVmY2MwMTEwY2M4YzhlMDhiMWM2Y2U5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxOS0wMi0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEgZnJvbSBI
VE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTQzMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3ODQwMjgzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rp
b25EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oOgorICAgICAgICAgICAg
Tm93IGhvbGRzIGFuIG9wdGlvbmFsIFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiBvYmplY3Qu
CisKIDIwMTktMDItMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBTdG9wIHVzaW5nIGJsb2JSZWdpc3RyeSBpbiBOZXR3b3JrUHJvY2Vzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAwNzE4NzBjNDcy
YTA4ZGExMGVmMmI4OTFmYzM4OWNkMGY3YzNlZTMzLi4zN2Q5OGEzM2JjOGJmZGFkZWJkMWRlM2Zh
N2IwYTZkNTEwN2ViYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcApAQCAtNDg4LDEzICs0ODgsMTEgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxl
Q2xpY2soRXZlbnQmIGV2ZW50KQogICAgICAgICBuZXdGcmFtZU9wZW5lclBvbGljeSA9IE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzczsKIAogICAgIGF1dG8gYWRDbGlja0F0dHJpYnV0aW9u
ID0gcGFyc2VBZENsaWNrQXR0cmlidXRpb24oKTsKLSAgICAvLyBGSVhNRTogVGhlIGFkQ2xpY2tB
dHRyaWJ1dGlvbiBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBsb2FkZXIgYW5kIGhhbmRsZWQg
ZG93biB0aGUgcGlwZS4gU2VlCi0gICAgLy8gcmRhcjovL3Byb2JsZW0vNDc2NTAxMTgKICAgICAv
LyBBIG1hdGNoaW5nIGNvbnZlcnNpb24gZXZlbnQgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB0aGUg
Y29tcGxldGUgYWQgY2xpY2sgYXR0cmlidXRpb25VUkwgY2FuIGJlCiAgICAgLy8gY3JlYXRlZC4g
VGh1cywgaXQgc2hvdWxkIGJlIGVtcHR5IGZvciBub3cuCi0gICAgQVNTRVJUX1VOVVNFRChhZENs
aWNrQXR0cmlidXRpb24sICFhZENsaWNrQXR0cmlidXRpb24gfHwgYWRDbGlja0F0dHJpYnV0aW9u
LT51cmwoKS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFhZENsaWNrQXR0cmlidXRpb24gfHwgYWRD
bGlja0F0dHJpYnV0aW9uLT51cmwoKS5pc051bGwoKSk7CiAgICAgCi0gICAgZnJhbWUtPmxvYWRl
cigpLnVybFNlbGVjdGVkKGNvbXBsZXRlZFVSTCwgZWZmZWN0aXZlVGFyZ2V0LCAmZXZlbnQsIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIHNob3VsZFNlbmRSZWZlcnJl
ciwgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSwg
bmV3RnJhbWVPcGVuZXJQb2xpY3ksIGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5m
byk7CisgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGNvbXBsZXRlZFVSTCwgZWZmZWN0
aXZlVGFyZ2V0LCAmZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm8sIHNob3VsZFNlbmRSZWZlcnJlciwgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9Qcm9wYWdhdGUoKSwgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIGRvd25sb2FkQXR0cmli
dXRlLCBzeXN0ZW1QcmV2aWV3SW5mbywgV1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pKTsKIAog
ICAgIHNlbmRQaW5ncyhjb21wbGV0ZWRVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Fk
Q2xpY2tBdHRyaWJ1dGlvbi5oCmluZGV4IGZlMDZhMWJmMmZhZWE4MWEwYWI1NWJhMjY2MDk1YWMz
NDhjNjFjOWMuLmNmM2ZkZjk1ZDc1ZmE5OTc0NmY1OTM1MjM5MGJlN2FlODk3OWI3NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmgKQEAgLTEwOCw2ICsxMDgs
OSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBDb252ZXJzaW9uRGF0YSBkYXRhOwogICAg
ICAgICBQcmlvcml0eVZhbHVlIHByaW9yaXR5OworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFs
PENvbnZlcnNpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIEFkQ2xpY2tBdHRy
aWJ1dGlvbihDYW1wYWlnbiBjYW1wYWlnbiwgY29uc3QgU291cmNlJiBzb3VyY2UsIGNvbnN0IERl
c3RpbmF0aW9uJiBkZXN0aW5hdGlvbikKQEAgLTEyMyw2ICsxMjYsOSBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgVVJMIHJlZmVycmVyKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8V2FsbFRp
bWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWFybGllc3RUaW1lVG9T
ZW5kOyB9OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxB
ZENsaWNrQXR0cmlidXRpb24+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTEzNCw1ICsxNDAsNzMgQEAgcHJpdmF0ZToKICAgICBP
cHRpb25hbDxDb252ZXJzaW9uPiBtX2NvbnZlcnNpb247CiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+
IG1fZWFybGllc3RUaW1lVG9TZW5kOwogfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQWRDbGlja0F0dHJpYnV0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fY2FtcGFpZ24uaWQgPDwgbV9zb3VyY2UucmVnaXN0cmFibGVEb21h
aW4gPDwgbV9kZXN0aW5hdGlvbi5yZWdpc3RyYWJsZURvbWFpbiA8PCBtX3RpbWVPZkFkQ2xpY2sg
PDwgbV9jb252ZXJzaW9uIDw8IG1fZWFybGllc3RUaW1lVG9TZW5kOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uPiBBZENsaWNrQXR0cmli
dXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPENhbXBhaWdu
SWQ+IGNhbXBhaWduSWQ7CisgICAgZGVjb2RlciA+PiBjYW1wYWlnbklkOworICAgIGlmICghY2Ft
cGFpZ25JZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25h
bDxTdHJpbmc+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOworICAgIGRlY29kZXIgPj4gc291cmNl
UmVnaXN0cmFibGVEb21haW47CisgICAgaWYgKCFzb3VyY2VSZWdpc3RyYWJsZURvbWFpbikKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGRl
c3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW47CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJl
Z2lzdHJhYmxlRG9tYWluOworICAgIGlmICghZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbikK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxXYWxsVGlt
ZT4gdGltZU9mQWRDbGljazsKKyAgICBkZWNvZGVyID4+IHRpbWVPZkFkQ2xpY2s7CisgICAgaWYg
KCF0aW1lT2ZBZENsaWNrKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAg
IE9wdGlvbmFsPE9wdGlvbmFsPENvbnZlcnNpb24+PiBjb252ZXJzaW9uOworICAgIGRlY29kZXIg
Pj4gY29udmVyc2lvbjsKKyAgICBpZiAoIWNvbnZlcnNpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBlYXJsaWVz
dFRpbWVUb1NlbmQ7CisgICAgZGVjb2RlciA+PiBlYXJsaWVzdFRpbWVUb1NlbmQ7CisgICAgaWYg
KCFlYXJsaWVzdFRpbWVUb1NlbmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
CisgICAgQWRDbGlja0F0dHJpYnV0aW9uIGF0dHJpYnV0aW9uIHsgQ2FtcGFpZ24geyBjYW1wYWln
bklkLnZhbHVlKCkgfSwgU291cmNlIHsgc291cmNlUmVnaXN0cmFibGVEb21haW4udmFsdWUoKSB9
LCBEZXN0aW5hdGlvbiB7IGRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4udmFsdWUoKSB9IH07
CisgICAgYXR0cmlidXRpb24ubV9jb252ZXJzaW9uID0gV1RGTW92ZSgqY29udmVyc2lvbik7Cisg
ICAgYXR0cmlidXRpb24ubV9lYXJsaWVzdFRpbWVUb1NlbmQgPSBXVEZNb3ZlKCplYXJsaWVzdFRp
bWVUb1NlbmQpOworICAgIAorICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJp
b3JpdHk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxBZENsaWNrQXR0
cmlidXRpb246OkNvbnZlcnNpb24+IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8Q29udmVyc2lvbkRhdGE+IGRh
dGE7CisgICAgZGVjb2RlciA+PiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxQcmlvcml0eVZhbHVlPiBwcmlvcml0
eTsKKyAgICBkZWNvZGVyID4+IHByaW9yaXR5OworICAgIGlmICghcHJpb3JpdHkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIENvbnZlcnNpb24geyBkYXRh
LnZhbHVlKCksIFByaW9yaXR5IHsgcHJpb3JpdHkudmFsdWUoKSB9IH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDFm
NTUyYmQ4ZGNiZjgxZGU3ZTkxMmZlM2E1MmRiMDZmYmE3ZTQ0MTIuLmJmMzNlZThmMmNmZmNhYzA2
YzUwMTMwMTQxYTU2NDA0YTA5MWNjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzgwLDE2ICszODAsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRp
b24oRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgdXJsU2VsZWN0ZWQoV1RGTW92ZShy
ZXF1ZXN0KSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJp
bmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lz
dGVtUHJldmlld0luZm8pCit2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQs
IExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9y
d2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9u
YWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZp
ZXdJbmZvLCBPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb24+JiYgYWRDbGlja0F0dHJpYnV0aW9u
KQogewogICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7CiAgICAg
YXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgp
ID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duOwogCiAgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBv
cGVuZXJQb2xpY3kudmFsdWVPcihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJy
ZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3cpOwotICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QoKm1fZnJhbWUuZG9j
dW1lbnQoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVybCB9LCBw
YXNzZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5l
clBvbGljeSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgaW5pdGlhdGVkQnlNYWluRnJh
bWUsIERvTm90UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBkb3dubG9hZEF0dHJpYnV0
ZSwgc3lzdGVtUHJldmlld0luZm8pLCB0cmlnZ2VyaW5nRXZlbnQpOworICAgIHVybFNlbGVjdGVk
KEZyYW1lTG9hZFJlcXVlc3QoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCB7IHVybCB9LCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgaW5pdGlhdGVkQnlNYWluRnJhbWUsIERvTm90UmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMLCBkb3dubG9hZEF0dHJpYnV0ZSwgc3lzdGVtUHJldmlld0luZm8pLCB0cmln
Z2VyaW5nRXZlbnQsIFdURk1vdmUoYWRDbGlja0F0dHJpYnV0aW9uKSk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OnVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZVJlcXVlc3QsIEV2
ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCit2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBPcHRp
b25hbDxBZENsaWNrQXR0cmlidXRpb24+JiYgYWRDbGlja0F0dHJpYnV0aW9uKQogewogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInVybFNlbGVjdGVkOiBmcmFtZSBsb2FkIHN0YXJ0ZWQgKGZy
YW1lID0gJXAsIG1haW4gPSAlZCkiLCAmbV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpKTsK
IApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKEZyYW1l
TG9hZFJlcXVlc3QmJiBmcmFtZVJlcXVlc3QsIEV2ZW50KiB0cmlnZ2VyaW5nCiAgICAgYWRkSFRU
UE9yaWdpbklmTmVlZGVkKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgb3V0Z29pbmdP
cmlnaW4oKSk7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpOYXZp
Z2F0aW9uKTsKIAotICAgIGxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZVJlcXVlc3QpLCB0
cmlnZ2VyaW5nRXZlbnQsIHsgfSk7CisgICAgbG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1l
UmVxdWVzdCksIHRyaWdnZXJpbmdFdmVudCwgeyB9LCAobV9mcmFtZS5pc01haW5GcmFtZSgpID8g
V1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pIDogV1RGOjpudWxsb3B0KSk7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24p
CkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZy
YW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICBhdXRvIGlu
aXRpYXRlZEJ5TWFpbkZyYW1lID0gbGV4aWNhbEZyYW1lICYmIGxleGljYWxGcmFtZS0+aXNNYWlu
RnJhbWUoKSA/IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93bjsKIAogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpt
X2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
eyB1cmwgfSwgIl9zZWxmIl9zLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6
OlllcywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcywgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIGluaXRpYXRlZEJ5TWFp
bkZyYW1lIH07Ci0gICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCByZWZlcmVyLCBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QsIG51bGxwdHIsIHsgfSwgW10geyB9KTsKKyAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5sb2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1l
TG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9
LCBXVEY6Om51bGxvcHQsIFtdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8
IEVOQUJMRShNSFRNTCkKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dHVwRm9yUmVwbGFjZSgpCiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVu
dCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1
dGlvbj4mJiBhZENsaWNrQXR0cmlidXRpb24pCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgibG9hZEZyYW1lUmVxdWVzdDogZnJhbWUgbG9hZCBzdGFydGVkIChmcmFtZSA9ICVwLCBtYWlu
ID0gJWQpIiwgJm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CiAKQEAgLTEyODcsNyAr
MTI4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmCiAgICAgaWYgKHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKICAgICAgICAgbG9hZFBvc3RSZXF1
ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyLCBsb2FkVHlwZSwgZXZlbnQsIFdURk1vdmUo
Zm9ybVN0YXRlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKLSAgICAg
ICAgbG9hZFVSTChXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciwgbG9hZFR5cGUsIGV2ZW50LCBX
VEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
bG9hZFVSTChXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciwgbG9hZFR5cGUsIGV2ZW50LCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUoYWRDbGlja0F0dHJpYnV0aW9uKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiBzdGF0aWMgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShGcmFtZSYgY3VycmVudEZyYW1l
LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBwcm9wYWdhdGVkUG9saWN5KQpAQCAtMTMyOSw3ICsxMzI5LDcgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6aXNTdG9wTG9hZGluZ0FsbG93ZWQoKSBjb25zdAogICAgIHJldHVy
biBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBQYWdlRGlzbWlzc2FsVHlw
ZTo6Tm9uZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0
JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlw
ZSBuZXdMb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgT3B0aW9uYWw8QWRDbGlja0F0
dHJpYnV0aW9uPiYmIGFkQ2xpY2tBdHRyaWJ1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxv
YWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRlZCAoZnJhbWUgPSAlcCwgbWFpbiA9ICVkKSIsICZtX2Zy
YW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGlzRm9ybVN1Ym1p
c3Npb24gPyBudWxscHRyIDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihlZmZlY3RpdmVGcmFtZU5h
bWUpOwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewog
ICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldEZyYW1lTmFtZSgiX3NlbGYiKTsKLSAgICAgICAg
dGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwg
cmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpLCBjb21wbGV0
aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOworICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVy
KCkubG9hZFVSTChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCByZWZlcnJlciwgbmV3TG9hZFR5
cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUoYWRDbGlja0F0dHJpYnV0aW9u
KSwgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTM3Niw2ICsxMzc2LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChG
cmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IGZyYW1lTG9hZFJlcXVlc3QucmVxdWVzdGVyKCks
IHJlcXVlc3QsIGZyYW1lTG9hZFJlcXVlc3QuaW5pdGlhdGVkQnlNYWluRnJhbWUoKSwgbmV3TG9h
ZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0
ZSgpIH07CiAgICAgYWN0aW9uLnNldExvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KTsKICAgICBhY3Rp
b24uc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChmcmFtZUxvYWRSZXF1ZXN0LmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSk7CisgICAgaWYgKGFkQ2xpY2tBdHRyaWJ1dGlvbiAmJiBtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpCisgICAgICAgIGFjdGlvbi5zZXRBZENsaWNrQXR0cmlidXRpb24oYWRDbGlja0F0dHJp
YnV0aW9uLnZhbHVlKCkpOwogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZWZmZWN0aXZlRnJh
bWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0Fw
cGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKaW5kZXggYWRiYTUwNzkxZTAwM2U4YTg3Yjg1N2ViZDhjYmY4NGExZjA1NGEyNC4uM2Jj
ODM1OWRkNGU0MDgzZDYxNDYyNWRmMzJmNTNkNzQ1MmQwNWNkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBZENsaWNrQXR0cmlidXRpb24uaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgpAQCAtMTE1LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBSZWZQdHI8Rm9y
bVN0YXRlPiYmKTsgLy8gQ2FsbGVkIGJ5IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQb3N0UmVxdWVz
dCBhbmQgbG9hZFVSTC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFs
PEFkQ2xpY2tBdHRyaWJ1dGlvbj4mJiA9IFdURjo6bnVsbG9wdCk7IC8vIENhbGxlZCBieSBzdWJt
aXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRVUkwuCiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmKTsKIApAQCAtMTI1LDcgKzEyNiw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgdm9pZCBjaGFu
Z2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0g
V1RGOjpudWxsb3B0LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVs
bEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVy
UG9saWN5PiA9IFdURjo6bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgT3B0aW9u
YWw8QWRDbGlja0F0dHJpYnV0aW9uPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHN1Ym1p
dEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+ID0geyB9KTsKQEAgLTM3MSw3ICszNzIsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFz
SW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KTsKIAotICAgIHZvaWQg
dXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCopOworICAgIHZvaWQgdXJsU2Vs
ZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1
dGlvbj4mJiA9IFdURjo6bnVsbG9wdCk7CiAKICAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2Fk
ZXIoRG9jdW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8gQ2FsbHMgY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBsb2FkKERvY3VtZW50TG9hZGVyJik7
IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKQEAgLTM3OSw3ICszODAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIE5hdmlnYXRpb25BY3Rpb24mJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUsIFJl
ZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExv
YWRlcgogCiAgICAgdm9pZCBsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBFdmVudCosIFJlZlB0cjxGb3JtU3Rh
dGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBsb2FkVVJMKEZy
YW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSwg
RXZlbnQqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgbG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgT3B0aW9u
YWw8QWRDbGlja0F0dHJpYnV0aW9uPiYmID0gV1RGOjpudWxsb3B0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgPSBbXSB7IH0pOwogCiAgICAgYm9vbCBzaG91bGRSZWxvYWQoY29uc3QgVVJM
JiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggZDNmYmY3ZjRmZGVmOTg2NmI3OTI0ZmVk
YWQ0ZmMwNWRiYWM1NWNkYi4uY2Q0M2RiM2E4ZGFjYzNmOWEyMTYzY2UwODYwM2U2MmZjOTZhMmIx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWRDbGlja0F0dHJpYnV0aW9uLmgi
CiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgpAQCAtMzUsNiArMzYsNyBA
QAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMyw2ICsxMzUsOSBAQCBwdWJsaWM6
CiAgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CiAgICAgdm9pZCBzZXRMb2NrQmFja0Zvcndh
cmRMaXN0KExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkgeyBtX2xvY2tC
YWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0OyB9CiAKKyAgICBPcHRpb25hbDxB
ZENsaWNrQXR0cmlidXRpb24+IGFkQ2xpY2tBdHRyaWJ1dGlvbigpIHsgcmV0dXJuIG1fYWRDbGlj
a0F0dHJpYnV0aW9uOyB9OworICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tB
dHRyaWJ1dGlvbiBhZENsaWNrQXR0cmlidXRpb24pIHsgbV9hZENsaWNrQXR0cmlidXRpb24gPSBh
ZENsaWNrQXR0cmlidXRpb247IH07CisKIHByaXZhdGU6CiAgICAgLy8gRG8gbm90IGFkZCBhIHN0
cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmF0aW5nIGRvY3VtZW50IG9yIGEgc3Vib2JqZWN0
IHRoYXQgaG9sZHMgdGhlCiAgICAgLy8gb3JpZ2luYXRpbmcgZG9jdW1lbnQuIFNlZSBjb21tZW50
IGFib3ZlIHRoZSBjbGFzcyBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtMTUxLDYgKzE1Niw3IEBAIHBy
aXZhdGU6CiAgICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV90YXJnZXRC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnkg
eyBMb2NrSGlzdG9yeTo6Tm8gfTsKICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IG1fbG9ja0JhY2tG
b3J3YXJkTGlzdCB7IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07CisgICAgT3B0aW9uYWw8QWRD
bGlja0F0dHJpYnV0aW9uPiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25B
Y3Rpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmNwcAppbmRleCBiOWU2NjI1OTAxMTM1Mzc4YzM4MDNmNjFlMDVlMTBmZGVjZGNjODkxLi45Njkz
MDhhYmQ3MTkyZWI5NmIyYWVhNzBmZjQxNjIyMzUwNjIzM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHZvaWQg
TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxvY2tIaXN0b3J5KTsKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0obG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3Rvcnk7CisgICAgZW5jb2RlciA8PCBhZENsaWNrQXR0cmlidXRpb247CiB9
CiAKIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTEzOSwxMCArMTQwLDE1IEBAIE9wdGlv
bmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlCiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rv
cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxPcHRpb25h
bDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+PiBhZENsaWNrQXR0cmlidXRpb247CisgICAg
ZGVjb2RlciA+PiBhZENsaWNrQXR0cmlidXRpb247CisgICAgaWYgKCFhZENsaWNrQXR0cmlidXRp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sgV1RGTW92
ZShuYXZpZ2F0aW9uVHlwZSksIG1vZGlmaWVycywgV1RGTW92ZShtb3VzZUJ1dHRvbiksIFdURk1v
dmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpLAogICAgICAgICBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1ZXN0KSwgV1RGTW92ZShzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93bmxvYWRBdHRyaWJ1dGUpLCBXVEZN
b3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpLAogICAgICAgICBXVEZNb3Zl
KCppc1JlZGlyZWN0KSwgKnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiwgKmhhc09wZW5lZEZy
YW1lcywgKm9wZW5lZEJ5RE9NV2l0aE9wZW5lciwgV1RGTW92ZSgqcmVxdWVzdGVyT3JpZ2luKSwK
LSAgICAgICAgV1RGTW92ZSgqdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciksIGxvY2tI
aXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBXVEZNb3ZlKCpjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3RvcnkpIH19OworICAgICAgICBXVEZNb3ZlKCp0YXJnZXRCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSksIFdURk1vdmUoKmFkQ2xpY2tBdHRyaWJ1dGlv
bikgfX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L05hdmlnYXRpb25BY3Rpb25EYXRhLmgKaW5kZXggNjkzYjkxNzhlNGRkZTRlYmJkMTI0MjI2MmQ2
ZTg3NmVhMzY0YzA5Ni4uMGQ5N2VmMzMxNTRjOGI4ZTI1YzFhNDQ3NjVlNGRkZWIwZTQwNDI3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTYwLDYgKzYxLDcgQEAg
c3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhIHsKICAgICBXZWJDb3JlOjpMb2NrSGlzdG9yeSBs
b2NrSGlzdG9yeTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9y
d2FyZExpc3Q7CiAgICAgV1RGOjpTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbj4gYWRDbGlja0F0dHJp
YnV0aW9uOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361309</attachid>
            <date>2019-02-06 11:20:00 -0800</date>
            <delta_ts>2019-02-06 14:02:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194325-20190206111959.patch</filename>
            <type>text/plain</type>
            <size>22737</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5NjYyMGM3YzNhOGYy
YmMzMTlmMzcyNmUyYmUxMjA4OTI5NjI5ZS4uOTU5NjJlMjgwN2Y0MzFlYmNiMTBhOTA0NzA0YzVh
NTdiNTJlZDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTAyLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZvcndhcmQgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gZGF0YSBmcm9tIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljaygp
IHRvIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDMyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDc4NDAyODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBUaGlzIGlzIGp1c3QgZGF0YSBmb3J3YXJkaW5nLiBPbmNlIHRoZSBkYXRh
IGlzIHN0b3JlZCwgSSB3aWxsIGNyZWF0ZQorICAgICAgICB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHF1ZXJ5IGl0LgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAgICAq
IGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRy
aWJ1dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6
Q29udmVyc2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRy
aWJ1dGlvbjo6Q29udmVyc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgICAgIEluZnJhc3RydWN0dXJl
IGZvciBJUEMuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkVVJMKToKKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBmb3J3YXJkIHRoZSBvcHRp
b25hbCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gb2JqZWN0CisgICAgICAgICAgICBGcmFt
ZUxvYWRlcjo6bG9hZFVSTCgpIGNyZWF0ZXMgdGhlIE5hdmlnYXRpb25BY3Rpb24gb2JqZWN0IGFu
ZCBzZXRzIHRoZQorICAgICAgICAgICAgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIG9iamVj
dCBvbiB0aGVyZS4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OmFkQ2xpY2tBdHRyaWJ1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjpzZXRBZENsaWNrQXR0cmlidXRp
b24pOgorCiAyMDE5LTAyLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU3RvcCB1c2luZyBibG9iUmVnaXN0cnkgaW4gTmV0d29ya1Byb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzgzZmM1MDUyY2U5MmMyNmNkZDZmNGI0ZTFjODEwZWFjMGIyMTFlNC4u
NTc3YmY5ODlkZjc0YzQ5NDM4MGM2M2M3YzFmM2Y0M2Y4MjlmNGE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEgZnJvbSBIVE1M
QW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQz
MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3ODQwMjgzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oOgorICAgICAgICAgICAgTm93IGhv
bGRzIGFuIG9wdGlvbmFsIFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiBvYmplY3QuCisKIDIw
MTktMDItMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBTdG9wIHVzaW5nIGJsb2JSZWdpc3RyeSBpbiBOZXR3b3JrUHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAwNzE4NzBjNDcyYTA4ZGEx
MGVmMmI4OTFmYzM4OWNkMGY3YzNlZTMzLi4zN2Q5OGEzM2JjOGJmZGFkZWJkMWRlM2ZhN2IwYTZk
NTEwN2ViYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApA
QCAtNDg4LDEzICs0ODgsMTEgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2so
RXZlbnQmIGV2ZW50KQogICAgICAgICBuZXdGcmFtZU9wZW5lclBvbGljeSA9IE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpTdXBwcmVzczsKIAogICAgIGF1dG8gYWRDbGlja0F0dHJpYnV0aW9uID0gcGFy
c2VBZENsaWNrQXR0cmlidXRpb24oKTsKLSAgICAvLyBGSVhNRTogVGhlIGFkQ2xpY2tBdHRyaWJ1
dGlvbiBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBsb2FkZXIgYW5kIGhhbmRsZWQgZG93biB0
aGUgcGlwZS4gU2VlCi0gICAgLy8gcmRhcjovL3Byb2JsZW0vNDc2NTAxMTgKICAgICAvLyBBIG1h
dGNoaW5nIGNvbnZlcnNpb24gZXZlbnQgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB0aGUgY29tcGxl
dGUgYWQgY2xpY2sgYXR0cmlidXRpb25VUkwgY2FuIGJlCiAgICAgLy8gY3JlYXRlZC4gVGh1cywg
aXQgc2hvdWxkIGJlIGVtcHR5IGZvciBub3cuCi0gICAgQVNTRVJUX1VOVVNFRChhZENsaWNrQXR0
cmlidXRpb24sICFhZENsaWNrQXR0cmlidXRpb24gfHwgYWRDbGlja0F0dHJpYnV0aW9uLT51cmwo
KS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFhZENsaWNrQXR0cmlidXRpb24gfHwgYWRDbGlja0F0
dHJpYnV0aW9uLT51cmwoKS5pc051bGwoKSk7CiAgICAgCi0gICAgZnJhbWUtPmxvYWRlcigpLnVy
bFNlbGVjdGVkKGNvbXBsZXRlZFVSTCwgZWZmZWN0aXZlVGFyZ2V0LCAmZXZlbnQsIExvY2tIaXN0
b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIHNob3VsZFNlbmRSZWZlcnJlciwgZG9j
dW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSwgbmV3RnJh
bWVPcGVuZXJQb2xpY3ksIGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5mbyk7Cisg
ICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGNvbXBsZXRlZFVSTCwgZWZmZWN0aXZlVGFy
Z2V0LCAmZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIHNo
b3VsZFNlbmRSZWZlcnJlciwgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSwgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIGRvd25sb2FkQXR0cmlidXRlLCBz
eXN0ZW1QcmV2aWV3SW5mbywgV1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pKTsKIAogICAgIHNl
bmRQaW5ncyhjb21wbGV0ZWRVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tB
dHRyaWJ1dGlvbi5oCmluZGV4IGZlMDZhMWJmMmZhZWE4MWEwYWI1NWJhMjY2MDk1YWMzNDhjNjFj
OWMuLjM0YWYyZjJkYTU1NzdmYzQ4N2ExNzNkNzlmN2FiNDkzNWI5NGFhYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmgKQEAgLTEwOCw2ICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgICAgIAogICAgICAgICBDb252ZXJzaW9uRGF0YSBkYXRhOwogICAgICAgICBQ
cmlvcml0eVZhbHVlIHByaW9yaXR5OworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbnZlcnNpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
fTsKIAogICAgIEFkQ2xpY2tBdHRyaWJ1dGlvbihDYW1wYWlnbiBjYW1wYWlnbiwgY29uc3QgU291
cmNlJiBzb3VyY2UsIGNvbnN0IERlc3RpbmF0aW9uJiBkZXN0aW5hdGlvbikKQEAgLTEyMyw2ICsx
MjYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlZmVycmVyKCkgY29uc3Q7
CiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWFybGllc3RUaW1lVG9TZW5kOyB9OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb24+IGRlY29kZShEZWNvZGVyJik7
CisKIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTEzNCw1ICsxNDAs
NzMgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxDb252ZXJzaW9uPiBtX2NvbnZlcnNpb247CiAg
ICAgT3B0aW9uYWw8V2FsbFRpbWU+IG1fZWFybGllc3RUaW1lVG9TZW5kOwogfTsKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQWRDbGlja0F0dHJpYnV0aW9uOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY2FtcGFpZ24uaWQgPDwgbV9z
b3VyY2UucmVnaXN0cmFibGVEb21haW4gPDwgbV9kZXN0aW5hdGlvbi5yZWdpc3RyYWJsZURvbWFp
biA8PCBtX3RpbWVPZkFkQ2xpY2sgPDwgbV9jb252ZXJzaW9uIDw8IG1fZWFybGllc3RUaW1lVG9T
ZW5kOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QWRDbGlja0F0dHJp
YnV0aW9uPiBBZENsaWNrQXR0cmlidXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIE9wdGlvbmFsPENhbXBhaWduSWQ+IGNhbXBhaWduSWQ7CisgICAgZGVjb2RlciA+PiBjYW1w
YWlnbklkOworICAgIGlmICghY2FtcGFpZ25JZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOwor
ICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CisgICAgaWYgKCFzb3VyY2VS
ZWdpc3RyYWJsZURvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IGRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW47CisgICAgZGVj
b2RlciA+PiBkZXN0aW5hdGlvblJlZ2lzdHJhYmxlRG9tYWluOworICAgIGlmICghZGVzdGluYXRp
b25SZWdpc3RyYWJsZURvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAK
KyAgICBPcHRpb25hbDxXYWxsVGltZT4gdGltZU9mQWRDbGljazsKKyAgICBkZWNvZGVyID4+IHRp
bWVPZkFkQ2xpY2s7CisgICAgaWYgKCF0aW1lT2ZBZENsaWNrKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPE9wdGlvbmFsPENvbnZlcnNpb24+PiBjb252
ZXJzaW9uOworICAgIGRlY29kZXIgPj4gY29udmVyc2lvbjsKKyAgICBpZiAoIWNvbnZlcnNpb24p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8V2FsbFRpbWU+PiBlYXJsaWVzdFRpbWVUb1NlbmQ7CisgICAgZGVjb2RlciA+PiBlYXJsaWVz
dFRpbWVUb1NlbmQ7CisgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCisgICAgQWRDbGlja0F0dHJpYnV0aW9uIGF0dHJpYnV0aW9u
IHsgQ2FtcGFpZ24geyBXVEZNb3ZlKCpjYW1wYWlnbklkKSB9LCBTb3VyY2UgeyBXVEZNb3ZlKCpz
b3VyY2VSZWdpc3RyYWJsZURvbWFpbikgfSwgRGVzdGluYXRpb24geyBXVEZNb3ZlKCpkZXN0aW5h
dGlvblJlZ2lzdHJhYmxlRG9tYWluKSB9IH07CisgICAgYXR0cmlidXRpb24ubV9jb252ZXJzaW9u
ID0gV1RGTW92ZSgqY29udmVyc2lvbik7CisgICAgYXR0cmlidXRpb24ubV9lYXJsaWVzdFRpbWVU
b1NlbmQgPSBXVEZNb3ZlKCplYXJsaWVzdFRpbWVUb1NlbmQpOworICAgIAorICAgIHJldHVybiBh
dHRyaWJ1dGlvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQWRDbGlja0F0
dHJpYnV0aW9uOjpDb252ZXJzaW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJpb3JpdHk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24+IEFkQ2xpY2tB
dHRyaWJ1dGlvbjo6Q29udmVyc2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
T3B0aW9uYWw8Q29udmVyc2lvbkRhdGE+IGRhdGE7CisgICAgZGVjb2RlciA+PiBkYXRhOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRp
b25hbDxQcmlvcml0eVZhbHVlPiBwcmlvcml0eTsKKyAgICBkZWNvZGVyID4+IHByaW9yaXR5Owor
ICAgIGlmICghcHJpb3JpdHkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisg
ICAgcmV0dXJuIENvbnZlcnNpb24geyBXVEZNb3ZlKCpkYXRhKSwgUHJpb3JpdHkgeyBXVEZNb3Zl
KCpwcmlvcml0eSkgfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxZjU1MmJkOGRjYmY4MWRlN2U5MTJmZTNhNTJk
YjA2ZmJhN2U0NDEyLi5lNTIwZTJiMjUyYTlkYmYzNDllYzIzNTI2MjY3NzNhNzRmNWExMWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4MCwxNiArMzgwLDE2IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1
ZXN0KQogICAgIHVybFNlbGVjdGVkKFdURk1vdmUocmVxdWVzdCksIG51bGxwdHIpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNl
bmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQ
b2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZvKQordm9pZCBGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2Vk
VGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwg
TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJy
ZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBv
cGVuZXJQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGNvbnN0
IFN5c3RlbVByZXZpZXdJbmZvJiBzeXN0ZW1QcmV2aWV3SW5mbywgT3B0aW9uYWw8QWRDbGlja0F0
dHJpYnV0aW9uPiYmIGFkQ2xpY2tBdHRyaWJ1dGlvbikKIHsKICAgICBhdXRvKiBmcmFtZSA9IGxl
eGljYWxGcmFtZUZyb21Db21tb25WTSgpOwogICAgIGF1dG8gaW5pdGlhdGVkQnlNYWluRnJhbWUg
PSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZ
ZXMgOiBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93bjsKIAogICAgIE5ld0ZyYW1lT3BlbmVy
UG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlT3Ioc2hvdWxk
U2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OlN1cHByZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKLSAgICB1cmxTZWxlY3Rl
ZChGcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6OlllcywgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBEb05vdFJlcGxhY2VEb2N1bWVudElm
SmF2YVNjcmlwdFVSTCwgZG93bmxvYWRBdHRyaWJ1dGUsIHN5c3RlbVByZXZpZXdJbmZvKSwgdHJp
Z2dlcmluZ0V2ZW50KTsKKyAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwg
fSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxk
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgbmV3RnJhbWVP
cGVuZXJQb2xpY3ksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGluaXRpYXRlZEJ5TWFp
bkZyYW1lLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwgZG93bmxvYWRBdHRy
aWJ1dGUsIHN5c3RlbVByZXZpZXdJbmZvKSwgdHJpZ2dlcmluZ0V2ZW50LCBXVEZNb3ZlKGFkQ2xp
Y2tBdHRyaWJ1dGlvbikpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQordm9p
ZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lUmVxdWVz
dCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uPiYm
IGFkQ2xpY2tBdHRyaWJ1dGlvbikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ1cmxT
ZWxlY3RlZDogZnJhbWUgbG9hZCBzdGFydGVkIChmcmFtZSA9ICVwLCBtYWluID0gJWQpIiwgJm1f
ZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CiAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0
LCBFdmVudCogdHJpZ2dlcmluZwogICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChmcmFtZVJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2luKCkpOwogICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJ
Zk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbik7CiAKLSAgICBsb2FkRnJhbWVS
ZXF1ZXN0KFdURk1vdmUoZnJhbWVSZXF1ZXN0KSwgdHJpZ2dlcmluZ0V2ZW50LCB7IH0pOworICAg
IGxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZVJlcXVlc3QpLCB0cmlnZ2VyaW5nRXZlbnQs
IHsgfSwgV1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTk4NCw3
ICs5ODQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRgogICAgIGF1dG8gaW5pdGlhdGVkQnlN
YWluRnJhbWUgPSBsZXhpY2FsRnJhbWUgJiYgbGV4aWNhbEZyYW1lLT5pc01haW5GcmFtZSgpID8g
SW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3du
OwogCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1fZnJhbWUuZG9j
dW1lbnQoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVybCB9LCAi
X3NlbGYiX3MsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzLCBTaG91
bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsK
LSAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJk
TGlzdCwgbnVsbHB0ciwgeyB9LCBbXSB7IH0pOworICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmxv
YWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwgRnJhbWVMb2FkVHlwZTo6
UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRyLCB7IH0sIFdURjo6bnVs
bG9wdCwgW10geyB9KTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0dXBGb3JSZXBs
YWNlKCkKICAgICBkZXRhY2hDaGlsZHJlbigpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
RnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIFJl
ZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1l
UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8
Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uPiYmIGFk
Q2xpY2tBdHRyaWJ1dGlvbikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRnJh
bWVSZXF1ZXN0OiBmcmFtZSBsb2FkIHN0YXJ0ZWQgKGZyYW1lID0gJXAsIG1haW4gPSAlZCkiLCAm
bV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpKTsKIApAQCAtMTI4Nyw3ICsxMjg3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVx
dWVzdCwgRXZlbnQqIGV2ZW50LCBSZWYKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQogICAgICAgICBsb2FkUG9zdFJlcXVlc3QoV1RGTW92
ZShyZXF1ZXN0KSwgcmVmZXJyZXIsIGxvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQotICAgICAgICBsb2FkVVJM
KFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyLCBsb2FkVHlwZSwgZXZlbnQsIFdURk1vdmUoZm9y
bVN0YXRlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBsb2FkVVJMKFdU
Rk1vdmUocmVxdWVzdCksIHJlZmVycmVyLCBsb2FkVHlwZSwgZXZlbnQsIFdURk1vdmUoZm9ybVN0
YXRlKSwgV1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJyZW50RnJhbWUsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCkBAIC0xMzI5LDcgKzEzMjksNyBAQCBib29sIEZyYW1l
TG9hZGVyOjppc1N0b3BMb2FkaW5nQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxv
YWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRU
eXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJl
ZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb24+
JiYgYWRDbGlja0F0dHJpYnV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZFVSTDogZnJh
bWUgbG9hZCBzdGFydGVkIChmcmFtZSA9ICVwLCBtYWluID0gJWQpIiwgJm1fZnJhbWUsIG1fZnJh
bWUuaXNNYWluRnJhbWUoKSk7CiAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgcmVmCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gaXNGb3JtU3VibWlzc2lvbiA/IG51
bGxwdHIgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGVmZmVjdGl2ZUZyYW1lTmFtZSk7CiAgICAg
aWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lICE9ICZtX2ZyYW1lKSB7CiAgICAgICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0YXJnZXRGcmFt
ZS0+bG9hZGVyKCkubG9hZFVSTChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCByZWZlcnJlciwg
bmV3TG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGNvbXBsZXRpb25IYW5kbGVy
Q2FsbGVyLnJlbGVhc2UoKSk7CisgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJM
KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgZXZlbnQs
IFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShhZENsaWNrQXR0cmlidXRpb24pLCBjb21wbGV0
aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMzc2LDYgKzEzNzYsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJl
cXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIE5hdmlnYXRp
b25BY3Rpb24gYWN0aW9uIHsgZnJhbWVMb2FkUmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdCwg
ZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBuZXdMb2FkVHlwZSwgaXNG
b3JtU3VibWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCkgfTsKICAg
ICBhY3Rpb24uc2V0TG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpOwogICAgIGFjdGlvbi5zZXRMb2Nr
QmFja0ZvcndhcmRMaXN0KGZyYW1lTG9hZFJlcXVlc3QubG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsK
KyAgICBpZiAoYWRDbGlja0F0dHJpYnV0aW9uICYmIG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgYWN0aW9uLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbihXVEZNb3ZlKCphZENsaWNrQXR0cmli
dXRpb24pKTsKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWVmZmVjdGl2ZUZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2Zy
YW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGFkYmE1MDc5MWUwMDNlOGE4N2I4NTdlYmQ4Y2JmODRhMWYwNTRhMjQuLjJiN2UzM2I3YzJk
OTY3YTZmYjQ4ZjFkODFjZGY0ZWMxOTQ0NmEzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWRD
bGlja0F0dHJpYnV0aW9uLmgiCiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIK
QEAgLTExNSw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFs
bCBmdW5jdGlvbnMgd2hpY2ggc3RhcnQgbG9hZHMuIFdlIGhhdmUgdG9vIG1hbnkuCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcmVyLCBGcmFtZSopOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEZy
YW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4m
Jik7IC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxv
YWRVUkwuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBPcHRpb25hbDxBZENsaWNr
QXR0cmlidXRpb24+JiYgPSBXVEY6Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwg
Y2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIHZvaWQgY2hhbmdlTG9jYXRp
b24oRnJhbWVMb2FkUmVxdWVzdCYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVybFNlbGVj
dGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIExvY2tIaXN0b3J5
LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IFdURjo6bnVs
bG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCks
IGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBM
b2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4g
PSBXVEY6Om51bGxvcHQsIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFsPEFkQ2xp
Y2tBdHRyaWJ1dGlvbj4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFJl
ZjxGb3JtU3VibWlzc2lvbj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiA9IHsgfSk7CkBAIC0zNzEsNyArMzcyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJl
Q29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCk7CiAKLSAgICB2b2lkIHVybFNlbGVj
dGVkKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqKTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKEZy
YW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb24+JiYg
PSBXVEY6Om51bGxvcHQpOwogCiAgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSk7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeQogICAgIHZvaWQgbG9hZChEb2N1bWVudExvYWRlciYpOyAvLyBDYWxs
cyBsb2FkV2l0aERvY3VtZW50TG9hZGVyCkBAIC0zNzksNyArMzgwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBO
YXZpZ2F0aW9uQWN0aW9uJiYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9y
bVN0YXRlPiYmLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiA9IFtdIHsgfSk7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAog
ICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSwgRXZlbnQqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgbG9hZFVSTChGcmFtZUxvYWRS
ZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50Kiwg
UmVmUHRyPEZvcm1TdGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBG
cmFtZUxvYWRUeXBlLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFsPEFkQ2xp
Y2tBdHRyaWJ1dGlvbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGJv
b2wgc2hvdWxkUmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5h
dGlvblVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4
IGQzZmJmN2Y0ZmRlZjk4NjZiNzkyNGZlZGFkNGZjMDVkYmFjNTVjZGIuLjk0OTdlOTgwZjc2NmVm
NDZjZmU0NDgwNGExZTFiODg2N2QzMGRlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uaApAQCAtMjgsNiArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkFkQ2xpY2tBdHRyaWJ1dGlvbi5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0
UG9pbnQuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMzMsNiArMTM1LDkgQEAgcHVibGljOgogICAgIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQog
ICAgIHZvaWQgc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QpIHsgbV9sb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJk
TGlzdDsgfQogCisgICAgY29uc3QgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uPiYgYWRDbGlj
a0F0dHJpYnV0aW9uKCkgeyByZXR1cm4gbV9hZENsaWNrQXR0cmlidXRpb247IH07CisgICAgdm9p
ZCBzZXRBZENsaWNrQXR0cmlidXRpb24oQWRDbGlja0F0dHJpYnV0aW9uJiYgYWRDbGlja0F0dHJp
YnV0aW9uKSB7IG1fYWRDbGlja0F0dHJpYnV0aW9uID0gYWRDbGlja0F0dHJpYnV0aW9uOyB9Owor
CiBwcml2YXRlOgogICAgIC8vIERvIG5vdCBhZGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBv
cmlnaW5hdGluZyBkb2N1bWVudCBvciBhIHN1Ym9iamVjdCB0aGF0IGhvbGRzIHRoZQogICAgIC8v
IG9yaWdpbmF0aW5nIGRvY3VtZW50LiBTZWUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3MgZm9yIG1v
cmUgZGV0YWlscy4KQEAgLTE1MSw2ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cjsKICAgICBMb2NrSGlzdG9yeSBtX2xvY2tIaXN0b3J5IHsgTG9ja0hpc3Rvcnk6Ok5vIH07CiAg
ICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBtX2xvY2tCYWNrRm9yd2FyZExpc3QgeyBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObyB9OworICAgIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1dGlvbj4gbV9hZENs
aWNrQXR0cmlidXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKaW5kZXggYjllNjYyNTkwMTEz
NTM3OGMzODAzZjYxZTA1ZTEwZmRlY2RjYzg5MS4uOTY5MzA4YWJkNzE5MmViOTZiMmFlYTcwZmY0
MTYyMjM1MDYyMzNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlv
bkFjdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rp
b25EYXRhLmNwcApAQCAtNTMsNiArNTMsNyBAQCB2b2lkIE5hdmlnYXRpb25BY3Rpb25EYXRhOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51
bShsb2NrSGlzdG9yeSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxvY2tCYWNrRm9yd2FyZExp
c3QpOwogICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OworICAg
IGVuY29kZXIgPDwgYWRDbGlja0F0dHJpYnV0aW9uOwogfQogCiBPcHRpb25hbDxOYXZpZ2F0aW9u
QWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCkBAIC0xMzksMTAgKzE0MCwxNSBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0
YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAg
IGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6QWRDbGlja0F0dHJp
YnV0aW9uPj4gYWRDbGlja0F0dHJpYnV0aW9uOworICAgIGRlY29kZXIgPj4gYWRDbGlja0F0dHJp
YnV0aW9uOworICAgIGlmICghYWRDbGlja0F0dHJpYnV0aW9uKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCiAgICAgcmV0dXJuIHt7IFdURk1vdmUobmF2aWdhdGlvblR5cGUpLCBtb2Rp
ZmllcnMsIFdURk1vdmUobW91c2VCdXR0b24pLCBXVEZNb3ZlKHN5bnRoZXRpY0NsaWNrVHlwZSks
IFdURk1vdmUoKnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgq
Y2FuSGFuZGxlUmVxdWVzdCksIFdURk1vdmUoc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSks
IFdURk1vdmUoKmRvd25sb2FkQXR0cmlidXRlKSwgV1RGTW92ZShjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzKSwKICAgICAgICAgV1RGTW92ZSgqaXNSZWRpcmVjdCksICp0cmVhdEFz
U2FtZU9yaWdpbk5hdmlnYXRpb24sICpoYXNPcGVuZWRGcmFtZXMsICpvcGVuZWRCeURPTVdpdGhP
cGVuZXIsIFdURk1vdmUoKnJlcXVlc3Rlck9yaWdpbiksCi0gICAgICAgIFdURk1vdmUoKnRhcmdl
dEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgV1RGTW92ZSgqY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB9fTsKKyAgICAg
ICAgV1RGTW92ZSgqdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciksIGxvY2tIaXN0b3J5
LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBXVEZNb3ZlKCpjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkpLCBXVEZNb3ZlKCphZENsaWNrQXR0cmlidXRpb24pIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25B
Y3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
CmluZGV4IDY5M2I5MTc4ZTRkZGU0ZWJiZDEyNDIyNjJkNmU4NzZlYTM2NGMwOTYuLjBkOTdlZjMz
MTU0YzhiOGUyNWMxYTQ0NzY1ZTRkZGViMGU0MDQyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJp
YnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUxvYWRlclR5cGVzLmg+CkBAIC02MCw2ICs2MSw3IEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3Rvcnk7CiAgICAgV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0OwogICAgIFdURjo6U3Ry
aW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpBZENsaWNrQXR0cmlidXRpb24+IGFkQ2xpY2tBdHRyaWJ1dGlvbjsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>