<?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>127255</bug_id>
          
          <creation_ts>2014-01-19 11:30:53 -0800</creation_ts>
          <short_desc>Session API</short_desc>
          <delta_ts>2014-01-22 16:23:57 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hock">mhock</reporter>
          <assigned_to name="Martin Hock">mhock</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969619</commentid>
    <comment_count>0</comment_count>
      <attachid>221592</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-19 11:30:53 -0800</bug_when>
    <thetext>Created attachment 221592
patch

Session API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969621</commentid>
    <comment_count>1</comment_count>
      <attachid>221593</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-19 11:32:41 -0800</bug_when>
    <thetext>Created attachment 221593
fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969627</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-19 11:51:32 -0800</bug_when>
    <thetext>Why does WebCore::Page need a sessionID?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969631</commentid>
    <comment_count>3</comment_count>
      <attachid>221593</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-19 12:28:50 -0800</bug_when>
    <thetext>Comment on attachment 221593
fix typo

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

&gt; Source/WebCore/page/Page.h:421
&gt; +    uint64_t getSessionID() { return m_sessionID; }

WebKit style is to not have a &quot;get&quot; prefix on getters. We use this prefix for functions that return result via an argument, e.g. 

bool getFoobar(Foobar&amp; result);

&gt; Source/WebKit2/UIProcess/API/C/WKSessionRef.h:39
&gt;  WK_EXPORT bool WKSessionGetEphemeral(WKSessionRef session);

As previously commented, this should be WKSessionIsEphemeral, not WKSessionGetEphemeral. The name WKSessionGetEphemeral means that we are getting and returning an ephemeral session.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:107
&gt; +        if (frame()-&gt;page()-&gt;getSessionID())
&gt; +            return *SessionTracker::session(frame()-&gt;page()-&gt;getSessionID());
&gt;  
&gt; +        if (frame()-&gt;settings().privateBrowsingEnabled())
&gt; +            return *SessionTracker::session(SessionTracker::legacyPrivateSessionID);

This is not the right approach. The knowledge about legacy session IDs should be isolated as close to API layer as possible, most of the code should simply use sessions.

Having separate code paths for sessions and for private browsing everywhere we used to check for privateBrowsingEnabled() is very fragile and confusing.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:878
&gt; +    uint64_t m_sessionID;

I wouldn&apos;t duplicate the knowledge in this class, WebCore already knows what session it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969717</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-19 23:04:50 -0800</bug_when>
    <thetext>EWS is too shy to say so already, but mac-wk2 is seeing many crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970431</commentid>
    <comment_count>5</comment_count>
      <attachid>221790</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-21 14:38:28 -0800</bug_when>
    <thetext>Created attachment 221790
more plumbing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970433</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-21 14:40:37 -0800</bug_when>
    <thetext>Attachment 221790 did not pass style-queue:


ERROR: Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970468</commentid>
    <comment_count>7</comment_count>
      <attachid>221803</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-21 16:12:10 -0800</bug_when>
    <thetext>Created attachment 221803
no need to change WebCore + settings fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970539</commentid>
    <comment_count>8</comment_count>
      <attachid>221803</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-21 19:08:00 -0800</bug_when>
    <thetext>Comment on attachment 221803
no need to change WebCore + settings fix

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

This looks pretty much right to me. I&apos;d like to make another pass later when I have a bit more time.

One thing I didn&apos;t see was how we create sessions after NetworkProcess crash and relaunch. Don&apos;t we need to iterate over all sessions and tell NetworkProcess to create them? Is this ever an issue for WebProcess, as well?

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:62
&gt; +    if (m_sessionID) {

Can sessionID be 0?

&gt; Source/WebKit2/Shared/SessionTracker.h:43
&gt; +    // FIXME: getSessionMap()&apos;s returned map does not include default session
&gt;      static const HashMap&lt;uint64_t, std::unique_ptr&lt;WebCore::NetworkStorageSession&gt;&gt;&amp; getSessionMap();

getSessionMap is not a correct name for the function, because it returns the result in a normal way.

As a bigger change, it would be nice to find a way to not expose the map, it should be encapsulated by the tracker. Perhaps it could have a method that applies a functor to all sessions.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2126
&gt; +    if (m_sessionID)

I don&apos;t see m_sessionID initialized anywhere unless setSessionID is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970771</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-22 11:03:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 221803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221803&amp;action=review
&gt; 
&gt; This looks pretty much right to me. I&apos;d like to make another pass later when I have a bit more time.
&gt; 
&gt; One thing I didn&apos;t see was how we create sessions after NetworkProcess crash and relaunch. Don&apos;t we need to iterate over all sessions and tell NetworkProcess to create them? Is this ever an issue for WebProcess, as well?

I think we are OK because we always specify the session ID in the NetworkResourceLoadParameters.  Then, in NetworkResourceLoader::start, we ensure the existence of the RemoteNetworkingContext with that ID.

&gt; &gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:62
&gt; &gt; +    if (m_sessionID) {
&gt; 
&gt; Can sessionID be 0?

Actually, you&apos;re right that it can&apos;t be here.  Internal to WebPage it can be, but not outside of WebPage.  I&apos;ll fix that.

&gt; &gt; Source/WebKit2/Shared/SessionTracker.h:43
&gt; &gt; +    // FIXME: getSessionMap()&apos;s returned map does not include default session
&gt; &gt;      static const HashMap&lt;uint64_t, std::unique_ptr&lt;WebCore::NetworkStorageSession&gt;&gt;&amp; getSessionMap();
&gt; 
&gt; getSessionMap is not a correct name for the function, because it returns the result in a normal way.

OK, I&apos;ll name the internal one staticSessionMap() for now.

&gt; As a bigger change, it would be nice to find a way to not expose the map, it should be encapsulated by the tracker. Perhaps it could have a method that applies a functor to all sessions.

I asked Anders about this and he thought we should just expose the const map.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2126
&gt; &gt; +    if (m_sessionID)
&gt; 
&gt; I don&apos;t see m_sessionID initialized anywhere unless setSessionID is called.

Good catch.  I&apos;ll initialize it in the constructor&apos;s initialization list, as it ought to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970852</commentid>
    <comment_count>10</comment_count>
      <attachid>221900</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-22 13:40:45 -0800</bug_when>
    <thetext>Created attachment 221900
address comments + correct type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970867</commentid>
    <comment_count>11</comment_count>
      <attachid>221900</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-22 14:06:44 -0800</bug_when>
    <thetext>Comment on attachment 221900
address comments + correct type

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

&gt; Source/WebKit2/NetworkProcess/RemoteNetworkingContext.h:48
&gt; +    // FIXME: stop relying on creating sessions on demand to allow for persistent sessions

I don&apos;t think that this is a good place for the FIXME - this is not where the sessions are created, nor where they should be created.

WebKit style is to start sentences with an upper case letter, and to finish with a period.

I&apos;d say something like this (not in this header):

// FIXME: We can create sessions on demand, because we hardcode the fact that all sessions but the default one are ephemeral. We&apos;ll need to create them explicitly once sessions have more configuration options.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:62
&gt; +    NetworkStorageSession* privateSession = SessionTracker::session(m_sessionID);

Why &quot;privateSession&quot;? I think it&apos;s just &quot;session&quot;.

&gt; Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm:65
&gt; +    // Some requests with legacy private browsing mode requested may still be coming shortly after NetworkProcess was told to destroy its session.

This is the case for any session, not just the legacy private browsing one.

&gt; Source/WebKit2/Shared/SessionTracker.cpp:55
&gt; +const HashMap&lt;uint64_t, std::unique_ptr&lt;NetworkStorageSession&gt;&gt;&amp; SessionTracker::sessionMap()
&gt;  {
&gt; -    return sessionMap();
&gt; +    return staticSessionMap();
&gt;  }

I don&apos;t understand why we have both.

&gt; Source/WebKit2/Shared/SessionTracker.h:42
&gt; +    // FIXME: getSessionMap()&apos;s returned map does not include default session

The function name need to be updated here, too.

Also, please add a period.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:120
&gt; +    loadParameters.sessionID = webPage ? webPage-&gt;sessionID() : 0;

This doesn&apos;t look right to me. Won&apos;t we just crash NetworkProcess with a sessionID of 0? Previously, we were able to get privateBrowsingEnabled regardless of anything.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:273
&gt; +    loadParameters.sessionID = webPage ? webPage-&gt;sessionID() : 0;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970873</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-22 14:25:36 -0800</bug_when>
    <thetext>Thanks for your suggestions, they look good. I just wanted to comment on one:

(In reply to comment #11)
&gt; &gt; Source/WebKit2/Shared/SessionTracker.cpp:55
&gt; &gt; +const HashMap&lt;uint64_t, std::unique_ptr&lt;NetworkStorageSession&gt;&gt;&amp; SessionTracker::sessionMap()
&gt; &gt;  {
&gt; &gt; -    return sessionMap();
&gt; &gt; +    return staticSessionMap();
&gt; &gt;  }
&gt; 
&gt; I don&apos;t understand why we have both.

Because we don&apos;t want to expose a non-const HashMap but we do need to use it internally, and due to it being a static object, it needs to be referenced via a function. It&apos;s only used internally so if it&apos;s a bit awkward, it shouldn&apos;t be too problematic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970888</commentid>
    <comment_count>13</comment_count>
      <attachid>221908</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-22 14:54:03 -0800</bug_when>
    <thetext>Created attachment 221908
address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970927</commentid>
    <comment_count>14</comment_count>
      <attachid>221908</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 16:23:55 -0800</bug_when>
    <thetext>Comment on attachment 221908
address comments

Clearing flags on attachment: 221908

Committed r162568: &lt;http://trac.webkit.org/changeset/162568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970928</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 16:23:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221592</attachid>
            <date>2014-01-19 11:30:53 -0800</date>
            <delta_ts>2014-01-19 11:32:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>sessionapi.00.diff</filename>
            <type>text/plain</type>
            <size>7797</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKaW5kZXggMGU1MTc5Ny4uOGFhZmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQx
OCw2ICs0MTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXN0U3BhdGlhbE5hdmlnYXRpb25D
YW5kaWRhdGVDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNh
bmRpZGF0ZXNDb3VudCA9IGNvdW50OyB9CiAgICAgdW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0
aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RTcGF0aWFsTmF2aWdhdGlv
bkNhbmRpZGF0ZXNDb3VudDsgfQogCisgICAgdWludDY0X3QgZ2V0U2Vzc2lvbklEKCkgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25JRCh1aW50NjRfdCBzZXNzaW9u
SUQpIHsgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRHcm91cCgpOwogCkBAIC01NTYsNiArNTU5LDggQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVk
IG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50OwogICAgIHVuc2lnbmVkIG1f
ZnJhbWVzSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudDsKKworICAgIHVpbnQ2NF90IG1fc2Vzc2lv
bklEOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4NDdiNDNjLi5iYjEzOWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjgwLDYgKzY4MCwx
MSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlh
bGl6ZVVJQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvbikKK3sKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFNlc3Npb24oKnRvSW1wbChzZXNzaW9uKSk7Cit9CisKIHZvaWQgV0tQYWdlUnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwo
c2NyaXB0UmVmKS0+c3RyaW5nKCksIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0
LCBjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4
IGEzZTQwNjIuLjIxNmE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVBvbGljeUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlVUlDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLUGFnZVZpc2liaWxpdHlUeXBlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXNzaW9u
UmVmLmg+CiAKICNpZm5kZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRib29sLmg+CkBAIC0y
MDEsNiArMjAyLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW4KIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVBvbGlj
eUNsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50KTsKIAor
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZSwgV0tTZXNzaW9u
UmVmIHNlc3Npb24pOworCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rp
b24pKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19F
WFBPUlQgdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHNjcmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1
bmN0aW9uIGZ1bmN0aW9uKTsKICNpZmRlZiBfX0JMT0NLU19fCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCmluZGV4IGYxZjhmMjcuLmYwZjcwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3Bw
CkBAIC0zMSw2ICszMSwxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1Nlc3Np
b25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCit7CisgICAgUmVmUHRyPEFQ
STo6U2Vzc2lvbj4gc2Vzc2lvbiA9IEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKGlzRXBoZW1lcmFsKTsK
KyAgICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKwogV0tU
eXBlSUQgV0tTZXNzaW9uR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXNz
aW9uOjpBUElUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Nlc3Npb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Np
b25SZWYuaAppbmRleCBmYzBiNWU3Li43YWFjOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5oCkBAIC0zMiw2ICszMiw4IEBACiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCitXS19FWFBPUlQgV0tTZXNzaW9uUmVmIFdLU2Vzc2lvbkNyZWF0ZShib29s
IGlzRXBoZW1lcmFsKTsKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5cGVJRCgp
OwogCiBXS19FWFBPUlQgYm9vbCBXS1Nlc3Npb25HZXRFcGhlbWVyYWwoV0tTZXNzaW9uUmVmIHNl
c3Npb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0
MWJiNzRjLi5lN2RkMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzQxLDYgKzM0MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViCiAKICAgICAv
LyBGSVhNRTogSWYgd2UgZXZlciBleHBvc2UgdGhlIHNlc3Npb24gc3RvcmFnZSBzaXplIGFzIGEg
cHJlZmVyZW5jZSwgd2UgbmVlZCB0byBwYXNzIGl0IGhlcmUuCiAgICAgbV9wcm9jZXNzLT5jb250
ZXh0KCkuc3RvcmFnZU1hbmFnZXIoKS5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShtX3Bh
Z2VJRCwgbV9wcm9jZXNzLT5pc1ZhbGlkKCkgPyBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSA6IDAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9w
YWdlSUQpOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtNDk3LDYgKzQ5
OCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLT5zdGFydCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihB
UEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdl
dElEKCkpLCBtX3BhZ2VJRGdpdCApOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVdlYlBhZ2UoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgzYTJhZTUuLjIzYjYxZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMzMiw2ICszMzIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBh
Z2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKKyAgICB2b2lkIHNldFNlc3Np
b24oQVBJOjpTZXNzaW9uJik7CisKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJRDsgfQogICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vzc2lvbi0+Z2V0SUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQppbmRleCA0NzYyZGU0Li5mZjdhYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTk5LDkgKzk5LDEzIEBAIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoZnJh
bWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCk7CisgICAgaWYgKGZyYW1lKCkpIHsKKyAgICAgICAgaWYgKGZy
YW1lKCktPnBhZ2UoKS0+Z2V0U2Vzc2lvbklEKCkpCisgICAgICAgICAgICByZXR1cm4gKlNlc3Np
b25UcmFja2VyOjpzZXNzaW9uKGZyYW1lKCktPnBhZ2UoKS0+Z2V0U2Vzc2lvbklEKCkpOwogCisg
ICAgICAgIGlmIChmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiAqU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvblRyYWNr
ZXI6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQpOworICAgIH0KICAgICByZXR1cm4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIFdlYkZyYW1lTG9hZGVy
Q2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNsaWVudCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA2ZjA0ZDYzLi40NjJhM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTM2Miw2ICszNjIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5n
TW9kZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2Rl
OyB9CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkKTsKIAorICAgIHZvaWQg
c2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Npb25JRCkgeyBtX3Nlc3Npb25JRCA9IHNlc3Npb25J
RDsgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsgfQorCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgdXBkYXRlUGx1Z2luc0FjdGl2ZUFuZEZvY3VzZWRTdGF0ZSgpOwogICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXM7IH0KQEAgLTg3
Myw2ICs4NzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAK
ICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKIAogICAg
IE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21h
aW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMjFiY2I1Zi4uNDAwZmI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTI1LDYgKzI1LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0Vmlld1N0YXRlKHVuc2lnbmVkIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdT
dGF0ZSkKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUp
CiAKKyAgICBTZXRTZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKQorCiAgICAgU2V0RHJhd3NC
YWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgIFNldERyYXdzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221593</attachid>
            <date>2014-01-19 11:32:41 -0800</date>
            <delta_ts>2014-01-20 10:02:24 -0800</delta_ts>
            <desc>fix typo</desc>
            <filename>sessionapi.00.diff</filename>
            <type>text/plain</type>
            <size>7793</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKaW5kZXggMGU1MTc5Ny4uOGFhZmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQx
OCw2ICs0MTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXN0U3BhdGlhbE5hdmlnYXRpb25D
YW5kaWRhdGVDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNh
bmRpZGF0ZXNDb3VudCA9IGNvdW50OyB9CiAgICAgdW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0
aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RTcGF0aWFsTmF2aWdhdGlv
bkNhbmRpZGF0ZXNDb3VudDsgfQogCisgICAgdWludDY0X3QgZ2V0U2Vzc2lvbklEKCkgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25JRCh1aW50NjRfdCBzZXNzaW9u
SUQpIHsgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRHcm91cCgpOwogCkBAIC01NTYsNiArNTU5LDggQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVk
IG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50OwogICAgIHVuc2lnbmVkIG1f
ZnJhbWVzSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudDsKKworICAgIHVpbnQ2NF90IG1fc2Vzc2lv
bklEOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4NDdiNDNjLi5iYjEzOWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjgwLDYgKzY4MCwx
MSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlh
bGl6ZVVJQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvbikKK3sKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFNlc3Npb24oKnRvSW1wbChzZXNzaW9uKSk7Cit9CisKIHZvaWQgV0tQYWdlUnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwo
c2NyaXB0UmVmKS0+c3RyaW5nKCksIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0
LCBjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4
IGEzZTQwNjIuLjIxNmE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVBvbGljeUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlVUlDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLUGFnZVZpc2liaWxpdHlUeXBlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXNzaW9u
UmVmLmg+CiAKICNpZm5kZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRib29sLmg+CkBAIC0y
MDEsNiArMjAyLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW4KIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVBvbGlj
eUNsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50KTsKIAor
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZSwgV0tTZXNzaW9u
UmVmIHNlc3Npb24pOworCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rp
b24pKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19F
WFBPUlQgdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHNjcmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1
bmN0aW9uIGZ1bmN0aW9uKTsKICNpZmRlZiBfX0JMT0NLU19fCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCmluZGV4IGYxZjhmMjcuLmYwZjcwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3Bw
CkBAIC0zMSw2ICszMSwxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1Nlc3Np
b25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCit7CisgICAgUmVmUHRyPEFQ
STo6U2Vzc2lvbj4gc2Vzc2lvbiA9IEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKGlzRXBoZW1lcmFsKTsK
KyAgICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKwogV0tU
eXBlSUQgV0tTZXNzaW9uR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXNz
aW9uOjpBUElUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Nlc3Npb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Np
b25SZWYuaAppbmRleCBmYzBiNWU3Li43YWFjOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5oCkBAIC0zMiw2ICszMiw4IEBACiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCitXS19FWFBPUlQgV0tTZXNzaW9uUmVmIFdLU2Vzc2lvbkNyZWF0ZShib29s
IGlzRXBoZW1lcmFsKTsKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5cGVJRCgp
OwogCiBXS19FWFBPUlQgYm9vbCBXS1Nlc3Npb25HZXRFcGhlbWVyYWwoV0tTZXNzaW9uUmVmIHNl
c3Npb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0
MWJiNzRjLi40OGQyOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzQxLDYgKzM0MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViCiAKICAgICAv
LyBGSVhNRTogSWYgd2UgZXZlciBleHBvc2UgdGhlIHNlc3Npb24gc3RvcmFnZSBzaXplIGFzIGEg
cHJlZmVyZW5jZSwgd2UgbmVlZCB0byBwYXNzIGl0IGhlcmUuCiAgICAgbV9wcm9jZXNzLT5jb250
ZXh0KCkuc3RvcmFnZU1hbmFnZXIoKS5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShtX3Bh
Z2VJRCwgbV9wcm9jZXNzLT5pc1ZhbGlkKCkgPyBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSA6IDAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9w
YWdlSUQpOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtNDk3LDYgKzQ5
OCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLT5zdGFydCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihB
UEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdl
dElEKCkpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2Vi
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggODNhMmFlNS4uMjNiNjFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzMyLDYgKzMzMiw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJv
Y2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNzaW9uJiwgdWludDY0X3QgcGFnZUlE
KTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIHZvaWQgc2V0U2Vzc2lvbihB
UEk6OlNlc3Npb24mKTsKKwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEOyB9CiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uLT5nZXRJRCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCmluZGV4IDQ3NjJkZTQuLmZmN2FhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtOTksOSArOTksMTMgQEAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gKlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKTsKKyAgICBpZiAoZnJhbWUoKSkgeworICAgICAgICBpZiAoZnJhbWUo
KS0+cGFnZSgpLT5nZXRTZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIHJldHVybiAqU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb24oZnJhbWUoKS0+cGFnZSgpLT5nZXRTZXNzaW9uSUQoKSk7CiAKKyAgICAg
ICAgaWYgKGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7CisgICAgfQogICAgIHJldHVybiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogV2ViRnJhbWVMb2FkZXJDbGll
bnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZm
MDRkNjMuLjQ2MmEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMzYyLDYgKzM2Miw4IEBAIHB1YmxpYzoKICAgICBMYXllckhvc3RpbmdNb2Rl
IGxheWVySG9zdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0K
ICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQpOwogCisgICAgdm9pZCBzZXRT
ZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKSB7IG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOyBt
X3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOyB9CisKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdm9pZCB1cGRhdGVQbHVnaW5zQWN0aXZlQW5kRm9jdXNlZFN0YXRlKCk7CiAgICAgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMoKSBjb25z
dCB7IHJldHVybiBtX3dpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlczsgfQpAQCAtODczLDYg
Kzg3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogICAg
IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklEOwogCiAgICAgT3du
UHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZy
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAyMWJjYjVmLi40MDBmYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUs
NiArMjUsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRW
aWV3U3RhdGUodW5zaWduZWQgdmlld1N0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRl
KQogICAgIFNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKIAor
ICAgIFNldFNlc3Npb25JRCh1aW50NjRfdCBzZXNzaW9uSUQpCisKICAgICBTZXREcmF3c0JhY2tn
cm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAgICAgU2V0RHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQoYm9vbCBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221790</attachid>
            <date>2014-01-21 14:38:28 -0800</date>
            <delta_ts>2014-01-21 16:12:10 -0800</delta_ts>
            <desc>more plumbing</desc>
            <filename>sessionapi.02.diff</filename>
            <type>text/plain</type>
            <size>31023</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMGFhYmQzLi5hYmQwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDEtMjEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBTZXNzaW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0
YWNobWVudC5jZ2k/YnVnaWQ9MTI3MjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2Vzc2lvbklEKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNlc3Npb25JRCk6CisK
IDIwMTQtMDEtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjI0NTIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDhiYTYzOGUuLjc3ODJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMDE4LDYg
KzEwMTgsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTZnb0JhY2tFdgogX19aTjdXZWJDb3JlNFBhZ2U4
Z29Ub0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FTlNfMTNGcmFtZUxvYWRUeXBlRQogX19aTjdXZWJD
b3JlNFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWluaXRHcm91cEV2CitfX1pO
N1dlYkNvcmU0UGFnZTlzZXNzaW9uSURFdgogX19aTjdXZWJDb3JlNFBhZ2VDMUVSTlMwXzExUGFn
ZUNsaWVudHNFCiBfX1pON1dlYkNvcmU0UGFnZUQxRXYKIF9fWk43V2ViQ29yZTRQYXRoMTRhZGRS
b3VuZGVkUmVjdEVSS05TXzlGbG9hdFJlY3RFUktOU185RmxvYXRTaXplRU5TMF8xOVJvdW5kZWRS
ZWN0U3RyYXRlZ3lFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0ZGIzNzdhLi42OWE2MjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTE5MSw2ICsxOTEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRz
JiBwYWdlQ2xpZW50cykKICNlbmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5k
aWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNw
YXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVu
bG9hZEV2ZW50KDApCisgICAgLCBtX3Nlc3Npb25JRCgwKQogewogICAgIEFTU0VSVChtX2VkaXRv
ckNsaWVudCk7CiAKQEAgLTExNjUsNiArMTE2Niw3IEBAIHZvaWQgUGFnZTo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWQoKQogeworICAgIEFTU0VSVCghbV9zZXNzaW9uSUQpOwogICAgIGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIAogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQpAQCAtMTE3OCw2ICsxMTgwLDE0IEBAIHZvaWQgUGFnZTo6
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgdmlld3NbaV0tPnByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAordWludDY0
X3QgUGFnZTo6c2Vzc2lvbklEKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uSUQpCisgICAgICAgIHJl
dHVybiBtX3Nlc3Npb25JRDsKKworICAgIHJldHVybiBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgKyAxOworfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBQYWdlOjpj
aGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IGIyMDgwZDYuLjYwNjI0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zMTcsNiArMzE3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAorICAgIHVpbnQ2NF90IHNlc3Npb25JRCgp
OworICAgIHZvaWQgc2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Npb25JRCkgeyBtX3Nlc3Npb25J
RCA9IHNlc3Npb25JRDsgfQorCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7
CiAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2Vy
OyB9CiAKQEAgLTU2Miw2ICs1NjUsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnJhbWVz
SGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudDsKIAogICAgIFJlZlB0cjxVc2VyQ29udGVudENvbnRy
b2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklE
OwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc1
OGJhYTcuLjVkNTQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNC0wMS0yMSAg
TWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFNlc3Npb24g
QVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9idWdp
ZD0xMjcyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQv
TmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJh
Y2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0U2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwOgorICAgICAgICAoV0tT
ZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRTZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzdGFy
dERvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNC0wMS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MjQ1
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiMWRkNTZhLi4xZmVlNDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24o
dWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVy
YWxJRChzZXNzaW9uSUQpKSB7Ci0gICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0
ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpLmdldCgpOworICAg
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb24oc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAg
ICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0
cyB3aXRoIHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWlu
ZyBzaG9ydGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNl
c3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmMmM0MGY4Li5hNmZhMDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTU5LDEyICs1OSwxMiBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycwogICAgICwgbV9p
ZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKICAgICAsIG1fd2ViUGFnZUlEKHBhcmFt
ZXRlcnMud2ViUGFnZUlEKQogICAgICwgbV93ZWJGcmFtZUlEKHBhcmFtZXRlcnMud2ViRnJhbWVJ
RCkKKyAgICAsIG1fc2Vzc2lvbklEKHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogICAgICwgbV9yZXF1
ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCkKICAgICAsIG1fcHJpb3JpdHkocGFyYW1ldGVycy5wcmlv
cml0eSkKICAgICAsIG1fY29udGVudFNuaWZmaW5nUG9saWN5KHBhcmFtZXRlcnMuY29udGVudFNu
aWZmaW5nUG9saWN5KQogICAgICwgbV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzKHBhcmFtZXRlcnMu
YWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAsIG1fY2xpZW50Q3JlZGVudGlhbFBvbGljeShw
YXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kpCi0gICAgLCBtX2luUHJpdmF0ZUJyb3dz
aW5nTW9kZShwYXJhbWV0ZXJzLmluUHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICAsIG1fc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChwYXJhbWV0ZXJzLnNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgLCBtX2lzTG9hZGluZ01haW5SZXNv
dXJjZShwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlKQogICAgICwgbV9zYW5kYm94RXh0ZW5zaW9u
c0FyZUNvbnN1bWVkKGZhbHNlKQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgcmVmKCk7CiAKICAgICAvLyBGSVhNRSAoTmV0d29ya1By
b2Nlc3MpOiBTZXQgcGxhdGZvcm0gc3BlY2lmaWMgc2V0dGluZ3MuCi0gICAgbV9uZXR3b3JraW5n
Q29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUobV9pblByaXZhdGVCcm93
c2luZ01vZGUsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7Cisg
ICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUo
bV9zZXNzaW9uSUQsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7
CiAKICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBlZWIy
Y2MwLi43YjY5YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTc0LDEyICsxNzQsMTIgQEAgcHJpdmF0ZToK
ICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBt
X3dlYlBhZ2VJRDsKICAgICB1aW50NjRfdCBtX3dlYkZyYW1lSUQ7CisgICAgdWludDY0X3QgbV9z
ZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5OwogICAgIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBtX2NvbnRlbnRTbmlmZmluZ1BvbGljeTsKICAgICBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFscyBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgV2ViQ29y
ZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSBtX2NsaWVudENyZWRlbnRpYWxQb2xpY3k7Ci0gICAg
Ym9vbCBtX2luUHJpdmF0ZUJyb3dzaW5nTW9kZTsKICAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBib29sIG1faXNMb2FkaW5nTWFpblJlc291
cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQuaAppbmRleCA1ZjNiZjcwLi5jZWM0NDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
LmgKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdGVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGUodWludDY0X3Qgc2Vzc2lvbklELCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChzZXNzaW9uSUQs
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIApAQCAtNDUsOCArNDUsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKLSAgICAgICAgOiBtX3ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dCh1aW50NjRfdCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCkKKyAgICAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgICAgICwg
bV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAs
IG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoZmFsc2UpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEKCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGJvb2wgbV9zZXNz
aW9uSUQ7CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3Q7CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMTA1
OWI4OC4uMTRhYzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNTksOCArNTksOCBA
QCBib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDb250ZW50U25pZmZpbmdF
bmFibGVkKCkgY29uc3QKIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vz
c2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKS5nZXQoKTsKKyAgICBpZiAobV9zZXNzaW9uSUQpIHsKKyAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uKG1fc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKHByaXZhdGVTZXNzaW9uKQogICAgICAgICAg
ICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRo
IHByaXZhdGUgYnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9y
dGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24u
CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVs
bCgpKTsKLSAgICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2Vy
OjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7
CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA1N2EwNTcxLi41NGNhYmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC00MSwxMSArNDEsMTEgQEAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
KCkKICAgICA6IGlkZW50aWZpZXIoMCkKICAgICAsIHdlYlBhZ2VJRCgwKQogICAgICwgd2ViRnJh
bWVJRCgwKQorICAgICwgc2Vzc2lvbklEKDApCiAgICAgLCBwcmlvcml0eShSZXNvdXJjZUxvYWRQ
cmlvcml0eVZlcnlMb3cpCiAgICAgLCBjb250ZW50U25pZmZpbmdQb2xpY3koU25pZmZDb250ZW50
KQogICAgICwgYWxsb3dTdG9yZWRDcmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMpCiAgICAgLCBjbGllbnRDcmVkZW50aWFsUG9saWN5KERvTm90QXNrQ2xpZW50Rm9yQW55Q3Jl
ZGVudGlhbHMpCi0gICAgLCBpblByaXZhdGVCcm93c2luZ01vZGUoZmFsc2UpCiAgICAgLCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHRydWUpCiAgICAgLCBpc01haW5S
ZXNvdXJjZShmYWxzZSkKIHsKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHdlYlBhZ2VJRDsK
ICAgICBlbmNvZGVyIDw8IHdlYkZyYW1lSUQ7CisgICAgZW5jb2RlciA8PCBzZXNzaW9uSUQ7CiAg
ICAgZW5jb2RlciA8PCByZXF1ZXN0OwogCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29s
PihyZXF1ZXN0Lmh0dHBCb2R5KCkpOwpAQCAtOTQsNyArOTUsNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNvbnRlbnRTbmlmZmluZ1BvbGljeSk7CiAg
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKGFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShjbGllbnRDcmVkZW50aWFsUG9saWN5KTsKLSAgICBlbmNvZGVyIDw8IGlu
UHJpdmF0ZUJyb3dzaW5nTW9kZTsKICAgICBlbmNvZGVyIDw8IHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZTsKIH0K
QEAgLTExMCw2ICsxMTAsOSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcgogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYkZyYW1lSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZXNzaW9uSUQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yZXF1ZXN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNDEsOCArMTQ0LDYgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBOZXR3b3IKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKHJlc3VsdC5jbGllbnRDcmVkZW50aWFsUG9saWN5KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluUHJpdmF0ZUJyb3dzaW5nTW9kZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IGFjZTA2MzQuLmNiZjQ1MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IHdlYlBhZ2VJRDsKICAg
ICB1aW50NjRfdCB3ZWJGcmFtZUlEOworICAgIHVpbnQ2NF90IHNlc3Npb25JRDsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOyAvLyBDcmVhdGVkIGF1dG9tYXRp
Y2FsbHkgZm9yIHRoZSBzZW5kZXIuCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlc291
cmNlU2FuZGJveEV4dGVuc2lvbjsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2Vu
ZGVyLgpAQCAtNTksNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Q29udGVudFNuaWZm
aW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeTsKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFscyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIFdlYkNvcmU6OkNsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeTsKLSAgICBib29sIGluUHJpdmF0ZUJy
b3dzaW5nTW9kZTsKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3Q7CiAgICAgYm9vbCBpc01haW5SZXNvdXJjZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmNwcAppbmRleCBjZWMzYWEzLi4zYjM4YzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKQEAgLTU5LDkgKzU5LDE3IEBAIGNvbnN0IFN0
cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkKICAgICByZXR1cm4gaWRl
bnRpZmllckJhc2UoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKK05ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KQogewotICAgIHJldHVybiBzZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOworICAgIGlmIChzZXNzaW9uSUQgPT0gZGVmYXVsdFNlc3Npb25JRCkKKyAg
ICAgICAgcmV0dXJuICZOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpOworICAgIHJldHVybiBzZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOworfQorCit2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4gc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoc2Vzc2lvbklEICE9IGRlZmF1bHRTZXNzaW9uSUQp
OworICAgIHNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1vdmUoc2Vzc2lvbik7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OmRlc3Ry
b3lTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25U
cmFja2VyLmgKaW5kZXggNTJjNmUyMC4uODg3NmI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmgKQEAgLTM5LDkgKzM5LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgdWludDY0X3QgZGVmYXVsdFNlc3Npb25JRCA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2
NF90IGxlZ2FjeVByaXZhdGVTZXNzaW9uSUQgPSAyOwogICAgIHN0YXRpYyBib29sIGlzRXBoZW1l
cmFsSUQodWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRy
YWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7IH0KKyAgICAvLyBGSVhNRTogZ2V0U2Vzc2lvbk1hcCgp
J3MgcmV0dXJuZWQgbWFwIGRvZXMgbm90IGluY2x1ZGUgZGVmYXVsdCBzZXNzaW9uCiAgICAgc3Rh
dGljIGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2V0U2Vzc2lvbk1hcCgpOwogICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBzZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCk7CisgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24odWludDY0X3Qg
c2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Pik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDg0N2I0M2MuLmJi
MTM5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC02
ODAsNiArNjgwLDExIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5pbml0aWFsaXplVUlDbGllbnQod2tDbGllbnQpOwogfQogCit2b2lkIFdLUGFnZVNldFNl
c3Npb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU2Vzc2lvblJlZiBzZXNzaW9uKQoreworICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0U2Vzc2lvbigqdG9JbXBsKHNlc3Npb24pKTsKK30KKwogdm9pZCBX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9u
IGNhbGxiYWNrKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgU2NyaXB0VmFsdWVDYWxsYmFjazo6Y3Jl
YXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmgKaW5kZXggYTNlNDA2Mi4uMjE2YThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdl
UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VVSUNsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1Nlc3Npb25SZWYuaD4KIAogI2lmbmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHN0ZGJv
b2wuaD4KQEAgLTIwMSw2ICsyMDIsOCBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbgogV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
V0tQYWdlUG9saWN5Q2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiBj
bGllbnQpOwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFnZVJlZiBwYWdl
LCBXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CisKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bkphdmFT
Y3JpcHRGdW5jdGlvbikoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYsIFdLRXJyb3JSZWYsIHZv
aWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0RnVuY3Rpb24gZnVuY3Rpb24pOwogI2lmZGVmIF9fQkxPQ0tTX18KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5jcHAKaW5kZXggNDRhYTM3
YS4uNGFmMmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U2Vzc2lvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vz
c2lvblJlZi5jcHAKQEAgLTMxLDYgKzMxLDEyIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKK1dLU2Vzc2lvblJlZiBXS1Nlc3Npb25DcmVhdGUoYm9vbCBpc0VwaGVtZXJhbCkKK3sKKyAg
ICBSZWZQdHI8QVBJOjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGUoaXNF
cGhlbWVyYWwpOworICAgIHJldHVybiB0b0FQSShzZXNzaW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworfQorCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQ
SShBUEk6OlNlc3Npb246OkFQSVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLU2Vzc2lvblJlZi5oCmluZGV4IGU0MmQ4YzUuLmE5M2M2YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmgKQEAgLTMyLDYgKzMyLDggQEAK
IGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9SVCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9u
Q3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpOworCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tTZXNzaW9u
R2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBib29sIFdLU2Vzc2lvbklzRXBoZW1lcmFsKFdLU2Vz
c2lvblJlZiBzZXNzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZDIzZGYyNy4uNmQxMWZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTExOCw2ICsxMTgsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2VuZGlmCisKIC8vIFRoaXMg
Y29udHJvbHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2Npbmcu
CiAjZGVmaW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTM0MSw2ICszNDUsNyBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIFdlYgogCiAgICAgLy8gRklYTUU6IElmIHdlIGV2ZXIgZXhwb3NlIHRo
ZSBzZXNzaW9uIHN0b3JhZ2Ugc2l6ZSBhcyBhIHByZWZlcmVuY2UsIHdlIG5lZWQgdG8gcGFzcyBp
dCBoZXJlLgogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobV9wYWdlSUQsIG1fcHJvY2Vzcy0+aXNWYWxpZCgpID8g
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCkgOiAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpOworICAgIHNldFNlc3Npb24oc2Vzc2lvbik7CiB9CiAKIFdlYlBhZ2VQcm94eTo6
fldlYlBhZ2VQcm94eSgpCkBAIC00OTcsNiArNTAyLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0p
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAg
ICBtX3Nlc3Npb24gPSBzZXNzaW9uOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb24uZ2V0SUQoKSksIG1fcGFnZUlEKTsKKworI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHNlc3Npb24uZ2V0SUQoKSkpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzI0MGRjMi4uZmNhMjEw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzMyLDYgKzMz
Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0
ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgQVBJOjpTZXNz
aW9uJiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAor
ICAgIHZvaWQgc2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mKTsKKwogICAgIHVpbnQ2NF90IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLT5nZXRJRCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKaW5kZXggNDUxNjNlMC4uYWNiYmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTEwNSw3ICsxMDUsNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgQ2FjaAogCiAgICAg
Q29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNlTG9h
ZGVyLT5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250
ZW50OwogICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPSByZXNv
dXJjZUxvYWRlci0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSA/IEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0gICAgYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkID0gcmVzb3VyY2VMb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCku
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAKICAgICAvLyBGSVhNRTogU29t
ZSBlbnRpdGllcyBpbiBXZWJDb3JlIHVzZSBXZWJDb3JlJ3MgIkVtcHR5RnJhbWVMb2FkZXJDbGll
bnQiIGluc3RlYWQgb2YgaGF2aW5nIGEgcHJvcGVyIFdlYkZyYW1lTG9hZGVyQ2xpZW50LgogICAg
IC8vIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkbid0IGV4aXN0IGFuZCBldmVyeXRoaW5n
IHNob3VsZCBiZSB1c2luZyBhIFdlYkZyYW1lTG9hZGVyQ2xpZW50LApAQCAtMTE4LDEzICsxMTcs
MTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENhY2gKICAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdl
ID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQg
PSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIGxvYWRQYXJhbWV0ZXJz
LnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXNzaW9uSUQoKSA6
IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0
KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMucHJpb3JpdHkgPSBwcmlvcml0eTsKICAgICBsb2FkUGFy
YW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAg
ICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHM7CiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gV2ViRnJhbWUgdGhlbiB0aGlzIHJlc291
cmNlIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkIHdpdGggdGhlIGNsaWVudC4KICAgICBsb2FkUGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gKHdlYkZyYW1lICYmIHdlYlBhZ2UpID8g
cmVzb3VyY2VMb2FkZXItPmNsaWVudENyZWRlbnRpYWxQb2xpY3koKSA6IERvTm90QXNrQ2xpZW50
Rm9yQW55Q3JlZGVudGlhbHM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaW5Qcml2YXRlQnJvd3NpbmdN
b2RlID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZSA9
IHJlc291cmNlICYmIHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNv
dXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDQ1ZjY4ZGMu
LjA4N2IxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI3MCwx
MiArMjcwLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0CiAgICAgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllciA9IHJlc291cmNlTG9hZElkZW50aWZpZXI7CiAgICAgbG9hZFBhcmFtZXRlcnMu
d2ViUGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBsb2FkUGFy
YW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsK
KyAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+c2Vzc2lvbklEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1
ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLnByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlI
aWdoZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IFNuaWZm
Q29udGVudDsKICAgICBsb2FkUGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzID0gc3Rv
cmVkQ3JlZGVudGlhbHM7CiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9IGNsaWVudENyZWRlbnRpYWxQb2xpY3k7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaW5Qcml2YXRl
QnJvd3NpbmdNb2RlID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5pc1ByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0ID0gY29udGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCgpOwogCiAgICAgZGF0YS5yZXNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCA0NzYyZGU0Li40ZTIyMDZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKICAgICBlbHNlCiAgICAgICAgIGJhc2Ug
PSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotICAgIFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25J
RCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UgKyAnLicgKyBT
dHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kpCkBAIC05OSwxMSArOTksMTEgQEAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4g
KlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKTsKLQorICAgIGlmIChmcmFtZSgpKQorICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQorCiBXZWJG
cmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2Fk
ZXJDbGllbnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAppbmRleCA0YWE5NmNhLi4yNDUwNzQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3Nv
dXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiAgICAgaWYgKFNlc3Np
b25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7
CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU3RyaW5nOjpudW1iZXIoc2Vz
c2lvbklEKSkpOwogfQogCiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDY0YmE1ZTkuLmJjMTk0ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjM0LDgg
KzIzNCw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAg
ICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLm5l
dHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkuaXNQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgcG9saWN5RG93bmxvYWRJ
RCwgcmVxdWVzdCksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBhZ2UoKS0+Y29yZVBhZ2UoKS0+c2Vzc2lvbklE
KCksIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDcxNmVkYmUuLmZmMzM1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxMjEsNiArMjEyMSwxMyBAQCB2b2lkIFdlYlBh
Z2U6OnNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAg
ICAgcGx1Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwog
fQogCit2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRCh1aW50NjRfdCBzZXNzaW9uSUQpCit7Cisg
ICAgLy8gRG8gbm90IHVzZSBzZXNzaW9ucyBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQK
KyAgICBBU1NFUlQoIW1fcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
OworICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7Cit9CisKIHZvaWQgV2ViUGFn
ZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKIHsK
ICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFt
ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDZmMDRkNjMuLjM3NjY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMzYyLDYgKzM2Miw4IEBAIHB1YmxpYzoKICAgICBMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7
IH0KICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQpOwogCisgICAgdm9pZCBz
ZXRTZXNzaW9uSUQodWludDY0X3QpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgdXBk
YXRlUGx1Z2luc0FjdGl2ZUFuZEZvY3VzZWRTdGF0ZSgpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV93aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMjFiY2I1
Zi4uNDAwZmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Vmlld1N0YXRlKHVuc2lnbmVkIHZpZXdTdGF0
ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKICAgICBTZXRMYXllckhvc3RpbmdNb2Rl
KHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAKKyAgICBTZXRTZXNzaW9uSUQodWludDY0X3Qg
c2Vzc2lvbklEKQorCiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5k
KQogICAgIFNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgZHJhd3NUcmFuc3BhcmVu
dEJhY2tncm91bmQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221803</attachid>
            <date>2014-01-21 16:12:10 -0800</date>
            <delta_ts>2014-01-22 13:40:45 -0800</delta_ts>
            <desc>no need to change WebCore + settings fix</desc>
            <filename>sessionapi.03.diff</filename>
            <type>text/plain</type>
            <size>29600</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NThiYWE3Li5iNjY1YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTQtMDEtMjEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBTZXNzaW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAg
ICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbik6CisgICAgICAgICogU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChXS1BhZ2VTZXRTZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5jcHA6Cisg
ICAgICAgIChXS1Nlc3Npb25DcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nl
c3Npb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpz
Y2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3Rv
cmFnZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Np
b25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTQtMDEtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjI0NTIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYjFkZDU2YS4uMWZlZTQ5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHN0YXRp
YyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25J
RCkKIHsKICAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkg
ewotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uID0gU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKS5nZXQoKTsKKyAgICAgICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCk7CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAq
cHJpdmF0ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJy
b3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBO
ZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggZjJjNDBmOC4uYTZmYTAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01OSwxMiArNTks
MTIgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3Qg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMKICAgICAsIG1faWRlbnRpZmllcihwYXJhbWV0
ZXJzLmlkZW50aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2VJRChwYXJhbWV0ZXJzLndlYlBhZ2VJRCkK
ICAgICAsIG1fd2ViRnJhbWVJRChwYXJhbWV0ZXJzLndlYkZyYW1lSUQpCisgICAgLCBtX3Nlc3Np
b25JRChwYXJhbWV0ZXJzLnNlc3Npb25JRCkKICAgICAsIG1fcmVxdWVzdChwYXJhbWV0ZXJzLnJl
cXVlc3QpCiAgICAgLCBtX3ByaW9yaXR5KHBhcmFtZXRlcnMucHJpb3JpdHkpCiAgICAgLCBtX2Nv
bnRlbnRTbmlmZmluZ1BvbGljeShwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSkKICAg
ICAsIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFscyhwYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpCiAgICAgLCBtX2NsaWVudENyZWRlbnRpYWxQb2xpY3kocGFyYW1ldGVycy5jbGllbnRD
cmVkZW50aWFsUG9saWN5KQotICAgICwgbV9pblByaXZhdGVCcm93c2luZ01vZGUocGFyYW1ldGVy
cy5pblByaXZhdGVCcm93c2luZ01vZGUpCiAgICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QocGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KQogICAgICwgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2UocGFyYW1ldGVycy5p
c01haW5SZXNvdXJjZSkKICAgICAsIG1fc2FuZGJveEV4dGVuc2lvbnNBcmVDb25zdW1lZChmYWxz
ZSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIHJlZigpOwogCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogU2V0IHBsYXRm
b3JtIHNwZWNpZmljIHNldHRpbmdzLgotICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1faW5Qcml2YXRlQnJvd3NpbmdNb2RlLCBtX3Nob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOworICAgIG1fbmV0d29ya2luZ0Nv
bnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fc2Vzc2lvbklELCBtX3No
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogCiAgICAgY29uc3VtZVNh
bmRib3hFeHRlbnNpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZWViMmNjMC4uN2I2OWE1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTE3NCwxMiArMTc0LDEyIEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgdWludDY0X3QgbV93ZWJQYWdlSUQ7CiAgICAg
dWludDY0X3QgbV93ZWJGcmFtZUlEOworICAgIHVpbnQ2NF90IG1fc2Vzc2lvbklEOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkUHJpb3JpdHkgbV9wcmlvcml0eTsKICAgICBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3kgbV9jb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHMgbV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIFdlYkNvcmU6OkNsaWVudENyZWRlbnRp
YWxQb2xpY3kgbV9jbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGJvb2wgbV9pblByaXZhdGVC
cm93c2luZ01vZGU7CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3Q7CiAgICAgYm9vbCBtX2lzTG9hZGluZ01haW5SZXNvdXJjZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
LmgKaW5kZXggNWYzYmY3MC4uY2VjNDQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zMyw5ICszMyw5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdGVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlKHVpbnQ2NF90IHNlc3Npb25JRCwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQoc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0KCk7CiAKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QpCi0gICAgICAgIDogbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQodWludDY0X3Qgc2Vzc2lv
bklELCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCisgICAg
ICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICAgICAsIG1fc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLCBtX25lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzKGZhbHNlKQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBib29sIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICBib29sIG1fc2Vzc2lvbklEOwogICAgIGJvb2wg
bV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogCiAjaWYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDEwNTliODguLjE0YWM5YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTU5LDggKzU5LDggQEAgYm9vbCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiAK
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0g
ICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0
KCk7CisgICAgaWYgKG1fc2Vzc2lvbklEKSB7CisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biogcHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihtX3Nlc3Npb25JRCk7
CiAgICAgICAgIGlmIChwcml2YXRlU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiAqcHJpdmF0
ZVNlc3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5n
IG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3Jr
UHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgpAQCAtODcsNyArODcsNyBA
QCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFT
ZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7Ci0gICAgU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJh
c2UoKSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOworICAgIFNlc3Npb25UcmFj
a2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgp
ICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKaW5kZXggNTdhMDU3MS4uNTRjYWJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcApAQCAtNDEsMTEgKzQxLDExIEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycygpCiAgICAgOiBpZGVudGlm
aWVyKDApCiAgICAgLCB3ZWJQYWdlSUQoMCkKICAgICAsIHdlYkZyYW1lSUQoMCkKKyAgICAsIHNl
c3Npb25JRCgwKQogICAgICwgcHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KQog
ICAgICwgY29udGVudFNuaWZmaW5nUG9saWN5KFNuaWZmQ29udGVudCkKICAgICAsIGFsbG93U3Rv
cmVkQ3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAgICwgY2xpZW50
Q3JlZGVudGlhbFBvbGljeShEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzKQotICAgICwg
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKGZhbHNlKQogICAgICwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCh0cnVlKQogICAgICwgaXNNYWluUmVzb3VyY2UoZmFsc2UpCiB7
CkBAIC01Niw2ICs1Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCB3ZWJQYWdlSUQ7CiAgICAgZW5jb2RlciA8PCB3
ZWJGcmFtZUlEOworICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwogICAgIGVuY29kZXIgPDwgcmVx
dWVzdDsKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4ocmVxdWVzdC5odHRwQm9k
eSgpKTsKQEAgLTk0LDcgKzk1LDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShjb250ZW50U25pZmZpbmdQb2xpY3kpOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShhbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2xp
ZW50Q3JlZGVudGlhbFBvbGljeSk7Ci0gICAgZW5jb2RlciA8PCBpblByaXZhdGVCcm93c2luZ01v
ZGU7CiAgICAgZW5jb2RlciA8PCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0OwogICAgIGVuY29kZXIgPDwgaXNNYWluUmVzb3VyY2U7CiB9CkBAIC0xMTAsNiArMTEwLDkg
QEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3IKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC53ZWJGcmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuc2Vzc2lvbklEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTQxLDggKzE0NCw2IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuY2xpZW50
Q3JlZGVudGlhbFBvbGljeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pblByaXZhdGVCcm93c2luZ01vZGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc01haW5SZXNvdXJjZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAppbmRleCBhY2UwNjM0Li5jYmY0NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIg
aWRlbnRpZmllcjsKICAgICB1aW50NjRfdCB3ZWJQYWdlSUQ7CiAgICAgdWludDY0X3Qgd2ViRnJh
bWVJRDsKKyAgICB1aW50NjRfdCBzZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3Q7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2Vu
ZGVyLgogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSByZXNvdXJjZVNhbmRib3hFeHRlbnNp
b247IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KQEAgLTU5LDcgKzYw
LDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50
U25pZmZpbmdQb2xpY3k7CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dTdG9y
ZWRDcmVkZW50aWFsczsKICAgICBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVu
dENyZWRlbnRpYWxQb2xpY3k7Ci0gICAgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGU7CiAgICAg
Ym9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wg
aXNNYWluUmVzb3VyY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5j
cHAKaW5kZXggY2VjM2FhMy4uM2IzOGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuY3BwCkBAIC01OSw5ICs1OSwxNyBAQCBjb25zdCBTdHJpbmcmIFNlc3Npb25UcmFj
a2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpCiAgICAgcmV0dXJuIGlkZW50aWZpZXJCYXNlKCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24qIFNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4g
c2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBpZiAoc2Vzc2lvbklEID09IGRlZmF1bHRTZXNzaW9uSUQpCisgICAgICAgIHJldHVybiAmTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKKyAgICByZXR1cm4g
c2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKK30KKwordm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24pCit7Cisg
ICAgQVNTRVJUKHNlc3Npb25JRCAhPSBkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICBzZXNzaW9uTWFw
KCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptb3ZlKHNl
c3Npb24pOwogfQogCiB2b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbih1aW50NjRf
dCBzZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRy
YWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCmluZGV4IDUy
YzZlMjAuLjg4NzZiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9u
VHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCkBA
IC0zOSw5ICszOSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlZmF1
bHRTZXNzaW9uSUQgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBsZWdhY3lQcml2YXRl
U2Vzc2lvbklEID0gMjsKICAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbElEKHVpbnQ2NF90IHNl
c3Npb25JRCkgeyByZXR1cm4gc2Vzc2lvbklEICE9IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vz
c2lvbklEOyB9CisgICAgLy8gRklYTUU6IGdldFNlc3Npb25NYXAoKSdzIHJldHVybmVkIG1hcCBk
b2VzIG5vdCBpbmNsdWRlIGRlZmF1bHQgc2Vzc2lvbgogICAgIHN0YXRpYyBjb25zdCBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Pj4mIGdldFNlc3Npb25NYXAoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlm
aWVyQmFzZSgpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiYgc2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklE
KTsKKyAgICBzdGF0aWMgdm9pZCBzZXRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4pOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3lTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4NDdiNDNjLi5iYjEzOWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjgwLDYgKzY4MCwxMSBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZVVJ
Q2xpZW50KHdrQ2xpZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvbikKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNl
dFNlc3Npb24oKnRvSW1wbChzZXNzaW9uKSk7Cit9CisKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0
UmVmKS0+c3RyaW5nKCksIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxs
YmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IGEzZTQw
NjIuLjIxNmE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVBvbGljeUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlVUlDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZVZpc2liaWxpdHlUeXBlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXNzaW9uUmVmLmg+
CiAKICNpZm5kZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRib29sLmg+CkBAIC0yMDEsNiAr
MjAyLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VS
ZWYgcGFnZSwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW4KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVu
dEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQ
YWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50KTsKIAorV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZSwgV0tTZXNzaW9uUmVmIHNl
c3Npb24pOworCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24pKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIHNjcmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9u
IGZ1bmN0aW9uKTsKICNpZmRlZiBfX0JMT0NLU19fCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCmluZGV4IDQ0YWEzN2EuLjRhZjJmN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCkBAIC0z
MSw2ICszMSwxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1Nlc3Npb25SZWYg
V0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCit7CisgICAgUmVmUHRyPEFQSTo6U2Vz
c2lvbj4gc2Vzc2lvbiA9IEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKGlzRXBoZW1lcmFsKTsKKyAgICBy
ZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKwogV0tUeXBlSUQg
V0tTZXNzaW9uR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXNzaW9uOjpB
UElUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nl
c3Npb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYu
aAppbmRleCBlNDJkOGM1Li5hOTNjNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLU2Vzc2lvblJlZi5oCkBAIC0zMiw2ICszMiw4IEBACiBleHRlcm4gIkMiIHsKICNl
bmRpZgogCitXS19FWFBPUlQgV0tTZXNzaW9uUmVmIFdLU2Vzc2lvbkNyZWF0ZShib29sIGlzRXBo
ZW1lcmFsKTsKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5cGVJRCgpOwogCiBX
S19FWFBPUlQgYm9vbCBXS1Nlc3Npb25Jc0VwaGVtZXJhbChXS1Nlc3Npb25SZWYgc2Vzc2lvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQyM2RmMjcu
LjZkMTFmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xMTgsNiArMTE4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xzIHdoYXQgc3Ry
YXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmluZSBNRVJHRV9X
SEVFTF9FVkVOVFMgMQogCkBAIC0zNDEsNiArMzQ1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBX
ZWIKIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGV4cG9zZSB0aGUgc2Vzc2lvbiBzdG9yYWdl
IHNpemUgYXMgYSBwcmVmZXJlbmNlLCB3ZSBuZWVkIHRvIHBhc3MgaXQgaGVyZS4KICAgICBtX3By
b2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKG1fcGFnZUlELCBtX3Byb2Nlc3MtPmlzVmFsaWQoKSA/IG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpIDogMCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBz
ZXRTZXNzaW9uKHNlc3Npb24pOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpA
QCAtNDk3LDYgKzUwMiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNzaW9uID0gc2Vz
c2lvbjsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25J
RChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJRCk7CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQorICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uLmdldElEKCkpKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVdlYlBhZ2UoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcyNDBkYzIuLmZjYTIxMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMzMiw2ICszMzIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBh
Z2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKKyAgICB2b2lkIHNldFNlc3Np
b24oQVBJOjpTZXNzaW9uJik7CisKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJRDsgfQogICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vzc2lvbi0+Z2V0SUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDQ1
MTYzZTAuLmYwOTM0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMDUsNyAr
MTA1LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNv
dXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENhY2gKIAogICAgIENvbnRlbnRTbmlmZmluZ1Bv
bGljeSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci0+c2hvdWxkU25pZmZD
b250ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKICAgICBTdG9yZWRD
cmVkZW50aWFscyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9
IHJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpOwogCiAgICAgLy8gRklYTUU6IFNvbWUgZW50aXRpZXMgaW4gV2Vi
Q29yZSB1c2UgV2ViQ29yZSdzICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IiBpbnN0ZWFkIG9mIGhh
dmluZyBhIHByb3BlciBXZWJGcmFtZUxvYWRlckNsaWVudC4KICAgICAvLyBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50IHNob3VsZG4ndCBleGlzdCBhbmQgZXZlcnl0aGluZyBzaG91bGQgYmUgdXNpbmcg
YSBXZWJGcmFtZUxvYWRlckNsaWVudCwKQEAgLTExOCwxMyArMTE3LDEzIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNl
TG9hZGVyLCBDYWNoCiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7
CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJ
RCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJG
cmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQ
YWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QgPSByZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByaW9y
aXR5ID0gcHJpb3JpdHk7CiAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
ID0gY29udGVudFNuaWZmaW5nUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgPSBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIC8vIElmIHRoZXJlIGlz
IG5vIFdlYkZyYW1lIHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUgYXV0aGVudGljYXRlZCB3
aXRoIHRoZSBjbGllbnQuCiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9ICh3ZWJGcmFtZSAmJiB3ZWJQYWdlKSA/IHJlc291cmNlTG9hZGVyLT5jbGllbnRDcmVkZW50
aWFsUG9saWN5KCkgOiBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzOwotICAgIGxvYWRQ
YXJhbWV0ZXJzLmluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7
CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCA9IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2UgPSByZXNvdXJjZSAmJiByZXNvdXJjZS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCA0NWY2OGRjLi5jNjdkZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dAogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdl
LT5wYWdlSUQoKSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklE
ID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVy
cy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5wcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50U25pZmZp
bmdQb2xpY3kgPSBTbmlmZkNvbnRlbnQ7CiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRD
cmVkZW50aWFscyA9IHN0b3JlZENyZWRlbnRpYWxzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVu
dENyZWRlbnRpYWxQb2xpY3kgPSBjbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGxvYWRQYXJh
bWV0ZXJzLmluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IGNvbnRleHQtPnNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAogICAgIGRhdGEucmVzaXplKDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggNDc2MmRl
NC4uMTM2NWUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXJDbGllbnQuaD4KQEAgLTUyLDcgKzUzLDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCkKICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRp
ZmllckJhc2UoKTsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSAr
ICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOworICAgIFNlc3Npb25UcmFja2VyOjpz
ZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9s
aWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC05OSwx
MSArMTAwLDExIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihT
ZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCk7Ci0KKyAgICBpZiAoZnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbih3ZWJGcmFtZUxvYWRl
ckNsaWVudCgpLT53ZWJGcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICByZXR1cm4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KKwogV2Vi
RnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9h
ZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggNGFhOTZjYS4uMjQ1MDc0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogICAgIGlmIChTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
ZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkp
OworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNl
c3Npb25JRCkpKTsKIH0KIAogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2NGJhNWU5Li5jNDlhNDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTIzNCw4
ICsyMzQsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAg
ICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5u
ZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLmlzUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTdGFydERvd25sb2FkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHBvbGljeURvd25sb2Fk
SUQsIHJlcXVlc3QpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChwYWdlKCktPnNlc3Npb25JRCgpLCBwb2xpY3lE
b3dubG9hZElELCByZXF1ZXN0KSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3
MTZlZGJlLi4xYzE5YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0yMTIxLDYgKzIxMjEsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZXRMYXll
ckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBsdWdpblZp
ZXctPnNldExheWVySG9zdGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAordWludDY0
X3QgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZXNzaW9uSUQpCisg
ICAgICAgIHJldHVybiBtX3Nlc3Npb25JRDsKKworICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQgOiBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25JRDsKK30KKwogdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9h
ZElEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZy
YW1lKGZyYW1lSUQpOwpAQCAtMjQyMyw3ICsyNDMxLDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGlu
Z3Muc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmxvY2FsU3RvcmFnZUVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dFhTU0F1ZGl0b3JFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6eHNzQXVkaXRvckVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpmcmFtZUZsYXR0ZW5pbmdFbmFibGVkS2V5KCkpKTsKLSAgICBzZXR0aW5ncy5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSk7CisgICAgaWYgKG1fc2Vzc2lvbklEKQor
ICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFNlc3Npb25UcmFja2Vy
Ojppc0VwaGVtZXJhbElEKG1fc2Vzc2lvbklEKSk7CisgICAgZWxzZQorICAgICAgICBzZXR0aW5n
cy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGlu
Z3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmRldmVsb3BlckV4dHJhc0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkS2V5KCkp
KTsKICAgICBzZXR0aW5ncy5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZXh0QXJlYXNBcmVSZXNpemFibGVLZXkoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNmYw
NGQ2My4uY2NmMDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xNzksNiArMTc5LDggQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6UGFnZSog
Y29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KICAgICB1aW50NjRfdCBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHVpbnQ2NF90IHNlc3Npb25J
RCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Npb25JRCkgeyBt
X3Nlc3Npb25JRCA9IHNlc3Npb25JRDsgfQogCiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U2l6ZTsgfQpAQCAtODczLDYgKzg3NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAg
IHVpbnQ2NF90IG1fc2Vzc2lvbklEOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyMWJj
YjVmLi40MDBmYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRWaWV3U3RhdGUodW5zaWduZWQgdmlld1N0
YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlKQogICAgIFNldExheWVySG9zdGluZ01v
ZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKIAorICAgIFNldFNlc3Npb25JRCh1aW50NjRf
dCBzZXNzaW9uSUQpCisKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91
bmQpCiAgICAgU2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCBkcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221900</attachid>
            <date>2014-01-22 13:40:45 -0800</date>
            <delta_ts>2014-01-22 14:54:03 -0800</delta_ts>
            <desc>address comments + correct type</desc>
            <filename>sessionapi.04a.diff</filename>
            <type>text/plain</type>
            <size>32466</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxYWE2NzliLi4zNDA2YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDEtMjIgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBTZXNzaW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAg
ICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lvbk1hcCk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OnNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lv
bik6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRTZXNzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLU2Vzc2lvblJlZi5jcHA6CisgICAgICAgIChXS1Nlc3Npb25DcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTQtMDEtMjIgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggMzItYml0IGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGIxZGQ1NmEuLjFmZWU0OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCiBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRf
dCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKFNlc3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lv
biA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkuZ2V0KCk7CisgICAgICAgIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbihzZXNzaW9uSUQpOwogICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24pCiAgICAgICAgICAg
ICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGgg
cHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNob3J0
bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGYyYzQwZjguLmE2ZmEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTksMTIgKzU5LDEyIEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzCiAgICAgLCBtX2lkZW50aWZp
ZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQogICAgICwgbV93ZWJQYWdlSUQocGFyYW1ldGVycy53
ZWJQYWdlSUQpCiAgICAgLCBtX3dlYkZyYW1lSUQocGFyYW1ldGVycy53ZWJGcmFtZUlEKQorICAg
ICwgbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX3JlcXVlc3QocGFy
YW1ldGVycy5yZXF1ZXN0KQogICAgICwgbV9wcmlvcml0eShwYXJhbWV0ZXJzLnByaW9yaXR5KQog
ICAgICwgbV9jb250ZW50U25pZmZpbmdQb2xpY3kocGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQ
b2xpY3kpCiAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHMocGFyYW1ldGVycy5hbGxvd1N0
b3JlZENyZWRlbnRpYWxzKQogICAgICwgbV9jbGllbnRDcmVkZW50aWFsUG9saWN5KHBhcmFtZXRl
cnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSkKLSAgICAsIG1faW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KHBhcmFtZXRlcnMuaW5Qcml2YXRlQnJvd3NpbmdNb2RlKQogICAgICwgbV9zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICAsIG1faXNMb2FkaW5nTWFpblJlc291cmNlKHBh
cmFtZXRlcnMuaXNNYWluUmVzb3VyY2UpCiAgICAgLCBtX3NhbmRib3hFeHRlbnNpb25zQXJlQ29u
c3VtZWQoZmFsc2UpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICByZWYoKTsKIAogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFNldCBwbGF0Zm9ybSBzcGVjaWZpYyBzZXR0aW5ncy4KLSAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2luUHJpdmF0ZUJyb3dzaW5nTW9k
ZSwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKKyAgICBtX25l
dHdvcmtpbmdDb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX3Nlc3Np
b25JRCwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKIAogICAg
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGVlYjJjYzAuLjdi
NjlhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fd2ViUGFn
ZUlEOwogICAgIHVpbnQ2NF90IG1fd2ViRnJhbWVJRDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25J
RDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiAgICAgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5IG1fY29udGVudFNuaWZmaW5nUG9saWN5OwogICAgIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBXZWJDb3JlOjpDbGll
bnRDcmVkZW50aWFsUG9saWN5IG1fY2xpZW50Q3JlZGVudGlhbFBvbGljeTsKLSAgICBib29sIG1f
aW5Qcml2YXRlQnJvd3NpbmdNb2RlOwogICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oCmluZGV4IDVmM2JmNzAuLjUzODU0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaApAQCAt
MzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVh
dGUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ+IGNyZWF0ZSh1aW50NjRfdCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KHNlc3Npb25JRCwgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpOwogICAgIH0KICAgICB2aXJ0dWFs
IH5SZW1vdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCkBAIC00NSw4ICs0NSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdDsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0KQotICAgICAgICA6IG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKQorICAgIC8vIEZJWE1FOiBzdG9wIHJlbHlpbmcgb24gY3Jl
YXRpbmcgc2Vzc2lvbnMgb24gZGVtYW5kIHRvIGFsbG93IGZvciBwZXJzaXN0ZW50IHNlc3Npb25z
CisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQodWludDY0X3Qgc2Vzc2lvbklELCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCisgICAgICAgIDogbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQogICAgICAgICAsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLCBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGZh
bHNlKQpAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdWludDY0X3QgaW5p
dGlhdGluZ1BhZ2VJRCgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBib29sIG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1fc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAxMDU5Yjg4Li43NThiY2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCkBAIC01OSwxNSArNTksMTEgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiAKIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9u
KCkgY29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0KCk7Ci0g
ICAgICAgIGlmIChwcml2YXRlU2Vzc2lvbikKLSAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNl
c3Npb247Ci0gICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1v
ZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJv
Y2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgotICAgICAgICAvLyBGSVhNRTog
RmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUgcmlnb3Jv
dXNseS4KLSAgICAgICAgTE9HX0VSUk9SKCJQcml2YXRlIGJyb3dzaW5nIHdhcyByZXF1ZXN0ZWQs
IGJ1dCB0aGVyZSB3YXMgbm8gc2Vzc2lvbiBmb3IgaXQuIFBsZWFzZSBmaWxlIGEgYnVnIHVubGVz
cyB5b3UganVzdCBkaXNhYmxlZCBwcml2YXRlIGJyb3dzaW5nLCBpbiB3aGljaCBjYXNlIGl0J3Mg
YW4gZXhwZWN0ZWQgcmFjZS4iKTsKLSAgICB9Ci0KKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24q
IHByaXZhdGVTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24obV9zZXNzaW9uSUQpOwor
ICAgIGlmIChwcml2YXRlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsK
KyAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGggbGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgbW9kZSBy
ZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFmdGVyIE5ldHdvcmtQcm9jZXNz
IHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCisgICAgTE9HX0VSUk9SKCJQcml2YXRl
IGJyb3dzaW5nIHdhcyByZXF1ZXN0ZWQsIGJ1dCB0aGVyZSB3YXMgbm8gc2Vzc2lvbiBmb3IgaXQu
IFBsZWFzZSBmaWxlIGEgYnVnIHVubGVzcyB5b3UganVzdCBkaXNhYmxlZCBwcml2YXRlIGJyb3dz
aW5nLCBpbiB3aGljaCBjYXNlIGl0J3MgYW4gZXhwZWN0ZWQgcmFjZS4iKTsKICAgICByZXR1cm4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAt
ODcsNyArODMsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7
Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOworICAg
IFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVu
dGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggNTdhMDU3MS4uNTRjYWJmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNDEsMTEgKzQxLDExIEBAIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycygpCiAg
ICAgOiBpZGVudGlmaWVyKDApCiAgICAgLCB3ZWJQYWdlSUQoMCkKICAgICAsIHdlYkZyYW1lSUQo
MCkKKyAgICAsIHNlc3Npb25JRCgwKQogICAgICwgcHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3Jp
dHlWZXJ5TG93KQogICAgICwgY29udGVudFNuaWZmaW5nUG9saWN5KFNuaWZmQ29udGVudCkKICAg
ICAsIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQog
ICAgICwgY2xpZW50Q3JlZGVudGlhbFBvbGljeShEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRp
YWxzKQotICAgICwgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKGZhbHNlKQogICAgICwgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCh0cnVlKQogICAgICwgaXNNYWluUmVzb3Vy
Y2UoZmFsc2UpCiB7CkBAIC01Niw2ICs1Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCB3ZWJQYWdlSUQ7CiAgICAg
ZW5jb2RlciA8PCB3ZWJGcmFtZUlEOworICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwogICAgIGVu
Y29kZXIgPDwgcmVxdWVzdDsKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4ocmVx
dWVzdC5odHRwQm9keSgpKTsKQEAgLTk0LDcgKzk1LDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIuZW5jb2RlRW51bShjb250ZW50U25pZmZpbmdQb2xpY3kpOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShhbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0oY2xpZW50Q3JlZGVudGlhbFBvbGljeSk7Ci0gICAgZW5jb2RlciA8PCBpblByaXZh
dGVCcm93c2luZ01vZGU7CiAgICAgZW5jb2RlciA8PCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0OwogICAgIGVuY29kZXIgPDwgaXNNYWluUmVzb3VyY2U7CiB9CkBAIC0x
MTAsNiArMTEwLDkgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3IKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC53ZWJGcmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2Vzc2lvbklEKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTQxLDggKzE0NCw2IEBAIGJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0
d29yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShy
ZXN1bHQuY2xpZW50Q3JlZGVudGlhbFBvbGljeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pblByaXZhdGVCcm93c2luZ01vZGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc01haW5SZXNvdXJjZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBhY2UwNjM0Li5jYmY0NTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICB1aW50NjRfdCB3ZWJQYWdlSUQ7CiAgICAgdWlu
dDY0X3Qgd2ViRnJhbWVJRDsKKyAgICB1aW50NjRfdCBzZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5
IGZvciB0aGUgc2VuZGVyLgogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSByZXNvdXJjZVNh
bmRib3hFeHRlbnNpb247IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4K
QEAgLTU5LDcgKzYwLDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1Bv
bGljeSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHMgYWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3k7Ci0gICAgYm9vbCBpblByaXZhdGVCcm93c2lu
Z01vZGU7CiAgICAgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
OwogICAgIGJvb2wgaXNNYWluUmVzb3VyY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNz
aW9uVHJhY2tlci5jcHAKaW5kZXggY2VjM2FhMy4uYmFhZmY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgp
CitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4+JiBzdGF0aWNTZXNzaW9uTWFwKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCkBAIC00OSw5ICs0OSw5IEBAIHN0YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkK
ICAgICByZXR1cm4gYmFzZTsKIH0KIAotY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBTZXNzaW9uVHJhY2tlcjo6Z2V0U2Vzc2lv
bk1hcCgpCitjb25zdCBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPj4mIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uTWFwKCkKIHsKLSAgICByZXR1
cm4gc2Vzc2lvbk1hcCgpOworICAgIHJldHVybiBzdGF0aWNTZXNzaW9uTWFwKCk7CiB9CiAKIGNv
bnN0IFN0cmluZyYgU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkKQEAgLTU5LDE2
ICs1OSwyNCBAQCBjb25zdCBTdHJpbmcmIFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFz
ZSgpCiAgICAgcmV0dXJuIGlkZW50aWZpZXJCYXNlKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbih1aW50NjRfdCBz
ZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24qIFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
KHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gc2Vzc2lvbk1hcCgpLmFkZChzZXNz
aW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoc2Vzc2lvbklEID09IGRl
ZmF1bHRTZXNzaW9uSUQpCisgICAgICAgIHJldHVybiAmTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKKyAgICByZXR1cm4gc3RhdGljU2Vzc2lvbk1hcCgpLmFk
ZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKK30KKwordm9pZCBT
ZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24pCit7CisgICAgQVNTRVJUKHNlc3Np
b25JRCAhPSBkZWZhdWx0U2Vzc2lvbklEKTsKKyAgICBzdGF0aWNTZXNzaW9uTWFwKCkuYWRkKHNl
c3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptb3ZlKHNlc3Npb24pOwog
fQogCiB2b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHNlc3Npb25NYXAoKS5y
ZW1vdmUoc2Vzc2lvbklEKTsKKyAgICBzdGF0aWNTZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25J
RCk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNz
aW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKaW5k
ZXggNTJjNmUyMC4uNGZmMGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmgKQEAgLTM5LDkgKzM5LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qg
ZGVmYXVsdFNlc3Npb25JRCA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGxlZ2FjeVBy
aXZhdGVTZXNzaW9uSUQgPSAyOwogICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsSUQodWludDY0
X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gU2Vzc2lvblRyYWNrZXI6OmRlZmF1
bHRTZXNzaW9uSUQ7IH0KLSAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnZXRTZXNzaW9uTWFw
KCk7CisgICAgLy8gRklYTUU6IGdldFNlc3Npb25NYXAoKSdzIHJldHVybmVkIG1hcCBkb2VzIG5v
dCBpbmNsdWRlIGRlZmF1bHQgc2Vzc2lvbgorICAgIHN0YXRpYyBjb25zdCBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHNl
c3Npb25NYXAoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFzZSgp
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPiYgc2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3lTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SWRlbnRp
ZmllckJhc2UoY29uc3QgU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAppbmRleCA4NDdiNDNjLi5iYjEzOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjgwLDYgKzY4MCwxMSBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiB3a0NsaWVudAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZVVJQ2xpZW50KHdr
Q2xpZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1Nlc3Npb25SZWYgc2Vzc2lvbikKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFNlc3Npb24o
KnRvSW1wbChzZXNzaW9uKSk7Cit9CisKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3Ry
aW5nKCksIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IGEzZTQwNjIuLjIxNmE4
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTQxLDYgKzQx
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tQYWdlVUlDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVZpc2li
aWxpdHlUeXBlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXNzaW9uUmVmLmg+CiAKICNpZm5k
ZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRib29sLmg+CkBAIC0yMDEsNiArMjAyLDggQEAg
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSwg
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW4KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqIGNs
aWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50KTsKIAorV0tfRVhQT1JUIHZvaWQg
V0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZSwgV0tTZXNzaW9uUmVmIHNlc3Npb24pOwor
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24pKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHNj
cmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGZ1bmN0aW9u
KTsKICNpZmRlZiBfX0JMT0NLU19fCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Nlc3Npb25SZWYuY3BwCmluZGV4IDQ0YWEzN2EuLjRhZjJmN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCkBAIC0zMSw2ICszMSwx
MiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1Nlc3Npb25SZWYgV0tTZXNzaW9u
Q3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCit7CisgICAgUmVmUHRyPEFQSTo6U2Vzc2lvbj4gc2Vz
c2lvbiA9IEFQSTo6U2Vzc2lvbjo6Y3JlYXRlKGlzRXBoZW1lcmFsKTsKKyAgICByZXR1cm4gdG9B
UEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKwogV0tUeXBlSUQgV0tTZXNzaW9u
R2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXNzaW9uOjpBUElUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuaAppbmRleCBl
NDJkOGM1Li5hOTNjNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tTZXNzaW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U2Vzc2lvblJlZi5oCkBAIC0zMiw2ICszMiw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitX
S19FWFBPUlQgV0tTZXNzaW9uUmVmIFdLU2Vzc2lvbkNyZWF0ZShib29sIGlzRXBoZW1lcmFsKTsK
KwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQg
Ym9vbCBXS1Nlc3Npb25Jc0VwaGVtZXJhbChXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQyM2RmMjcuLjZkMTFmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTgsNiAr
MTE4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xzIHdoYXQgc3RyYXRlZ3kgd2Ug
dXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmluZSBNRVJHRV9XSEVFTF9FVkVO
VFMgMQogCkBAIC0zNDEsNiArMzQ1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWIKIAogICAg
IC8vIEZJWE1FOiBJZiB3ZSBldmVyIGV4cG9zZSB0aGUgc2Vzc2lvbiBzdG9yYWdlIHNpemUgYXMg
YSBwcmVmZXJlbmNlLCB3ZSBuZWVkIHRvIHBhc3MgaXQgaGVyZS4KICAgICBtX3Byb2Nlc3MtPmNv
bnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG1f
cGFnZUlELCBtX3Byb2Nlc3MtPmlzVmFsaWQoKSA/IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpIDog
MCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBzZXRTZXNzaW9u
KHNlc3Npb24pOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtNDk3LDYg
KzUwMiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lv
bihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9u
LmdldElEKCkpLCBtX3BhZ2VJRCk7CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAg
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uLmdldElE
KCkpKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2Uo
KQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDcyNDBkYzIuLmZjYTIxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTMzMiw2ICszMzIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQ
cm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAg
ICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKKyAgICB2b2lkIHNldFNlc3Npb24oQVBJOjpT
ZXNzaW9uJik7CisKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
RDsgfQogICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi0+
Z2V0SUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDQ1MTYzZTAuLmYw
OTM0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMDUsNyArMTA1LDYgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRl
ciogcmVzb3VyY2VMb2FkZXIsIENhY2gKIAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250
ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci0+c2hvdWxkU25pZmZDb250ZW50KCkg
PyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKICAgICBTdG9yZWRDcmVkZW50aWFs
cyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHJlc291cmNl
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOwogCiAgICAgLy8gRklYTUU6IFNvbWUgZW50aXRpZXMgaW4gV2ViQ29yZSB1c2Ug
V2ViQ29yZSdzICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IiBpbnN0ZWFkIG9mIGhhdmluZyBhIHBy
b3BlciBXZWJGcmFtZUxvYWRlckNsaWVudC4KICAgICAvLyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
IHNob3VsZG4ndCBleGlzdCBhbmQgZXZlcnl0aGluZyBzaG91bGQgYmUgdXNpbmcgYSBXZWJGcmFt
ZUxvYWRlckNsaWVudCwKQEAgLTExOCwxMyArMTE3LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBD
YWNoCiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgbG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsK
ICAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJh
bWVJRCgpIDogMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXNv
dXJjZUxvYWRlci0+cmVxdWVzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByaW9yaXR5ID0gcHJp
b3JpdHk7CiAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gY29udGVu
dFNuaWZmaW5nUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlh
bHMgPSBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIC8vIElmIHRoZXJlIGlzIG5vIFdlYkZy
YW1lIHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUgYXV0aGVudGljYXRlZCB3aXRoIHRoZSBj
bGllbnQuCiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9ICh3ZWJG
cmFtZSAmJiB3ZWJQYWdlKSA/IHJlc291cmNlTG9hZGVyLT5jbGllbnRDcmVkZW50aWFsUG9saWN5
KCkgOiBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzOwotICAgIGxvYWRQYXJhbWV0ZXJz
LmluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgbG9hZFBhcmFtZXRl
cnMuaXNNYWluUmVzb3VyY2UgPSByZXNvdXJjZSAmJiByZXNvdXJjZS0+dHlwZSgpID09IENhY2hl
ZFJlc291cmNlOjpNYWluUmVzb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCA0NWY2OGRjLi5jNjdkZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dAog
ICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRJZGVudGlmaWVyOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQo
KSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJh
bWUtPmZyYW1lSUQoKSA6IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFn
ZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0
ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5wcmlvcml0eSA9IFJlc291cmNlTG9hZFBy
aW9yaXR5SGlnaGVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kg
PSBTbmlmZkNvbnRlbnQ7CiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFs
cyA9IHN0b3JlZENyZWRlbnRpYWxzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRp
YWxQb2xpY3kgPSBjbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGxvYWRQYXJhbWV0ZXJzLmlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IGNvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QoKTsKIAogICAgIGRhdGEucmVzaXplKDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggNDc2MmRlNC4uNmI1OWFj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJDbGllbnQuaD4KQEAgLTUyLDcgKzUzLDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKICAg
ICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2Uo
KTsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcuJyArIFN0
cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9u
KHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxs
Q29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC02Miw3ICs2Myw3IEBA
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9y
QWxsQ29udGV4dHMoSFRUUENvb2tpZUFjCiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgZm9yIChj
b25zdCBhdXRvJiBzZXNzaW9uIDogU2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKS52YWx1
ZXMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvbiA6IFNlc3Npb25UcmFja2VyOjpz
ZXNzaW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24pCiAgICAgICAgICAg
ICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi0+Y29va2llU3RvcmFnZSgpLmdl
dCgpLCBwb2xpY3kpOwogICAgIH0KQEAgLTk5LDExICsxMDAsMTEgQEAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gKlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKTsKLQorICAgIGlmIChmcmFtZSgpKQorICAgICAgICByZXR1cm4gKlNlc3Npb25U
cmFja2VyOjpzZXNzaW9uKHdlYkZyYW1lTG9hZGVyQ2xpZW50KCktPndlYkZyYW1lKCktPnBhZ2Uo
KS0+c2Vzc2lvbklEKCkpOwogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpOwogfQorCiBXZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAogewogICAgIGlm
ICghZnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmNwcAppbmRleCA0YWE5NmNhLi4yNDUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50
NjRfdCBzZXNzaW9uSUQpCiAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNl
c3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSkpOwogfQogCiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IDY0YmE1ZTkuLmM0OWE0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjM0LDggKzIzNCw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0
YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VT
ZXNzaW9uKCkuaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2Fk
KHBhZ2UoKS0+c2Vzc2lvbklEKCksIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNhNmI5OWIuLjY2ZGVlOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIyMyw2ICsyMjMs
NyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZQogCiBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICA6IG1fcGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lvbklEKDApCiAgICAgLCBtX3ZpZXdT
aXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2hhc1NlZW5QbHVnaW4oZmFsc2UpCiAg
ICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNlKQpAQCAtMjEyMSw2ICsyMTIyLDE0IEBAIHZvaWQg
V2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2RlKQog
ICAgICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9k
ZSk7CiB9CiAKK3VpbnQ2NF90IFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0Cit7CisgICAgaWYg
KG1fc2Vzc2lvbklEKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CisKKyAgICByZXR1cm4g
bV9wYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IFNlc3Npb25UcmFj
a2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNz
aW9uSUQ7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwg
dWludDY0X3QgZG93bmxvYWRJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKQEAgLTI0MjMsNyArMjQzMiwxMCBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsK
ICAgICBzZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0
aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgc2V0
dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAgIGlm
IChtX3Nlc3Npb25JRCkKKyAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVyYWxJRChtX3Nlc3Npb25JRCkpOworICAgIGVsc2UK
KyAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXko
KSkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkS2V5
KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxl
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFzQXJl
UmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGZlMzAxYjEuLjg3MzVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc5LDYgKzE3OSw4IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9
CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1
aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlc3Npb25JRCh1aW50NjRf
dCBzZXNzaW9uSUQpIHsgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7IH0KIAogICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NpemU7IH0KQEAgLTg3Myw2ICs4NzUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKICAgICB1aW50NjRf
dCBtX3BhZ2VJRDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKIAogICAgIE93blB0cjxXZWJD
b3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMjFiY2I1Zi4uNDAwZmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Vmlld1N0YXRl
KHVuc2lnbmVkIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKICAgICBT
ZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAKKyAgICBTZXRT
ZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKQorCiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJv
b2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgIFNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJv
b2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221908</attachid>
            <date>2014-01-22 14:54:03 -0800</date>
            <delta_ts>2014-01-22 16:23:55 -0800</delta_ts>
            <desc>address comments</desc>
            <filename>sessionapi.05.diff</filename>
            <type>text/plain</type>
            <size>33666</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxYWE2NzliLi4zNDA2YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDEtMjIgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBTZXNzaW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAg
ICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lvbk1hcCk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uTWFwKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OnNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2V0
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lv
bik6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRTZXNzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLU2Vzc2lvblJlZi5jcHA6CisgICAgICAgIChXS1Nlc3Npb25DcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTQtMDEtMjIgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggMzItYml0IGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGIxZGQ1NmEuLjFmZWU0OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCiBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbih1aW50NjRf
dCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKFNlc3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lv
biA9IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkuZ2V0KCk7CisgICAgICAgIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbihzZXNzaW9uSUQpOwogICAgICAgICBpZiAocHJpdmF0ZVNlc3Npb24pCiAgICAgICAgICAg
ICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOwogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGgg
cHJpdmF0ZSBicm93c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNob3J0
bHkgYWZ0ZXIgTmV0d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGYyYzQwZjguLmE2ZmEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTksMTIgKzU5LDEyIEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzCiAgICAgLCBtX2lkZW50aWZp
ZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQogICAgICwgbV93ZWJQYWdlSUQocGFyYW1ldGVycy53
ZWJQYWdlSUQpCiAgICAgLCBtX3dlYkZyYW1lSUQocGFyYW1ldGVycy53ZWJGcmFtZUlEKQorICAg
ICwgbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX3JlcXVlc3QocGFy
YW1ldGVycy5yZXF1ZXN0KQogICAgICwgbV9wcmlvcml0eShwYXJhbWV0ZXJzLnByaW9yaXR5KQog
ICAgICwgbV9jb250ZW50U25pZmZpbmdQb2xpY3kocGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQ
b2xpY3kpCiAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHMocGFyYW1ldGVycy5hbGxvd1N0
b3JlZENyZWRlbnRpYWxzKQogICAgICwgbV9jbGllbnRDcmVkZW50aWFsUG9saWN5KHBhcmFtZXRl
cnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSkKLSAgICAsIG1faW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KHBhcmFtZXRlcnMuaW5Qcml2YXRlQnJvd3NpbmdNb2RlKQogICAgICwgbV9zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICAsIG1faXNMb2FkaW5nTWFpblJlc291cmNlKHBh
cmFtZXRlcnMuaXNNYWluUmVzb3VyY2UpCiAgICAgLCBtX3NhbmRib3hFeHRlbnNpb25zQXJlQ29u
c3VtZWQoZmFsc2UpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICByZWYoKTsKIAogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFNldCBwbGF0Zm9ybSBzcGVjaWZpYyBzZXR0aW5ncy4KLSAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2luUHJpdmF0ZUJyb3dzaW5nTW9k
ZSwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKKyAgICBtX25l
dHdvcmtpbmdDb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX3Nlc3Np
b25JRCwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKIAogICAg
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGVlYjJjYzAuLjdi
NjlhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fd2ViUGFn
ZUlEOwogICAgIHVpbnQ2NF90IG1fd2ViRnJhbWVJRDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25J
RDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiAgICAgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5IG1fY29udGVudFNuaWZmaW5nUG9saWN5OwogICAgIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBXZWJDb3JlOjpDbGll
bnRDcmVkZW50aWFsUG9saWN5IG1fY2xpZW50Q3JlZGVudGlhbFBvbGljeTsKLSAgICBib29sIG1f
aW5Qcml2YXRlQnJvd3NpbmdNb2RlOwogICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oCmluZGV4IDVmM2JmNzAuLmRhNmIzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaApAQCAt
MzMsMjAgKzMzLDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IGNy
ZWF0ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdGVOZXR3
b3JraW5nQ29udGV4dD4gY3JlYXRlKHVpbnQ2NF90IHNlc3Npb25JRCwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQoc2Vzc2lvbklELCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSk7CiAgICAgfQogICAgIHZpcnR1
YWwgflJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHBs
YXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlcgorICAgIC8vIEZJWE1F
OiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgog
ICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCi0gICAgICAgIDogbV9wcml2YXRlQnJvd3Np
bmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQodWludDY0X3Qgc2Vzc2lvbklELCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QpCisgICAgICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICAg
ICAsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgLCBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGZhbHNlKQpAQCAtNzAsNyArNzAsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0Owog
I2VuZGlmCiAKLSAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICB1aW50NjRf
dCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpp
bmRleCAxMDU5Yjg4Li5mNjBlNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC01OSwx
NSArNTksMTEgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6bG9jYWxGaWxlQ29udGVu
dFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9w
cml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
cHJpdmF0ZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCkuZ2V0KCk7Ci0gICAgICAgIGlmIChwcml2YXRlU2Vzc2lv
bikKLSAgICAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247Ci0gICAgICAgIC8vIFNvbWUg
cmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBi
ZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95
IGl0cyBzZXNzaW9uLgotICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2
YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUgcmlnb3JvdXNseS4KLSAgICAgICAgTE9HX0VSUk9S
KCJQcml2YXRlIGJyb3dzaW5nIHdhcyByZXF1ZXN0ZWQsIGJ1dCB0aGVyZSB3YXMgbm8gc2Vzc2lv
biBmb3IgaXQuIFBsZWFzZSBmaWxlIGEgYnVnIHVubGVzcyB5b3UganVzdCBkaXNhYmxlZCBwcml2
YXRlIGJyb3dzaW5nLCBpbiB3aGljaCBjYXNlIGl0J3MgYW4gZXhwZWN0ZWQgcmFjZS4iKTsKLSAg
ICB9Ci0KKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24gPSBTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKHNlc3Npb24pCisgICAgICAgIHJldHVy
biAqc2Vzc2lvbjsKKyAgICAvLyBTb21lIHJlcXVlc3RzIG1heSBzdGlsbCBiZSBjb21pbmcgc2hv
cnRseSBhZnRlciBOZXR3b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9u
LgorICAgIExPR19FUlJPUigiSW52YWxpZCBzZXNzaW9uIElELiBQbGVhc2UgZmlsZSBhIGJ1ZyB1
bmxlc3MgeW91IGp1c3QgZGlzYWJsZWQgcHJpdmF0ZSBicm93c2luZywgaW4gd2hpY2ggY2FzZSBp
dCdzIGFuIGV4cGVjdGVkIHJhY2UuIik7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTg3LDcgKzgzLDcgQEAgdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50
NjRfdCBzZXNzaW9uSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghU2Vzc2lvblRy
YWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAn
LicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0
U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKSArICcuJyAr
IFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDU3YTA1NzEuLjU0Y2FiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAKQEAgLTQxLDExICs0MSwxMSBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoKQogICAgIDogaWRlbnRpZmllcigwKQog
ICAgICwgd2ViUGFnZUlEKDApCiAgICAgLCB3ZWJGcmFtZUlEKDApCisgICAgLCBzZXNzaW9uSUQo
MCkKICAgICAsIHByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdykKICAgICAsIGNv
bnRlbnRTbmlmZmluZ1BvbGljeShTbmlmZkNvbnRlbnQpCiAgICAgLCBhbGxvd1N0b3JlZENyZWRl
bnRpYWxzKERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAsIGNsaWVudENyZWRlbnRp
YWxQb2xpY3koRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscykKLSAgICAsIGluUHJpdmF0
ZUJyb3dzaW5nTW9kZShmYWxzZSkKICAgICAsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QodHJ1ZSkKICAgICAsIGlzTWFpblJlc291cmNlKGZhbHNlKQogewpAQCAtNTYs
NiArNTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpZGVudGlm
aWVyOwogICAgIGVuY29kZXIgPDwgd2ViUGFnZUlEOwogICAgIGVuY29kZXIgPDwgd2ViRnJhbWVJ
RDsKKyAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKICAgICBlbmNvZGVyIDw8IHJlcXVlc3Q7CiAK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHJlcXVlc3QuaHR0cEJvZHkoKSk7CkBA
IC05NCw3ICs5NSw2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0oY29udGVudFNuaWZmaW5nUG9saWN5KTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oYWxs
b3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNsaWVudENyZWRl
bnRpYWxQb2xpY3kpOwotICAgIGVuY29kZXIgPDwgaW5Qcml2YXRlQnJvd3NpbmdNb2RlOwogICAg
IGVuY29kZXIgPDwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAg
ICBlbmNvZGVyIDw8IGlzTWFpblJlc291cmNlOwogfQpAQCAtMTEwLDYgKzExMCw5IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29yCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJh
bWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNlc3Npb25JRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnJlcXVlc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE0MSw4ICsxNDQsNiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNsaWVudENyZWRlbnRp
YWxQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaXNNYWluUmVzb3VyY2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggYWNlMDYzNC4uY2JmNDUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC01
Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CiAgICAgdWludDY0X3Qgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1lSUQ7Cisg
ICAgdWludDY0X3Qgc2Vzc2lvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHJlcXVlc3RCb2R5U2FuZGJv
eEV4dGVuc2lvbnM7IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uOyAvLyBD
cmVhdGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBzZW5kZXIuCkBAIC01OSw3ICs2MCw2IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5n
UG9saWN5OwogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIGFsbG93U3RvcmVkQ3JlZGVu
dGlhbHM7CiAgICAgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5OwotICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlOwogICAgIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBib29sIGlzTWFpblJl
c291cmNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCmluZGV4
IGNlYzNhYTMuLmJhYWZmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNz
aW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmNwcApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHNlc3Npb25NYXAoKQorc3RhdGljIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vz
c2lvbk1hcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNDksOSArNDks
OSBAQCBzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCiAgICAgcmV0dXJuIGJhc2U7CiB9
CiAKLWNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+PiYgU2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKQorY29uc3QgSGFzaE1h
cDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbk1hcCgpCiB7Ci0gICAgcmV0dXJuIHNlc3Npb25NYXAoKTsKKyAg
ICByZXR1cm4gc3RhdGljU2Vzc2lvbk1hcCgpOwogfQogCiBjb25zdCBTdHJpbmcmIFNlc3Npb25U
cmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpCkBAIC01OSwxNiArNTksMjQgQEAgY29uc3QgU3Ry
aW5nJiBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKQogICAgIHJldHVybiBpZGVu
dGlmaWVyQmFzZSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiYgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQorTmV0d29ya1N0
b3JhZ2VTZXNzaW9uKiBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQp
CiB7Ci0gICAgcmV0dXJuIHNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgaWYgKHNlc3Npb25JRCA9PSBkZWZhdWx0U2Vzc2lvbklEKQorICAg
ICAgICByZXR1cm4gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CisgICAgcmV0dXJuIHN0YXRpY1Nlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK3ZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldFNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiBzZXNzaW9uKQoreworICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gZGVmYXVsdFNlc3Np
b25JRCk7CisgICAgc3RhdGljU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bW92ZShzZXNzaW9uKTsKIH0KIAogdm9pZCBTZXNzaW9uVHJh
Y2tlcjo6ZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBzZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Cisg
ICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCiB2b2lkIFNlc3Np
b25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCmluZGV4IDUyYzZlMjAuLjVkMzhmMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCkBAIC0zOSw5ICszOSwxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlZmF1bHRTZXNzaW9uSUQgPSAx
OwogICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBsZWdhY3lQcml2YXRlU2Vzc2lvbklEID0gMjsK
ICAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbElEKHVpbnQ2NF90IHNlc3Npb25JRCkgeyByZXR1
cm4gc2Vzc2lvbklEICE9IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklEOyB9Ci0gICAg
c3RhdGljIGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2V0U2Vzc2lvbk1hcCgpOworICAgIC8vIEZJWE1FOiBz
ZXNzaW9uTWFwKCkncyByZXR1cm5lZCBtYXAgZG9lcyBub3QgaW5jbHVkZSBkZWZhdWx0IHNlc3Np
b24uCisgICAgc3RhdGljIGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpOwogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBzZXNzaW9uKHVpbnQ2NF90
IHNlc3Npb25JRCk7CisgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24o
dWludDY0X3Qgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcm
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDg0
N2I0M2MuLmJiMTM5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCkBAIC02ODAsNiArNjgwLDExIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplVUlDbGllbnQod2tDbGllbnQpOwogfQogCit2b2lkIFdL
UGFnZVNldFNlc3Npb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU2Vzc2lvblJlZiBzZXNzaW9uKQor
eworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0U2Vzc2lvbigqdG9JbXBsKHNlc3Npb24pKTsKK30K
Kwogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlw
dEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgU2NyaXB0VmFsdWVDYWxs
YmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmgKaW5kZXggYTNlNDA2Mi4uMjE2YThmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYktp
dDIvV0tQYWdlUG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VVSUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1Nlc3Npb25SZWYuaD4KIAogI2lmbmRlZiBfX2NwbHVzcGx1cwogI2luY2x1
ZGUgPHN0ZGJvb2wuaD4KQEAgLTIwMSw2ICsyMDIsOCBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGll
bgogV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFn
ZSwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiBjbGllbnQpOwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFn
ZVJlZiBwYWdlLCBXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CisKIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZVJ1bkphdmFTY3JpcHRGdW5jdGlvbikoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYsIFdLRXJy
b3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0LCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gZnVuY3Rpb24pOwogI2lmZGVmIF9fQkxPQ0tTX18K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5jcHAKaW5k
ZXggNDRhYTM3YS4uNGFmMmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLU2Vzc2lvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLU2Vzc2lvblJlZi5jcHAKQEAgLTMxLDYgKzMxLDEyIEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKK1dLU2Vzc2lvblJlZiBXS1Nlc3Npb25DcmVhdGUoYm9vbCBpc0VwaGVtZXJh
bCkKK3sKKyAgICBSZWZQdHI8QVBJOjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpj
cmVhdGUoaXNFcGhlbWVyYWwpOworICAgIHJldHVybiB0b0FQSShzZXNzaW9uLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworfQorCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBlSUQoKQogewogICAgIHJl
dHVybiB0b0FQSShBUEk6OlNlc3Npb246OkFQSVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5oCmluZGV4IGU0MmQ4YzUuLjYzZmE1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmgKQEAgLTMyLDYg
KzMyLDkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIEZJWE1FOiBXZSBjYW4gY3JlYXRl
IHNlc3Npb25zIG9uIGRlbWFuZCwgYmVjYXVzZSB3ZSBoYXJkY29kZSB0aGUgZmFjdCB0aGF0IGFs
bCBzZXNzaW9ucyBidXQgdGhlIGRlZmF1bHQgb25lIGFyZSBlcGhlbWVyYWwuIFdlJ2xsIG5lZWQg
dG8gY3JlYXRlIHRoZW0gZXhwbGljaXRseSBvbmNlIHNlc3Npb25zIGhhdmUgbW9yZSBjb25maWd1
cmF0aW9uIG9wdGlvbnMuICovCitXS19FWFBPUlQgV0tTZXNzaW9uUmVmIFdLU2Vzc2lvbkNyZWF0
ZShib29sIGlzRXBoZW1lcmFsKTsKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5
cGVJRCgpOwogCiBXS19FWFBPUlQgYm9vbCBXS1Nlc3Npb25Jc0VwaGVtZXJhbChXS1Nlc3Npb25S
ZWYgc2Vzc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaAppbmRleCBkZjcx
NmU1Li5iZDYwNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUElTZXNzaW9uLmgKQEAgLTM0
LDYgKzM0LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFNlc3Npb24gOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZXNzaW9uPiB7CiBwdWJsaWM6CisgICAg
Ly8gRklYTUU6IFdlIGNhbiBjcmVhdGUgc2Vzc2lvbnMgb24gZGVtYW5kLCBiZWNhdXNlIHdlIGhh
cmRjb2RlIHRoZSBmYWN0IHRoYXQgYWxsIHNlc3Npb25zIGJ1dCB0aGUgZGVmYXVsdCBvbmUgYXJl
IGVwaGVtZXJhbC4gV2UnbGwgbmVlZCB0byBjcmVhdGUgdGhlbSBleHBsaWNpdGx5IG9uY2Ugc2Vz
c2lvbnMgaGF2ZSBtb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZXNzaW9uPiBjcmVhdGUoYm9vbCBpc0VwaGVtZXJhbCk7CiAgICAgc3RhdGljIFNlc3Np
b24mIGRlZmF1bHRTZXNzaW9uKCk7CiAgICAgc3RhdGljIFNlc3Npb24mIGxlZ2FjeVByaXZhdGVT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGQyM2RmMjcuLjZkMTFmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0xMTgsNiArMTE4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xz
IHdoYXQgc3RyYXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmlu
ZSBNRVJHRV9XSEVFTF9FVkVOVFMgMQogCkBAIC0zNDEsNiArMzQ1LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBXZWIKIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGV4cG9zZSB0aGUgc2Vzc2lv
biBzdG9yYWdlIHNpemUgYXMgYSBwcmVmZXJlbmNlLCB3ZSBuZWVkIHRvIHBhc3MgaXQgaGVyZS4K
ICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKG1fcGFnZUlELCBtX3Byb2Nlc3MtPmlzVmFsaWQoKSA/IG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpIDogMCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KTsKKyAgICBzZXRTZXNzaW9uKHNlc3Npb24pOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdl
UHJveHkoKQpAQCAtNDk3LDYgKzUwMiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNz
aW9uID0gc2Vzc2lvbjsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJRCk7CisKKyNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQorICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihzZXNzaW9uLmdldElEKCkpKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcyNDBkYzIuLmZjYTIxMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMzMiw2ICszMzIsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VHcm91cCYsIEFQSTo6U2Vzc2lvbiYsIHVp
bnQ2NF90IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKKyAgICB2b2lk
IHNldFNlc3Npb24oQVBJOjpTZXNzaW9uJik7CisKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Vzc2lvbi0+Z2V0SUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CmluZGV4IDQ1MTYzZTAuLmVhYmQ2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRy
YWNrZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtMTA1LDcgKzEwNiw2IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyLCBDYWNoCiAKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVu
dFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFNuaWZmQ29udGVudCgpID8g
U25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgU3RvcmVkQ3JlZGVudGlhbHMg
YWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IHJlc291cmNlTG9hZGVyLT5zaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSgpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRD
cmVkZW50aWFsczsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSByZXNvdXJjZUxv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKIAogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdl
YkNvcmUncyAiRW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9w
ZXIgV2ViRnJhbWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBz
aG91bGRuJ3QgZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVM
b2FkZXJDbGllbnQsCkBAIC0xMTgsMTMgKzExOCwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgQ2Fj
aAogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CiAg
ICAgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1l
SUQoKSA6IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBh
Z2UtPnNlc3Npb25JRCgpIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7CiAgICAg
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCk7CiAgICAg
bG9hZFBhcmFtZXRlcnMucHJpb3JpdHkgPSBwcmlvcml0eTsKICAgICBsb2FkUGFyYW1ldGVycy5j
b250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3JlZGVudGlhbHM7
CiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gV2ViRnJhbWUgdGhlbiB0aGlzIHJlc291cmNlIGNhbm5v
dCBiZSBhdXRoZW50aWNhdGVkIHdpdGggdGhlIGNsaWVudC4KICAgICBsb2FkUGFyYW1ldGVycy5j
bGllbnRDcmVkZW50aWFsUG9saWN5ID0gKHdlYkZyYW1lICYmIHdlYlBhZ2UpID8gcmVzb3VyY2VM
b2FkZXItPmNsaWVudENyZWRlbnRpYWxQb2xpY3koKSA6IERvTm90QXNrQ2xpZW50Rm9yQW55Q3Jl
ZGVudGlhbHM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdDsKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZSA9IHJlc291cmNl
ICYmIHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDQ1ZjY4ZGMuLmE3ZDMyYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI3MCwxMiArMjcwLDEy
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmll
ciA9IHJlc291cmNlTG9hZElkZW50aWZpZXI7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlE
ID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy53
ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBsb2Fk
UGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBT
ZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25JRDsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1
ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5wcmlvcml0eSA9IFJlc291cmNlTG9h
ZFByaW9yaXR5SGlnaGVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xp
Y3kgPSBTbmlmZkNvbnRlbnQ7CiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50
aWFscyA9IHN0b3JlZENyZWRlbnRpYWxzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPSBjbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGxvYWRQYXJhbWV0ZXJz
LmluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuaXNQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IGNvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAogICAgIGRhdGEucmVzaXplKDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggNDc2MmRlNC4uNmI1
OWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXJDbGllbnQuaD4KQEAgLTUyLDcgKzUzLDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkK
ICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJh
c2UoKTsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcuJyAr
IFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRCkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNz
aW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQpKSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9y
QWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkBAIC02Miw3ICs2Myw3
IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5
Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjCiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgZm9y
IChjb25zdCBhdXRvJiBzZXNzaW9uIDogU2Vzc2lvblRyYWNrZXI6OmdldFNlc3Npb25NYXAoKS52
YWx1ZXMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvbiA6IFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24pCiAgICAgICAg
ICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi0+Y29va2llU3RvcmFnZSgp
LmdldCgpLCBwb2xpY3kpOwogICAgIH0KQEAgLTk5LDExICsxMDAsMTEgQEAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYm
IGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gKlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKTsKLQorICAgIGlmIChmcmFtZSgpKQorICAgICAgICByZXR1cm4gKlNlc3Np
b25UcmFja2VyOjpzZXNzaW9uKHdlYkZyYW1lTG9hZGVyQ2xpZW50KCktPndlYkZyYW1lKCktPnBh
Z2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQorCiBXZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAogewogICAg
IGlmICghZnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAppbmRleCA0YWE5NmNhLi4yNDUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1
aW50NjRfdCBzZXNzaW9uSUQpCiAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNl
c3Npb25JRCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNl
dFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklEKSkpOwogfQogCiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBm
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CmluZGV4IDY0YmE1ZTkuLmM0OWE0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjM0LDggKzIzNCw3IEBAIHZvaWQgV2ViRnJhbWU6
OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3Jh
Z2VTZXNzaW9uKCkuaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25s
b2FkKHBhZ2UoKS0+c2Vzc2lvbklEKCksIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNhNmI5OWIuLjY2ZGVlOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIyMyw2ICsy
MjMsNyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZQogCiBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
ICAgICA6IG1fcGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2Vzc2lvbklEKDApCiAgICAgLCBtX3Zp
ZXdTaXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2hhc1NlZW5QbHVnaW4oZmFsc2Up
CiAgICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNlKQpAQCAtMjEyMSw2ICsyMTIyLDE0IEBAIHZv
aWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2Rl
KQogICAgICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5n
TW9kZSk7CiB9CiAKK3VpbnQ2NF90IFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2Vzc2lvbklEKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CisKKyAgICByZXR1
cm4gbV9wYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IFNlc3Npb25U
cmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRT
ZXNzaW9uSUQ7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlv
biwgdWludDY0X3QgZG93bmxvYWRJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKQEAgLTI0MjMsNyArMjQzMiwxMCBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlKQogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkp
KTsKICAgICBzZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBz
ZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAg
c2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAg
IGlmIChtX3Nlc3Npb25JRCkKKyAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVyYWxJRChtX3Nlc3Npb25JRCkpOworICAgIGVs
c2UKKyAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRL
ZXkoKSkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVk
S2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVy
aW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXph
YmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFz
QXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGZlMzAxYjEuLjg3MzVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc5LDYgKzE3OSw4IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgp
OyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAg
ICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlc3Npb25JRCh1aW50
NjRfdCBzZXNzaW9uSUQpIHsgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7IH0KIAogICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NpemU7IH0KQEAgLTg3Myw2ICs4NzUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKICAgICB1aW50
NjRfdCBtX3BhZ2VJRDsKKyAgICB1aW50NjRfdCBtX3Nlc3Npb25JRDsKIAogICAgIE93blB0cjxX
ZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggMjFiY2I1Zi4uNDAwZmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1
LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Vmlld1N0
YXRlKHVuc2lnbmVkIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKICAg
ICBTZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAKKyAgICBT
ZXRTZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKQorCiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5k
KGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgIFNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>