<?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>148625</bug_id>
          
          <creation_ts>2015-08-30 17:26:17 -0700</creation_ts>
          <short_desc>Web Inspector: tighten up lifetimes for Agent-owned objects, and initialize agents using contexts</short_desc>
          <delta_ts>2015-09-05 11:52:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148481</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122090</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-30 17:26:17 -0700</bug_when>
    <thetext>This makes the frontend connect/disconnect callbacks used only for enable/disable and handling per-frontend persistent data structures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122091</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-30 17:26:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/22494085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122093</commentid>
    <comment_count>2</comment_count>
      <attachid>260258</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-30 17:36:59 -0700</bug_when>
    <thetext>Created attachment 260258
Proposed Fix

Depends on other bugs, so it won&apos;t apply yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123015</commentid>
    <comment_count>3</comment_count>
      <attachid>260258</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-02 18:58:59 -0700</bug_when>
    <thetext>Comment on attachment 260258
Proposed Fix

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

r=me

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:127
&gt; +    // FIXME: change this to notify agents which frontend has connected (by id).
&gt; +    m_agents.didCreateFrontendAndBackend(nullptr, nullptr);

Yeah, I now think of this as a &quot;firstFrontendConnected&quot; setup event. In fact, for all the non-persistent agents (in Web) they could be lazily created at this point.

We had previously talked about automatically calling &quot;enable&quot; on agents. This would be the time to do that.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:142
&gt; +    // FIXME: change this to notify agents which frontend has disconnected (by id).
&gt;      m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);

Yeah, I now think of this as a &quot;lastFrontendDisconnected&quot; teardown event. In fact, for all the non-persistent agents (in Web) they could be destroyed at this point. But more likely it would be fine to just lazily create and not think about again.

We had previously talked about automatically calling &quot;disable&quot; on agents. This would be the time to do that.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:361
&gt; -void InspectorCSSAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
&gt; +void InspectorCSSAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
&gt;  {
&gt; -    m_frontendDispatcher = std::make_unique&lt;CSSFrontendDispatcher&gt;(frontendRouter);
&gt; -    m_backendDispatcher = CSSBackendDispatcher::create(backendDispatcher, this);
&gt;  }

There is code in some of these agents that checks for a frontendDispatcher:

    inspector/InspectorCSSAgent.cpp
    1182:    if (m_frontendDispatcher)

    inspector/InspectorDatabaseAgent.cpp
    204:    if (m_frontendDispatcher &amp;&amp; m_enabled)

    inspector/InspectorTimelineAgent.cpp
    187:    if (m_frontendDispatcher)
    216:    if (m_frontendDispatcher)

    inspector/InspectorWorkerAgent.cpp
    194:    if (m_frontendDispatcher &amp;&amp; m_enabled)

    inspector/WebConsoleAgent.cpp
    74:    if (m_frontendDispatcher &amp;&amp; m_monitoringXHREnabled) {

Seems you can eliminate the relevant check!

&gt; Source/WebCore/inspector/InspectorController.cpp:113
&gt; +    AgentContext baseContext = {
&gt; +        *this,
&gt; +        *m_injectedScriptManager,
&gt; +        m_frontendRouter.get(),
&gt; +        m_backendDispatcher.get()
&gt; +    };
&gt; +
&gt; +    WebAgentContext webContext = {
&gt; +        baseContext,
&gt; +        m_instrumentingAgents.get()
&gt; +    };
&gt; +
&gt; +    PageAgentContext pageContext = {
&gt; +        webContext,
&gt; +        m_page
&gt; +    };

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123933</commentid>
    <comment_count>4</comment_count>
      <attachid>260686</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-05 09:13:46 -0700</bug_when>
    <thetext>Created attachment 260686
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123935</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-05 09:15:28 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123939</commentid>
    <comment_count>6</comment_count>
      <attachid>260688</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-05 09:29:50 -0700</bug_when>
    <thetext>Created attachment 260688
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123949</commentid>
    <comment_count>7</comment_count>
      <attachid>260258</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-05 10:27:00 -0700</bug_when>
    <thetext>Comment on attachment 260258
Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:127
&gt;&gt; +    m_agents.didCreateFrontendAndBackend(nullptr, nullptr);
&gt; 
&gt; Yeah, I now think of this as a &quot;firstFrontendConnected&quot; setup event. In fact, for all the non-persistent agents (in Web) they could be lazily created at this point.
&gt; 
&gt; We had previously talked about automatically calling &quot;enable&quot; on agents. This would be the time to do that.

the next patch in series will change it to

enum class WasFirstFrontend { No, Yes };
enum class WasLastFrontend { No, Yes };
virtual void frontendAttached(FrontendToken, WasFirstFrontend);
virtual void frontendDetached(FrontendToken, WasLastFrontend);

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:142
&gt;&gt;      m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);
&gt; 
&gt; Yeah, I now think of this as a &quot;lastFrontendDisconnected&quot; teardown event. In fact, for all the non-persistent agents (in Web) they could be destroyed at this point. But more likely it would be fine to just lazily create and not think about again.
&gt; 
&gt; We had previously talked about automatically calling &quot;disable&quot; on agents. This would be the time to do that.

We should check per-agent to make sure it&apos;s doing the right thing.

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:361
&gt;&gt;  }
&gt; 
&gt; There is code in some of these agents that checks for a frontendDispatcher:
&gt; 
&gt;     inspector/InspectorCSSAgent.cpp
&gt;     1182:    if (m_frontendDispatcher)
&gt; 
&gt;     inspector/InspectorDatabaseAgent.cpp
&gt;     204:    if (m_frontendDispatcher &amp;&amp; m_enabled)
&gt; 
&gt;     inspector/InspectorTimelineAgent.cpp
&gt;     187:    if (m_frontendDispatcher)
&gt;     216:    if (m_frontendDispatcher)
&gt; 
&gt;     inspector/InspectorWorkerAgent.cpp
&gt;     194:    if (m_frontendDispatcher &amp;&amp; m_enabled)
&gt; 
&gt;     inspector/WebConsoleAgent.cpp
&gt;     74:    if (m_frontendDispatcher &amp;&amp; m_monitoringXHREnabled) {
&gt; 
&gt; Seems you can eliminate the relevant check!

There were plenty others too. I removed them. Most of them looked like null checks, though some perform different logic when nothing is attached. I think I&apos;ll do a per-agent audit of these when I also go through and change data structures to be per-fronted (or use log-replay).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123951</commentid>
    <comment_count>8</comment_count>
      <attachid>260692</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-05 10:30:21 -0700</bug_when>
    <thetext>Created attachment 260692
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123965</commentid>
    <comment_count>9</comment_count>
      <attachid>260692</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-05 11:52:25 -0700</bug_when>
    <thetext>Comment on attachment 260692
For EWS

Clearing flags on attachment: 260692

Committed r189438: &lt;http://trac.webkit.org/changeset/189438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123966</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-05 11:52:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260258</attachid>
            <date>2015-08-30 17:36:59 -0700</date>
            <delta_ts>2015-09-05 09:13:36 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-148625-20150830173643.patch</filename>
            <type>text/plain</type>
            <size>130104</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDlkODY0Nzk1ZGQ3Mjc5MDdlZDMyMjU5MTFlNzQ2MmJlMDkyMmI1Li4wMDlkZWQxNWU5MDI3MjVi
ZjlmZjYzYjQxYTg2MDg3MGU2NmE3MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0wOC0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgQWdlbnQtb3du
ZWQgb2JqZWN0cywgYW5kIGluaXRpYWxpemUgYWdlbnRzIHVzaW5nIGNvbnRleHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnRzIG93biB0
aGVpciBkb21haW4tc3BlY2lmaWMgZnJvbnRlbmQgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlcnMuIENo
YW5nZSBzbyB0aGF0CisgICAgICAgIHRoZXkgYXJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9y
cyByYXRoZXIgdGhhbiB3aGVuIGEgZnJvbnRlbmQgY29ubmVjdHMgb3IgZGlzY29ubmVjdHMuCisg
ICAgICAgIFRoaXMgbWF5IGNhdXNlIGFkZGl0aW9uYWwgbWVtb3J5IHVzZSwgYnV0IHRoaXMgY2Fu
IGJlIGNvdW50ZXJhY3RlZCBieSBsYXppbHkgY3JlYXRpbmcKKyAgICAgICAgc29tZSBhZ2VudHMg
dGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBvdGhlciBhZ2VudHMgdG8gZnVuY3Rpb24gKGkuZS4s
IHJ1bnRpbWUgYW5kIHBhZ2UgYWdlbnRzKS4KKworICAgICAgICBUbyBhdm9pZCBhZGRpbmcgZnJv
bnRlbmQvYmFja2VuZCBkaXNwYXRjaGVyIGFyZ3VtZW50cyB0byBldmVyeSBzaW5nbGUgYWdlbnQg
Y29uc3RydWN0b3IsCisgICAgICAgIGNoYW5nZSBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8gdGFrZSBh
IEFnZW50Q29udGV4dCBvciBhIHN1YmNsYXNzIG9mIGl0LiBUaGlzIHByb3ZpZGVzIGFnZW50cyB3
aXRoCisgICAgICAgIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0aGUgb3duaW5nIEluc3BlY3Rv
ckVudmlyb25tZW50IHN1YmNsYXNzIHRoYXQgYXJlIGd1YXJhbnRlZWQgdG8KKyAgICAgICAgb3V0
bGl2ZSBhbGwgYWdlbnRzLiBBZ2VudENvbnRleHQgYW5kIGl0cyBzdWJjbGFzc2VzIGZvbGxvdyB0
aGUgZXhpc3RpbmcgQWdlbnQgY2xhc3MgaGllcmFyY2h5LgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0FnZW50Q29udGV4
dDo6SlNBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVu
ZHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OmFwcGVuZEV4dHJhQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6Okluc3Bl
Y3RvckFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6SlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oOiBBbHRlcm5hdGUgYWdlbnRzIHNob3VsZAorICAgICAgICBoYXZlIGFjY2VzcyB0byBmcm9u
dGVuZCByb3V0ZXIgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlciBhdCBjb25zdHJ1Y3Rpb24gdGltZS4K
KyAgICAgICAgCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAg
ICAoQ3BwRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRl
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9yX2V2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weToKKwogMjAxNS0w
OC0yOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgSW5zcGVjdG9yQ29udHJvbGxlci1vd25lZCBv
YmplY3RzOyBhZGQgYnJhY2UgaW5pdGlhbGl6ZXJzIHRvIGFnZW50cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIy
ZTYwOTA4MWNhMmEyNWJmNGI1MDg3NTdmYTJhNDQ0MGQ2NWI0OGEuLjgxZjI0NzE2ZTMzM2RlMGIw
NTViOTU5NzBlNjA5MWIxODY3MDM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjUgQEAKKzIw
MTUtMDgtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGlnaHRlbiB1cCBsaWZldGltZXMgZm9yIEFnZW50LW93bmVkIG9iamVjdHMsIGFu
ZCBpbml0aWFsaXplIGFnZW50cyB1c2luZyBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIGFnZW50cyBvd24gdGhlaXIgZG9tYWluLXNw
ZWNpZmljIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXJzLiBDaGFuZ2Ugc28gdGhhdAor
ICAgICAgICB0aGV5IGFyZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3RvcnMgcmF0aGVyIHRoYW4g
d2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLgorICAgICAgICBUaGlzIG1h
eSBjYXVzZSBhZGRpdGlvbmFsIG1lbW9yeSB1c2UsIGJ1dCB0aGlzIGNhbiBiZSBjb3VudGVyYWN0
ZWQgYnkgbGF6aWx5IGNyZWF0aW5nCisgICAgICAgIHNvbWUgYWdlbnRzIHRoYXQgYXJlIG5vdCBy
ZXF1aXJlZCBmb3Igb3RoZXIgYWdlbnRzIHRvIGZ1bmN0aW9uIChpLmUuLCBydW50aW1lIGFuZCBw
YWdlIGFnZW50cykuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIGZyb250ZW5kL2JhY2tlbmQg
ZGlzcGF0Y2hlciBhcmd1bWVudHMgdG8gZXZlcnkgc2luZ2xlIGFnZW50IGNvbnN0cnVjdG9yLAor
ICAgICAgICBjaGFuZ2UgYWdlbnQgY29uc3RydWN0aW9uIHRvIHRha2UgYSBBZ2VudENvbnRleHQg
b3IgYSBzdWJjbGFzcyBvZiBpdC4gVGhpcyBwcm92aWRlcyBhZ2VudHMgd2l0aAorICAgICAgICBy
ZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGhlIG93bmluZyBJbnNwZWN0b3JFbnZpcm9ubWVudCBz
dWJjbGFzcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvCisgICAgICAgIG91dGxpdmUgYWxsIGFnZW50
cy4gQWdlbnRDb250ZXh0IGFuZCBpdHMgc3ViY2xhc3NlcyBmb2xsb3cgdGhlIGV4aXN0aW5nIEFn
ZW50IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVn
U2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
OjpmaW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5z
cGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25T
dGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3JpcHRF
eGVjdXRpb25EaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
Om1haW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRG
cmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlz
aWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291
cmNlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnBhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQWdlbnRDb250ZXh0OjpXZWJBZ2VudENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUFnZW50Q29udGV4dDo6UGFnZUFnZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJBZ2VudENvbnRleHQ6OldvcmtlckFnZW50Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OlBh
Z2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpz
b3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Vy
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9y
dEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGlt
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViRGVi
dWdnZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkRl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbnRlcnJ1cHRBbmREaXNwYXRjaEluc3Bl
Y3RvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjpXb3Jr
ZXJSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVu
dGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorCiAyMDE1LTA4LTI5ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpZ2h0ZW4g
dXAgbGlmZXRpbWVzIGZvciBJbnNwZWN0b3JDb250cm9sbGVyLW93bmVkIG9iamVjdHM7IGFkZCBi
cmFjZSBpbml0aWFsaXplcnMgdG8gYWdlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCBmNGFlYjA3ZTk4MmU4M2M5
MGQyZjk2MjJmMWQ5Y2U4NTYyNWY1OTlkLi42MWM2OTNkNGVjODBlYzQ4N2NiMmQyZDIxOGIxYzE2
ODRlOTE0MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTI5LDEwICsyOSwzMyBAQAogCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7Cit9CisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hl
cjsKIGNsYXNzIEZyb250ZW5kUm91dGVyOworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwor
Y2xhc3MgSW5zcGVjdG9yRW52aXJvbm1lbnQ7CisKK3N0cnVjdCBBZ2VudENvbnRleHQgeworICAg
IEluc3BlY3RvckVudmlyb25tZW50JiBlbnZpcm9ubWVudDsKKyAgICBJbmplY3RlZFNjcmlwdE1h
bmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBGcm9udGVuZFJvdXRlciYgZnJvbnRl
bmRSb3V0ZXI7CisgICAgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyOworfTsK
Kworc3RydWN0IEpTQWdlbnRDb250ZXh0IDogcHVibGljIEFnZW50Q29udGV4dCB7CisgICAgSlNB
Z2VudENvbnRleHQoQWdlbnRDb250ZXh0JiBjb250ZXh0LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCisgICAgICAgIDogQWdlbnRDb250ZXh0KGNvbnRleHQpCisgICAgICAgICwg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgfQorCisgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0OworfTsKIAogZW51bSBj
bGFzcyBEaXNjb25uZWN0UmVhc29uIHsKICAgICBJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZGJkMmU3NmM2YTE2
MTZlYzQwYjk4MjM2Y2E2OWYwZWZjOGQ0YzIzMC4uOWE4M2FhMzZhZDMzOGNlNWNlODAzNjc3ZDgz
YmQzNTQyMjRjZTMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtNjgsMTAgKzY4LDIyIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiAgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCiB7Ci0gICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQWdlbnQ+KCp0aGlzKTsKLSAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdl
ciwgbV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KTsKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2dsb2JhbE9iamVj
dCwgY29uc29sZUFnZW50LmdldCgpKTsKKyAgICBBZ2VudENvbnRleHQgYmFzZUNvbnRleHQgPSB7
CisgICAgICAgICp0aGlzLAorICAgICAgICAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsCisgICAg
ICAgIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIu
Z2V0KCkKKyAgICB9OworCisgICAgSlNBZ2VudENvbnRleHQgY29udGV4dCA9IHsKKyAgICAgICAg
YmFzZUNvbnRleHQsCisgICAgICAgIGdsb2JhbE9iamVjdAorICAgIH07CisKKyAgICBhdXRvIGlu
c3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7
CisgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8g
ZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50Pihjb250ZXh0LCBjb25zb2xlQWdlbnQuZ2V0KCkpOwogCiAgICAgbV9pbnNwZWN0b3JBZ2Vu
dCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgIG1fZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2Vy
QWdlbnQuZ2V0KCk7CkBAIC0xMTEsNyArMTIzLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW4K
ICAgICBpZiAoIWNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5n
ZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBjaGFuZ2Ug
dGhpcyB0byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQgKGJ5IGlk
KS4KKyAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobnVsbHB0ciwgbnVs
bHB0cik7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAg
ICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhtX2FnZW50cy5leHRyYURv
bWFpbnMoKSk7CkBAIC0xMjUsNiArMTM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb24KIHsK
ICAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKIAorICAg
IC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhh
cyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCiAgICAg
bV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CkBA
IC0xNDMsNiArMTU3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb24KIAogdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQogewor
ICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5k
IGhhcyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQp
OwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwpAQCAt
MjcxLDcgKzI4Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjph
cHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiB7CiAgICAgU3RyaW5nIGRv
bWFpbk5hbWUgPSBhZ2VudC0+ZG9tYWluTmFtZSgpOwogCi0gICAgYWdlbnQtPmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRz
IHdoaWNoIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQgKGJ5IGlkKS4KKyAgICBhZ2VudC0+ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgbV9hZ2VudHMu
YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZTExMzA4NWQ1Y2M5OGRiODUyZjg1ZDNkNmFkMzlhZGIx
OTQ0NDFiNy4uNGY0ZTNmOWJkYzQwOWUzY2I2YmE0YzljYjVmMDI0ZTEyZDcxY2EzNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJD
bGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGllbnQpIG92ZXJy
aWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0
IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEJhY2tlbmREaXNwYXRjaGVy
JiBiYWNrZW5kRGlzcGF0Y2hlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCmluZGV4IDgxZThiYjdiYWE0YjE2OTM4ODE1ODE1ZDlmNDMwOTZkYmMwYzY5MGMuLjk0
YzUxMjE3ZWQ0ZGYyMzFmYzg5MDZiNmM0NmNjODg3NmUzNjkzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTM3LDkgKzM3LDExIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0
b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmlyb25tZW50
KQorSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpKQotICAg
ICwgbV9lbnZpcm9ubWVudChlbnZpcm9ubWVudCkKKyAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4
dC5lbnZpcm9ubWVudCkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KIApAQCAtNDcsMTcg
KzQ5LDEyIEBAIEluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQoKQogewogfQogCi12b2lk
IEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0
ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNv
bikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5k
cy5jbGVhcigpOwogCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXgg
MWU4ZmI2OTBlYjU1ZmZiY2U0NWQwMTE4Yjk1YzQ0ZGI2MDcxMDlmZS4uZWRhNzQ0OTAxNDlhZmFl
YzY5M2ViMTk4ZWZlYTJmZjBkNzliMTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC00OCw3ICs0OCw3
IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CisgICAgSW5zcGVjdG9yQWdl
bnQoQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIq
LCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CisKICAgICBWZWN0b3I8U3RyaW5nPiBtX3BlbmRpbmdFdmFsdWF0ZVRl
c3RDb21tYW5kczsKICAgICBzdGQ6OnBhaXI8UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA4MGM5NWRkZmYyYjZjNGJjNmM3YTMxYWMwY2JiMTY3
YzE5Yzk3ZjI4Li5lYTE1NDMwOGY2ZWY5YWU1NjgyOGRlNjljMDNlNDMxYjAyMGNiNzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQyLDkgKzQyLDExIEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3Igewogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1Db25zb2xlTWVzc2Fn
ZXMgPSAxMDAwOwogc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0g
MTAwOwogCi1JbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckNvbnNv
bGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CiAKQEAgLTUyLDE3ICs1NCwxMiBAQCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiBm
cm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9u
dGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBDb25zb2xlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIFN0cmluZyBlcnJvclN0cmluZzsKICAg
ICBkaXNhYmxlKGVycm9yU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5k
ZXggZDEyMTQ3ZTI2ZjAxMzUxNDcxZWJmNTczOGY1OTVhY2Q0ODFiMDZjNy4uYjk3MTg2OWQ2MzQ1
M2NlNTBkYzExNzhhZjcwYzAzYmU3MDI0NjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29u
c29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGkKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbmplY3RlZFNj
cmlwdE1hbmFnZXImKTsKKyAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0Jik7
CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTgzLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgogICAgIElu
amVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIFJlZlB0cjxDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisKICAgICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2UgeyBudWxscHRyIH07
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1l
c3NhZ2VzOwogICAgIGludCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50IHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkZmZlYTY5ZGU3M2IxZGFhOGZhNDBh
ZDJmZjg4OGMyNWVlMjY2MTRiLi5lZTY2N2M2OTE5MjNkNGU5YTk1MWM0N2RlOTA5OWQ4YzcxNzlm
N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTUsOSArNTUsMTEg
QEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KICAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RH
cm91cCwgU3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAotSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFn
ZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSkKLSAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2Vy
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKEpTQzo6bm9CcmVha3Bv
aW50SUQpCiB7CiAgICAgLy8gRklYTUU6IG1ha2UgYnJlYWtSZWFzb24gb3B0aW9uYWwgc28gdGhh
dCB0aGVyZSB3YXMgbm8gbmVlZCB0byBpbml0IGl0IHdpdGggIm90aGVyIi4KQEAgLTY4LDE3ICs3
MCwxMiBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgp
CiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hl
ciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotCiAgICAgYm9vbCBza2lwUmVjb21waWxlID0gcmVhc29uID09IERpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZDsKICAgICBkaXNhYmxlKHNraXBSZWNvbXBp
bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDhkMTk0MjUxZjE1MDgz
Mjc5MTM5YmMzN2M5NjdkYzI4MmI5MDBjYTIuLmFmYTI4NmM0Nzg3MDQzNzEwZWZmOTQ4NGU4Mjk3
ZGY0OGE5NjRkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTEwOSw3ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVi
dWdTZXJ2ZXIoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdl
bnRDb250ZXh0Jik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAgICAg
dmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAKaW5kZXggMzIxMDRhMmRmMjhhOTYwYTNkNDk4MmZmODRhYzE5M2QyNzMzYjNh
Mi4uZjc1MjMxOGM3Y2U0MzBkZDVlNjQxZDI5NDJjZDE2NTY5NjIwNzIyNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHN0YXRpYyBib29sIGFzQm9v
bChjb25zdCBib29sKiBjb25zdCBiKQogICAgIHJldHVybiBiID8gKmIgOiBmYWxzZTsKIH0KIAot
SW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSdW50aW1lIikpCi0gICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAyZTJkNzk0MTJkZjNjMjFhYTg4YTFiNzg0Y2YwMGRj
MTU2NzU3OTFjLi43NzBlNDA3OGM3YjJkNDZmNjZjNjE1MGFhNWIzOTJhYjg4YzAxOTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CisgICAg
SW5zcGVjdG9yUnVudGltZUFnZW50KEFnZW50Q29udGV4dCYpOwogCiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAK
aW5kZXggOTZlMWE0OWFkZjJmNzlhZmYyZGFiZTVhNGRiMWQ1ZTM4YmVjNGQyNi4uMDIxN2RjNmRj
NTVhMGZmMWI3YjZhMDEwOTAxNTgxOWUwZGYyOGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUFnZW50LmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAotSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xvYmFsT2JqZWN0Q29uc29s
ZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAg
IDogSW5zcGVjdG9yQ29uc29sZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0pTR2xvYmFs
T2JqZWN0Q29uc29sZUFnZW50OjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudChBZ2VudENvbnRl
eHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQoY29udGV4dCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKaW5kZXggOWMyODVlMmVmZjIz
NmVhZWRlYTlkNzE4NjUwZTE5MDkxNjgyNTU1Ny4uYTZmMWUwZWRhNGVkYjA3M2Q2NDZiNDBmNmQ2
ODEyNWFlMTk0NDI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5oCkBA
IC0zNSw3ICszNSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckNvbnNvbGVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0
TWFuYWdlciYpOworICAgIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KEFnZW50Q29udGV4dCYp
OwogICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KCkgeyB9CiAKICAgICAv
LyBGSVhNRTogWEhScyBhbmQgTm9kZXMgb25seSBtYWtlcyBzZW5zZSBkZWJ1Z2dpbmcgYSBXZWIg
Y29udGV4dC4gQ2FuIHRoaXMgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgYWdlbnQ/CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCA0ZDM4MzA3NjViMThjZDVl
YWI1MGVjZmE5YzliOWY4ODRhYzA3ZmQ5Li5mNjkxMmE2YTA1MjViMjJiMTllY2FkMzNmOTBkOGI4
ZjE4MmI0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAK
QEAgLTM4LDkgKzM4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLUpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6SlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEluc3BlY3RvckNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50KQotICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlw
dE1hbmFnZXIpCi0gICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdCkKK0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEpTQWdl
bnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCkK
KyAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoY29udGV4dCkKKyAgICAsIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIoY29udGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgLCBtX2NvbnNvbGVB
Z2VudChjb25zb2xlQWdlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5oCmluZGV4IDE4YzExYTk2ODFiMTA3YWIzOTcwNGY4OTA3ZjY0NDdlNjk5NzAyZTQuLjE0
NjU2NmY1MmViZTVlMTI1ZjgxOTJhYzNjNjE1MjdjMjBmMjcwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CisgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50KEpTQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CiAgICAgdmly
dHVhbCB+SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIEpT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDBlMDQ1ZjQwZjMwYWZmNTBiMTc0MWEyMWI3Y2Q2ZmVh
YjA1OWU0MGUuLmVhYTc1MWQyNWNmZTg2YzRkMDVlOWZiZjJlMzRkMDY3MDg3N2FlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM0LDE2ICszNCwxNiBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQotICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFu
YWdlcikKLSAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKK0pTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYg
Y29udGV4dCkKKyAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCisgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9i
amVjdCkKIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFj
a2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAppbmRleCA5MTdmZGViOTVk
OGEwZTEzYWU4MzEwZGRkODJmNDA0ZTcwYzgwZDUzLi41ZGM4N2IyMDk1ZTdhYjU0YTQyZDU4NGJi
MDIyZTcyYjY4NDRkNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVBZ2VudCB7
CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIEpTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50KEpTQWdlbnRDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50LmgKaW5kZXggY2E0NmYxMjVhZTMxZTU0YzQ1OWIwYjgxNjE3OGVkZmYxZjRh
NTQ4YS4uOTc5MWMyOTU1NjIwNjAyMzVkNTE4MmQxNTAwMzFjOGNkOTc3M2Q0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaApAQCAtMzksMjMgKzM5LDI2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFRCYWNrZW5kRGlzcGF0Y2hlciwgdHlwZW5hbWUgVEFsdGVy
bmF0ZURpc3BhdGNoZXI+CiBjbGFzcyBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50KGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPFRBbHRlcm5hdGVEaXNwYXRjaGVyPiBhbHRlcm5h
dGVEaXNwYXRjaGVyKQorICAgIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50KGNvbnN0IFN0cmlu
ZyYgZG9tYWluTmFtZSwgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyJiBjb250cm9sbGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8VEFsdGVybmF0ZURpc3BhdGNoZXI+IGFsdGVybmF0ZURpc3BhdGNo
ZXIpCiAgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRvbWFpbk5hbWUpCiAgICAgICAgICwg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSkKKyAg
ICAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRyb2xsZXIuYmFja2VuZERpc3BhdGNoZXIoKSwgbnVsbHB0cikpCiAgICAgeworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5hdGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlz
cGF0Y2hlci5nZXQoKSk7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2Vu
ZERpc3BhdGNoZXIoJmNvbnRyb2xsZXIuYmFja2VuZERpc3BhdGNoZXIoKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRl
ciosIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikgb3ZlcnJpZGUKKyAgICB2
aXJ0dWFsIH5BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudCgpCisgICAgeworICAgICAgICBtX2Fs
dGVybmF0ZURpc3BhdGNoZXItPnNldEJhY2tlbmREaXNwYXRjaGVyKG51bGxwdHIpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRS
b3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gVEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIG51bGxwdHIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci5nZXQoKSk7Ci0gICAgICAgIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFj
a2VuZERpc3BhdGNoZXIobnVsbHB0cik7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVn
bWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjBkMjViMGI2
NzJhMjk2N2NhZmY1NzhiZjRmNTg4OGU5ZTk1NGY3OS4uMzQ4Yzc1NDVjYzhiNTkxZTU1MzY5ZGUx
NGQzZTllMGFiYzU0MmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpA
QCAtNDMsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJD
bGllbnQqKSA9IDA7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVu
ZFJvdXRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCiAgICAgYm9vbCBjb25u
ZWN0ZWQoKSBjb25zdCB7IHJldHVybiBmcm9udGVuZFJvdXRlcigpLmhhc0Zyb250ZW5kcygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4
IDlhZjlkZGFmODRkZjIxZTZlZjcyNjcwMTkzOWY0MzU4YTdhZWVjYjQuLjYxYjBiYTE4MzI4Yzc3
NzZkNjVkMDIyN2VkMzcwZjBmM2FiOTM0MWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2Nw
cF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJvdGVjdGVkOgog
ICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0g
KAogICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gY3Jl
YXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciopOworICAgIHN0YXRpYyBSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPiBj
cmVhdGUoQmFja2VuZERpc3BhdGNoZXImLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlk
ZTsKICR7Y29tbWFuZERlY2xhcmF0aW9uc30KIHByaXZhdGU6CkBAIC0xNjgsOSArMTY4LDkgQEAg
JHtkaXNwYXRjaENhc2VzfQogfSIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50
YXRpb25Eb21haW5Db25zdHJ1Y3RvciA9ICgKLSAgICAiIiJSZWY8JHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVyPiAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAgICIiIlJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXI+ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmRE
aXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoYmFja2Vu
ZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cjo6JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdl
bnQpCkBAIC0yMDQsMTAgKzIwNCwxMCBAQCAke291dFBhcmFtZXRlckFzc2lnbm1lbnRzfQogICAg
IEZyb250ZW5kRGlzcGF0Y2hlckRvbWFpbkRpc3BhdGNoZXJEZWNsYXJhdGlvbiA9ICgKICIiIiR7
Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZFJvdXRl
ciogZnJvbnRlbmRSb3V0ZXIpIDogbV9mcm9udGVuZFJvdXRlcihmcm9udGVuZFJvdXRlcikgeyB9
CisgICAgJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZFJvdXRlciYgZnJv
bnRlbmRSb3V0ZXIpIDogbV9mcm9udGVuZFJvdXRlcihmcm9udGVuZFJvdXRlcikgeyB9CiAke2V2
ZW50RGVjbGFyYXRpb25zfQogcHJpdmF0ZToKLSAgICBGcm9udGVuZFJvdXRlciogbV9mcm9udGVu
ZFJvdXRlcjsKKyAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJvdXRlcjsKIH07IiIiKQog
CiAgICAgUHJvdG9jb2xPYmplY3RCdWlsZGVyRGVjbGFyYXRpb25QcmVsdWRlID0gKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJv
bnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBkZTQ0ZjlhMWI4YjViZmNh
MWY5MDY4Yzg0ZWJiYjk1N2Q3NGExYmM5Li42NmFlMDM1NWE1ZmI2ZmJhNTIyMzEwMTJiYTRkZTUx
NjhhM2ZiZjZmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtMTE5LDYgKzExOSw2IEBAIGNsYXNzIENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBq
c29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6bW92ZShw
YXJhbXNPYmplY3QpKTsnKQogCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZEV2ZW50KGpzb25NZXNzYWdlLT50
b0pTT05TdHJpbmcoKSk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9mcm9udGVuZFJv
dXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IGEyOGE5
ZWYxMDUxZjM4OTk5ZDZiNTMwMmQyZTIzYjAwZTcyOGZlZWEuLjE0ODQ1Mjc2YjM0MDEwMjhlNWNi
MmE0YzBjY2QyYjEzZjU4MTBjNzIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEzOCw3ICsxMzgsNyBAQCAke2ludm9jYXRpb259CiAg
ICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiJHtkb21haW5OYW1lfSIpLCBXVEY6Om1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4o
QVNDSUlMaXRlcmFsKCIke2RvbWFpbk5hbWV9IiksICpfY29udHJvbGxlciwgV1RGOjptb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChX
VEY6Om1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGRjZTJhMzE5
MDU0MWZjYTQ4ZWJjZDk4MzYxYTE5ZTg5NjA3Y2I5YTcuLjg4YjMyOGM4NzFiZWIzNDI4Mjk0YTZj
YjcxYWIwOTg1YTIwMGI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKLSAgICA6IFNjcmlwdERlYnVnU2VydmVyKGNv
bnRleHQtPnNjcmlwdCgpLT52bSgpLCB0cnVlKQorV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6Oldv
cmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG1vZGUpCisgICAgOiBTY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LnNjcmlwdCgpLT52
bSgpLCB0cnVlKQogICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQogICAgICwgbV9k
ZWJ1Z2dlclRhc2tNb2RlKG1vZGUpCiB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
KQogICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7CiAKICAgICBpZiAod2FzRW1wdHkpIHsK
LSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS0+c2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRo
aXMpOworICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5hdHRhY2hEZWJ1Z2dl
cih0aGlzKTsKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICB9CiB9CkBA
IC03Myw4ICs3Myw4IEBAIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBib29sCiAgICAgbV9saXN0ZW5lcnMu
cmVtb3ZlKGxpc3RlbmVyKTsKIAogICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNjcmlwdCgpKQotICAgICAgICAgICAgbV93
b3JrZXJHbG9iYWxTY29wZS0+c2NyaXB0KCktPmRldGFjaERlYnVnZ2VyKHRoaXMpOworICAgICAg
ICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFjaERlYnVnZ2VyKHRoaXMpOwogICAgICAgICBpZiAo
IXNraXBSZWNvbXBpbGUpCiAgICAgICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwog
ICAgIH0KQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cnVu
RXZlbnRMb29wV2hpbGVQYXVzZWQoKQogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1
bHQ7CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLT50aHJl
YWQoKS5ydW5Mb29wKCkucnVuSW5Nb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUsIG1fZGVidWdnZXJU
YXNrTW9kZSk7CisgICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
cnVuTG9vcCgpLnJ1bkluTW9kZSgmbV93b3JrZXJHbG9iYWxTY29wZSwgbV9kZWJ1Z2dlclRhc2tN
b2RlKTsKICAgICAvLyBLZWVwIHdhaXRpbmcgdW50aWwgZXhlY3V0aW9uIGlzIHJlc3VtZWQuCiAg
ICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIW1fZG9uZVBy
b2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA3ODgxZjYxYjA5NDQyMDg2
ODg3M2YxNDQ3MmM0ZTY0NGFkYzBmNjY3Li44MGVkOWQzODVhYzAyMWFiNDcwMjIzYzZkNDU3ODZl
OWE2NmVhYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7CiBjbGFzcyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcik7CiBwdWJsaWM6Ci0gICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIoV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5Xb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RXhjZXB0aW9uKikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBX
b3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKICAgICBMaXN0ZW5lclNldCBtX2xpc3RlbmVyczsK
ICAgICBTdHJpbmcgbV9kZWJ1Z2dlclRhc2tNb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAK
aW5kZXggYTg0MWMzMjJjOTY0YTFhOTFkY2NmMjYzZWUzZjZjYzVhZmE2NmZkYi4uODA5ODkxMmY4
MmNmYjVjNGViNDJiMGI2NWRkNTNkYWI0N2E3MzA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC00Mywy
MyArNDQsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNh
Y2hlIiksIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6
QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiB7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERp
c3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Um91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpBcHBsaWNhdGlv
bkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChudWxscHRyKTsKIH0KIApAQCAtOTUsNyArOTMsNyBAQCB2b2lkIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0
cmluZyYsIFJlZlB0cgogewogICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0
Pjo6Y3JlYXRlKCk7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZUFnZW50LT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KTsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDI0OGQzZjg0MWJkN2YyYzBjMWQwOTFhZTkxNTk2M2VlZmE1
YWU5MTYuLjY1OWZmNDczMjM0MmUwOTA0YzQxZDgxMWNhZjk2NzUyNjA0YWMxYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIApAQCAtNTAsNyAr
NDksNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7
CisgICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFdlYkFnZW50Q29udGV4dCYsIElu
c3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKaW5kZXggODIwNzcxYzE5NjZlNjBjYzYyM2Y1YTY5NTBhOTBkYTkxZTUwODRk
MC4uOTBkYmVkMmI2NzgxY2IwMGYwZDFkZTQ3ZDk5ZmNiZmVlNjgxZDJjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zNDEsOCArMzQx
LDEwIEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENT
U1J1bGUmIHJ1bGUpCiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1N0eWxlUnVsZT4oJnJ1bGUpOwog
fQogCi1JbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KQot
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ1NTIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCitJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRD
b250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJDU1MiKSwgY29udGV4dCkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
ICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiB7CiAgICAgbV9kb21BZ2VudC0+c2V0RE9NTGlz
dGVuZXIodGhpcyk7CkBAIC0zNTQsMTcgKzM1NiwxMiBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fklu
c3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRy
OwotCiAgICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDAwYjAzNzk3NmZiMDRmMTBkZjU3
NDQyYmNmMTZjZDM2ZTRhZTk1YTQuLmNlMDU3MDc2ZGFmZTk2N2QyYjEzNWNhZDc4ZjBjZjEzNzQx
MDNjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDaGFuZ2VSZWdp
b25PdmVyc2V0VGFzazsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBT
dHlsZVJlc29sdmVyOwpAQCAtODIsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeSogbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgfTsKIAotICAgIElu
c3BlY3RvckNTU0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JET01BZ2VudCop
OworICAgIEluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvckRPTUFn
ZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIHN0YXRpYyBD
U1NTdHlsZVJ1bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4ZmQ1MjkwMzVlMzdk
MWMzNDE3ZGI1MzQwZGNkMWQyMWMxMGNiMDU4Li4yNTAzMWQ2ZDcyMzhlNzI3ZDQzNzY4MTAwOTQ2
NDA4MGQxNWY0ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC05NSw2NyArOTUsODQgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckMKIHsKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsK
IAotICAgIGF1dG8gaW5zcGVjdG9yQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckFnZW50PigqdGhpcyk7CisgICAgQWdlbnRDb250ZXh0IGJhc2VDb250ZXh0ID0geworICAgICAg
ICAqdGhpcywKKyAgICAgICAgKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLAorICAgICAgICBtX2Zy
b250ZW5kUm91dGVyLmdldCgpLAorICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpCisg
ICAgfTsKKworICAgIFdlYkFnZW50Q29udGV4dCB3ZWJDb250ZXh0ID0geworICAgICAgICBiYXNl
Q29udGV4dCwKKyAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpCisgICAgfTsKKwor
ICAgIFBhZ2VBZ2VudENvbnRleHQgcGFnZUNvbnRleHQgPSB7CisgICAgICAgIHdlYkNvbnRleHQs
CisgICAgICAgIG1fcGFnZQorICAgIH07CisKKyAgICBhdXRvIGluc3BlY3RvckFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5z
cGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudFB0ci5nZXQoKTsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAgIG1fYWdl
bnRzLmFwcGVuZChXVEY6Om1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcGFn
ZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgJnBhZ2UsIGluc3BlY3RvckNsaWVudCwgbV9vdmVybGF5Lmdl
dCgpKTsKKyAgICBhdXRvIHBhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
UGFnZUFnZW50PihwYWdlQ29udGV4dCwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkp
OwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgp
OwogICAgIG1fcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEY6Om1vdmUocGFnZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHJ1bnRpbWVBZ2VudFB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCAmcGFnZSwgcGFnZUFnZW50KTsKKyAgICBhdXRvIHJ1bnRpbWVBZ2VudFB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCk7
CiAgICAgUGFnZVJ1bnRpbWVBZ2VudCogcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50UHRyLmdl
dCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudChydW50
aW1lQWdlbnQpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUocnVudGltZUFnZW50UHRy
KSk7CiAKLSAgICBhdXRvIGRvbUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JE
T01BZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsICptX2luamVj
dGVkU2NyaXB0TWFuYWdlciwgbV9vdmVybGF5LmdldCgpKTsKKyAgICBhdXRvIGRvbUFnZW50UHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VB
Z2VudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICBtX2RvbUFnZW50ID0gZG9tQWdlbnRQdHIuZ2V0
KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkb21BZ2VudFB0cikpOwogCi0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCwgbV9kb21B
Z2VudCkpOwogCi0gICAgYXV0byBkYXRhYmFzZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOworICAg
IGF1dG8gZGF0YWJhc2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRhdGFi
YXNlQWdlbnQgPSBkYXRhYmFzZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEY6Om1vdmUoZGF0YWJhc2VBZ2VudFB0cikpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgKm1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCkpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXBsYXlBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JSZXBsYXlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0byBk
b21TdG9yYWdlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3BhZ2VBZ2VudCk7CisgICAgYXV0
byBkb21TdG9yYWdlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KTsKICAgICBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCA9IGRvbVN0b3JhZ2VBZ2VudFB0ci5nZXQoKTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRvbVN0b3JhZ2VBZ2VudFB0cikpOwogCi0gICAg
YXV0byB0aW1lbGluZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6UGFnZUluc3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50KTsKKyAgICBhdXRv
IHRpbWVsaW5lQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQsIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJ
bnNwZWN0b3IsIGluc3BlY3RvckNsaWVudCk7CiAgICAgbV90aW1lbGluZUFnZW50ID0gdGltZWxp
bmVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHRpbWVsaW5l
QWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcmVzb3VyY2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBw
YWdlQWdlbnQsIGluc3BlY3RvckNsaWVudCk7CisgICAgYXV0byByZXNvdXJjZUFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PihwYWdlQ29udGV4dCwgcGFn
ZUFnZW50LCBpbnNwZWN0b3JDbGllbnQpOwogICAgIG1fcmVzb3VyY2VBZ2VudCA9IHJlc291cmNl
QWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShyZXNvdXJjZUFn
ZW50UHRyKSk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNvbnNvbGVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2RvbUFnZW50KTsK
KyAgICBhdXRvIGNvbnNvbGVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVB
Z2VudD4ocGFnZUNvbnRleHQsIG1fZG9tQWdlbnQpOwogICAgIFdlYkNvbnNvbGVBZ2VudCogY29u
c29sZUFnZW50ID0gY29uc29sZUFnZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9h
Z2VudHMuYXBwZW5kKFdURjo6bW92ZShjb25zb2xlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gZGVi
dWdnZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KCptX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdl
bnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwgbV9v
dmVybGF5LmdldCgpKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50UHRyLmdl
dCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoZGVidWdnZXJBZ2VudFB0cikpOwog
Ci0gICAgYXV0byBkb21EZWJ1Z2dlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fZG9tQWdl
bnQsIG1fZGVidWdnZXJBZ2VudCk7CisgICAgYXV0byBkb21EZWJ1Z2dlckFnZW50UHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgbV9k
b21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50KTsKICAgICBtX2RvbURlYnVnZ2VyQWdlbnQgPSBkb21E
ZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoZG9t
RGVidWdnZXJBZ2VudFB0cikpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIHBhZ2VBZ2VudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvcldvcmtlckFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4
dCwgcGFnZUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAK
ICAgICBBU1NFUlQobV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KTsKICAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGFiOTBkNGU1Mjhm
N2QwNGVlNWM3MGJmMDViNDBjYjMxZjE4NjdkOGEuLmZiMGQ0MmM2MDFkODA0YzhkOTFmNmJmYTBm
YmU2NDIzOTg0ZDQ2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTm9k
ZUZpbmRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgpAQCAtMjAxLDkgKzIwMiwxMSBAQCBTdHJpbmcgSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJu
ICIiOwogfQogCi1JbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNw
ZWN0b3JPdmVybGF5KiBvdmVybGF5KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVj
dG9yRE9NQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKKyAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTSIpLCBjb250ZXh0KQorICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoSW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwg
bV9vdmVybGF5KG92ZXJsYXkpCiB7CkBAIC0yMTUsMTYgKzIxOCwxMyBAQCBJbnNwZWN0b3JET01B
Z2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5nRm9yTm9k
ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwotCiAgICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5Pigp
OwogICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KG1faGlzdG9y
eS5nZXQoKSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdl
bnQodGhpcyk7Ci0gICAgbV9kb2N1bWVudCA9IG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKTsKKyAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CiAKICAgICBpZiAobV9ub2RlVG9Gb2N1cykKICAgICAgICAgZm9jdXNOb2RlKCk7CkBA
IC0yMzIsOSArMjMyLDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGYKIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIG1faGlzdG9yeS5yZXNldCgp
OwogICAgIG1fZG9tRWRpdG9yLnJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOGU5YjEwNjIwOGYxYzU1ZTgwNmYzMDAyNzcyMzNh
NzljNWJhYmNkNi4uOWY2YWViMTg3ZGQ5MzEzOGNmOGRlNjQyODczZWIyNDUxYzRmNThjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMxLDcg
KzMxLDYgQEAKICNkZWZpbmUgSW5zcGVjdG9yRE9NQWdlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJU
aW1lci5oIgpAQCAtNjcsNyArNjYsNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEhUTUxFbGVt
ZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwogY2xh
c3MgTm9kZTsKIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7CkBAIC0xMDQsNyAr
MTAyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihF
bGVtZW50KikgPSAwOwogICAgIH07CiAKLSAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXImLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgSW5zcGVjdG9yRE9NQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRv
RXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjQ3LDkgKzI0NSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8Rmxv
YXRRdWFkPiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQ
YWdlQ29vcmRpbmF0ZXMpOwogCisgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIm
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0g
ICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07CiAK
ICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXkgeyBudWxscHRyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggZjgzZWQ3YTEwZTFmYjNhN2U4NjNhMjUzYzc3NmRmNGUwYzA5OGQ0YS4uYjI3YjFlZWMy
N2MxNzE2YmYwMzA0YjNlMDNiOGFlNGFiOGQyZDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNjAsOCAr
NjAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KQotICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKK0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBjb250ZXh0KQor
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAs
IG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2Vu
dCkKIHsKQEAgLTEwMSwxNSArMTAyLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTURlYnVnZ2Vy
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBudWxscHRyOwotCiAgICAgZGlzYWJsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBiZjQz
MTkxMzgwYzE1M2VlNDg1YWQyZDY4NDFhODJhMDFjMDlmYzY4Li41NmJmNjUwMDU3NGU3MTc4NTMz
ODAxNTA2MWU5Mzk2MDlhNzhlODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7
Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGIyZGU5
MmJjMGE1NzQ1OGE2YTQzZWIyNTA2Yjc0OWYzMzAxNDY0ZWEuLjdkMzZiMWM4NTg0MWU3ZDE0ZTZi
YWM0ODgyYjQzNTA4MDk3YjBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01NCw4ICs1NCwxMCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRP
TVN0b3JhZ2UiKSwgY29udGV4dCkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpE
T01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KHRoaXMpOwpAQCAtNjYs
MTcgKzY4LDEyIEBAIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9u
dGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
bnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIEVycm9y
U3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CkBAIC0xOTksOCArMTk2LDgg
QEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9y
YWdlQXJlYShFcnJvclN0cmluZyYgZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9y
YWdlKQotICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvblN0b3JhZ2Uo
KS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
OwotICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCp0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAg
IHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3Jh
Z2VBcmVhKCp0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaAppbmRleCA1OWM2ODA4N2E5YjkzODY2MWNiYjU2MTdhOGQ4OThlZDMxMDE3MDhk
Li42NjI5YWU3ZmNiYWIwN2ZlOTk0OTViYTNjMDA4MmUyZDE0Mjk0OTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC00
NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZTsKQEAgLTU1LDcgKzU0LDcg
QEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2VudCopOworICAgIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiM2IyNzlm
OWQ1MGJiODYzNmIxODM0MjQxMTc1NWQwY2JhMjgyMjg1Li44NjExM2ViYzRhYjBkZjcxZjJhZjJk
MzhmZWRmZGVmM2JjZDM2ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMTIsOCArMjEyLDEwIEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogICAgIG1fcmVzb3VyY2VzLmNs
ZWFyKCk7CiB9CiAKLUluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCitJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFn
ZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkRhdGFiYXNlIiksIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudCh0aGlzKTsKIH0KQEAgLTIyMywxNyArMjI1LDEyIEBAIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMuc2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRy
OwotCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmlu
ZGV4IDBmMWY5Mjc5ZGZiYmVhMmEwOGY2NDgwMTIyYWE2MjViM2VkZDdhYjkuLjZjOWQyMjc1MWJi
YThiMDIwNzNiNWEyOThiM2M2NzdiNzc5MjFlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtNDQsMTQgKzQ0LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlOwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzJik7CisgICAgZXhwbGljaXQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudChXZWJBZ2VudENvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCBhMDg2OTc5YTM4Y2ZmNjM3YTJhMTUwMDAxMmU5OWYzZTA4OTUyMDYyLi41Y2I5YWRhOWFk
NGE5NzMwMDAyZmE1N2VlOGNlMWY4MTQ2ZjYxMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2Niw5ICs1NjYs
MTAgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZQogCi1JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBj
b250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIkluZGV4ZWREQiIpLCBjb250ZXh0KQorICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKIHsKIH0KQEAgLTU3NywxNSArNTc4LDEyIEBAIEluc3BlY3RvckluZGV4
ZWREQkFnZW50Ojp+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRp
c2FibGUodW51c2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggODRhOThmZGM0OGJkMDA5MTNmMzUzMDkxOGYyNDgw
Mzc0ZDdjZmNlNS4uYjQ0NzgxMGNjOTk5MWFjNGFhZDU0NDVlNjA4NTA1OWJmZjkyNTI3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyJiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBpbl9zZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVOYW1lLCBSZWY8Q2xlYXJPYmplY3RTdG9yZUNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbmRl
eGVkREJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIg
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYThjNWJhZDhiM2E0MWRhZWUxZjIyMjI0YTRhMjljNzkw
NDUyNDRhNC4uZGJkMjQ3ZmJhMTAzMzU3OTJjMTVkN2RmZWRlYmEzM2JmZmEwOWU5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbgogICAgIGlm
IChwYWdlQWdlbnQpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKCZmcmFtZSwgd29ybGQpOwogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkgewotICAgICAg
ICBpZiAocGFnZUFnZW50ICYmICZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkgJiYg
JmZyYW1lID09IHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpCisgICAgICAgIGlmIChwYWdlQWdlbnQg
JiYgJndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSAmJiAmZnJhbWUgPT0gJnBhZ2VB
Z2VudC0+bWFpbkZyYW1lKCkpCiAgICAgICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRDbGVhck1h
aW5GcmFtZVdpbmRvd09iamVjdCgpOwogICAgIH0KICAgICBpZiAoUGFnZVJ1bnRpbWVBZ2VudCog
cGFnZVJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZVJ1bnRpbWVBZ2VudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAppbmRleCA3ZmJkZmE0NmJmMGI0Y2Y0Mjg2ODViMTliNTczMTFiNDk0YmI2YTMy
Li42NDE1YWZkOWE3MTk0OTFmNTQ2NTg0OTA3ZDMxMWIyMmFmYWFjYTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAg
LTQ2LDggKzQ2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKK0luc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJMYXllclRyZWUiKSwgY29udGV4dCkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNw
ZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CiAKQEAgLTU2LDE3ICs1OCwxMiBAQCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6fkluc3BlY3RvckxheWVyVHJlZUFnZW50KCkKICAgICByZXNldCgpOwog
fQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBkaXNh
YmxlKHVudXNlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IGZhMjQwMTU4NDdiZjE0Y2RlN2ExMDEyNmVjOTQ4Zjlh
YzJmNzQ3NjUuLjEwZGVkZjIxOTVlNWZkYzgxYmZlZTJiNWZhOTBkOGYzZWY0MzE3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
CkBAIC00MCwxNCArNDAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwotCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3Mg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBlYzUyZjQ3Nzc4NDFiMTRhNWNkMGEwNWQ0
NTYxNzAzMjc3ZGU3ZWIxLi4yNWVkMjhkOTc0MzU0ZTAyZmVmNzJjZDYzY2RiZDJiNWEyZjdkYmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMzI2LDI1ICszMjYsMjIgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3Vy
Y2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnMKICAgICByZXR1
cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRSZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsK
IH0KIAotSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50
KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBt
X3BhZ2UocGFnZSkKK0luc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
UGFnZSIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlBhZ2VCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAg
ICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQogewogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIq
IGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAg
IGRpc2FibGUodW51c2VkKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMzY2LDggKzM2
Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogICAg
IHN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBzdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpCi0gICAgICAgIG1fb3JpZ2luYWxTY3JpcHRFeGVj
dXRpb25EaXNhYmxlZCA9ICFmcmFtZS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKTsKKyAg
ICBtX29yaWdpbmFsU2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQgPSAhbWFpbkZyYW1lKCkuc2V0dGlu
Z3MoKS5pc1NjcmlwdEVuYWJsZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmKQpAQCAtNDA5LDEzICs0MDUsMTMgQEAgdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcmIGVycm9y
LCBjb25zdAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVh
dGVPbkxvYWRPbmNlID0gb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFs
U2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCA6ICIiOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkucmVsb2FkKG9wdGlvbmFsSWdub3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNoZSA6
IGZhbHNlKTsKKyAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKG9wdGlvbmFs
SWdub3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNoZSA6IGZhbHNlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1
cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUpOwotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgpOwogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1
cmwpKTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVzdChmcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNo
b3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTDo6UmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CkBAIC01MDMsNyArNDk5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKICAgICAvLyBhbHdh
eXMgcmV0dXJuIHRoZSBzYW1lIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgYm9vbCByYXdDb29raWVz
SW1wbGVtZW50ZWQgPSBmYWxzZTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHVybCA6IGFsbFJlc291cmNlc1VS
THNGb3JGcmFtZShmcmFtZSkpIHsKQEAgLTUzNSwxMyArNTMxLDEzIEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFyCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAg
ICBVUkwgcGFyc2VkVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKLSAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNv
b2tpZU5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVl
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPiYgb2JqZWN0KQogewotICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVU
cmVlKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBvYmplY3QgPSBidWlsZE9iamVjdEZvckZy
YW1lVHJlZSgmbV9wYWdlLm1haW5GcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCog
YmFzZTY0RW5jb2RlZCkKQEAgLTYxNyw3ICs2MTMsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bgogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRp
b25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgodGV4
dCwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
X3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIFN0
cmluZyBjb250ZW50OwogCiAgICAgICAgIGZvciAoYXV0byogY2FjaGVkUmVzb3VyY2UgOiBjYWNo
ZWRSZXNvdXJjZXNGb3JGcmFtZShmcmFtZSkpIHsKQEAgLTY2NSwxMSArNjYxLDggQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYs
IEluc3BlY3Rvcjo6UGFnZUIKIHsKICAgICBib29sIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVy
ID0gZmFsc2U7CiAgICAgYm9vbCBkaXNhYmxlZEluU2V0dGluZ3MgPSBmYWxzZTsKLSAgICBGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgZGlzYWJs
ZWRCeVNjcmlwdENvbnRyb2xsZXIgPSAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKLSAgICAgICAgZGlzYWJsZWRJblNldHRpbmdzID0g
IWZyYW1lLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOwotICAgIH0KKyAgICBkaXNhYmxl
ZEJ5U2NyaXB0Q29udHJvbGxlciA9IG1haW5GcmFtZSgpLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKKyAgICBkaXNhYmxlZEluU2V0dGluZ3MgPSAh
bWFpbkZyYW1lKCkuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKTsKIAogICAgIGlmICghZGlz
YWJsZWRCeVNjcmlwdENvbnRyb2xsZXIpIHsKICAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6
UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpBbGxvd2VkOwpAQCAtNjg0LDEx
ICs2NzcsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQYWdlQgogCiB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIHZhbHVl
KQogewotICAgIGlmICghbWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1faWdu
b3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb24gPSB0cnVlOwotICAgIG1haW5GcmFtZSgpLT5z
ZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoIXZhbHVlKTsKKyAgICBtYWluRnJhbWUoKS5zZXR0
aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoIXZhbHVlKTsKICAgICBtX2lnbm9yZVNjcmlwdHNFbmFi
bGVkTm90aWZpY2F0aW9uID0gZmFsc2U7CiB9CiAKQEAgLTc0MiwxMCArNzMyLDkgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUmIGZyYW1lKQogICAgIH0KIH0K
IAotRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpbkZyYW1lKCkKK01haW5GcmFtZSYgSW5z
cGVjdG9yUGFnZUFnZW50OjptYWluRnJhbWUoKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCByZXR1cm4gYSBGcmFtZSYKLSAgICByZXR1cm4gJm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAg
cmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKTsKIH0KIAogRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpCkBAIC03ODUsNyArNzc0LDcgQEAg
U3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIAogRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKQogewotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkb2N1bWVudE9yaWdpbiA9IGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBpZiAoZG9jdW1lbnRPcmlnaW4tPnRv
UmF3U3RyaW5nKCkgPT0gb3JpZ2luUmF3U3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1l
OwpAQCAtOTA4LDYgKzg5Nyw4IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzY3JpcHRzRW5h
YmxlZChib29sIGlzRW5hYmxlZCkKIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZy
YW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1l
KQogeworICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKKwogICAgIGF1dG8gZnJhbWVPYmpl
Y3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAg
LnNldElkKGZyYW1lSWQoZnJhbWUpKQogICAgICAgICAuc2V0TG9hZGVySWQobG9hZGVySWQoZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKQpAQCAtOTI5LDYgKzkyMCw4IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWls
ZE9iamVjdEZvckZyYW1lKEZyCiAKIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lVHJl
ZShGcmFtZSogZnJhbWUpCiB7CisgICAgQVNTRVJUX0FSRyhmcmFtZSwgZnJhbWUpOworCiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoZnJhbWUpOwogICAgIGF1dG8gc3VicmVzb3VyY2VzID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJj
ZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNyZWF0ZSgpCkBAIC05ODgsNyArOTgxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIG1lZGlhKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2VtdWxhdGVkTWVkaWEgPSBt
ZWRpYTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICAgICAgZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dCgpOwpAQCAtMTAwMywxOSArOTk2LDE4IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJiBtZWRpYSkKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29s
KiBvdXRQYXJhbSkKIHsKLSAgICAqb3V0UGFyYW0gPSBtX3BhZ2UtPnNldHRpbmdzKCkuc2hvd0Rl
YnVnQm9yZGVycygpIHx8IG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93UmVwYWludENvdW50ZXIoKTsK
KyAgICAqb3V0UGFyYW0gPSBtX3BhZ2Uuc2V0dGluZ3MoKS5zaG93RGVidWdCb3JkZXJzKCkgfHwg
bV9wYWdlLnNldHRpbmdzKCkuc2hvd1JlcGFpbnRDb3VudGVyKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwg
Ym9vbCB2aXNpYmxlKQogewotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTaG93RGVidWdCb3Jk
ZXJzKHZpc2libGUpOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTaG93UmVwYWludENvdW50
ZXIodmlzaWJsZSk7CisgICAgbV9wYWdlLnNldHRpbmdzKCkuc2V0U2hvd0RlYnVnQm9yZGVycyh2
aXNpYmxlKTsKKyAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXRTaG93UmVwYWludENvdW50ZXIodmlz
aWJsZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpCiB7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1lKTsKKyAgICBG
cmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKIAogICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwogICAgIEFT
U0VSVChkb21BZ2VudCk7CkBAIC0xMDIzLDcgKzEwMTUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
U3RyaQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90Tm9kZSgqZnJhbWUs
ICpub2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gV2Vi
Q29yZTo6c25hcHNob3ROb2RlKGZyYW1lLCAqbm9kZSk7CiAgICAgaWYgKCFzbmFwc2hvdCkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNhcHR1cmUgc25h
cHNob3QiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzNCwxNSArMTAyNiwxNCBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgU3RyaQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJM
KQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIEFTU0VSVChmcmFtZSk7
CisgICAgRnJhbWUmIGZyYW1lID0gbWFpbkZyYW1lKCk7CiAKICAgICBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmU7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0g
PT0gIlZpZXdwb3J0IikKICAgICAgICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNJblZpZXdD
b29yZGluYXRlczsKIAogICAgIEludFJlY3QgcmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQp
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdEZy
YW1lUmVjdCgqZnJhbWUsIHJlY3RhbmdsZSwgb3B0aW9ucyk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCByZWN0YW5n
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFzbmFwc2hvdCkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiKTsKQEAgLTEwNjAs
MTQgKzEwNTEsMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmhhbmRsZUphdmFTY3JpcHRE
aWFsb2coRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGEKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmFyY2hpdmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEp
CiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkgewot
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gbWFpbiBmcmFtZSIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwogCiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCi0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJhbWUpOworICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KCZmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVND
SUlMaXRlcmFsKCJDb3VsZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIik7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAppbmRleCBlOWFkODY2YmFlYzA0MTI1MjZhMGFkYzZhYjUwYjM2YjVhZmY1ZGEz
Li4wNWVlZmFmMmUzMTAyNmY1ZTkxOTg5ZmM0ZWJlNjMxYjNlODA1Y2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC01Niw3ICs1Niw3IEBA
IGNsYXNzIEZyYW1lOwogY2xhc3MgRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBj
bGFzcyBJbnNwZWN0b3JPdmVybGF5OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK2NsYXNz
IE1haW5GcmFtZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7
CkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhCiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgSW5z
cGVjdG9yUGFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNw
ZWN0b3JPdmVybGF5Kik7CiAKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CiAgICAgICAgIERvY3Vt
ZW50UmVzb3VyY2UsCkBAIC0xNDQsOCArMTQ0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQotICAgIFBhZ2UqIHBhZ2Uo
KSB7IHJldHVybiBtX3BhZ2U7IH0KLSAgICBGcmFtZSogbWFpbkZyYW1lKCk7CisgICAgUGFnZSYg
cGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lKCk7CiAg
ICAgU3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJhbWVGb3JJZChjb25z
dCBTdHJpbmcmIGZyYW1lSWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFtZUlkKEZy
YW1lKik7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAKLSAgICBQYWdlKiBtX3BhZ2UgeyBudWxscHRyIH07CisgICAgUGFnZSYgbV9w
YWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgSW5z
cGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCAzNDkwZTc1YzIy
MGVjNzdiZDE2Y2RlNmE5ZjJlMTk4N2Y1NjU4ODZkLi44YmRhMDlkZjBiZDZlNGRiOWJiOTU3NmVk
M2I2OWYxNGZhNDkxMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE1Niw5ICsxNTYsMTEgQEAgc3RhdGljIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TZWdtZW50PiBidWlsZEluc3BlY3Rvck9i
amVjdEZvclMKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
Okluc3BlY3RvclJlcGxheUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUmVwbGF5IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAg
LCBtX3BhZ2UoKnBhZ2VBZ2VudC0+cGFnZSgpKQorSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Okluc3Bl
Y3RvclJlcGxheUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSZXBsYXkiKSwgY29udGV4dCkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6OlJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogewogfQogCkBAIC0xNzMsMTEgKzE3NSw4IEBAIFdlYkNvcmU6OlNlc3Npb25TdGF0
ZSBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c2Vzc2lvblN0YXRlKCkgY29uc3QKICAgICByZXR1cm4g
bV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UmVwbGF5
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Ci0KICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQodGhpcyk7CiAg
ICAgQVNTRVJUKHNlc3Npb25TdGF0ZSgpID09IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3Rp
dmUpOwogCkBAIC0xOTIsOSArMTkxLDYgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIKIAogdm9p
ZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
bnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JSZXBsYXlBZ2VudChudWxscHRyKTsKIAogICAg
IC8vIERyb3AgcmVmZXJlbmNlcyB0byBhbGwgc2Vzc2lvbnMgYW5kIHNlZ21lbnRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCBmN2Jl
YTZmZGE1NWI2MGQ4OGUwM2U5Mzc1MDFmYmQ2MzJhYzhlZjhiLi44MzNlZWNlMDExYzVmOTIxMDI0
ODgwNzE4MGRhZjg3ODg1ZmQ4ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBEb2N1bWVudExv
YWRlcjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlcGxh
eVNlc3Npb247CiBjbGFzcyBSZXBsYXlTZXNzaW9uU2VnbWVudDsKQEAgLTYyLDcgKzYxLDcgQEAg
Y2xhc3MgSW5zcGVjdG9yUmVwbGF5QWdlbnQgZmluYWwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSZXBsYXlBZ2VudCk7CiBw
dWJsaWM6Ci0gICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIElu
c3BlY3RvclBhZ2VBZ2VudCopOworICAgIEluc3BlY3RvclJlcGxheUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXBsYXlBZ2VudCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IDAwMWMzM2E4MTQ3ZDNmZGE5MDgxNWU4OTZlOTIyNGZiMGZhMDQxNDQuLmFhZWUzYzI4YmQx
MTY2ZjYxNThiMzJhZGYzMTAzOWIxNjRjZGZkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTE2MiwyNSArMTYyLDIy
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLUluc3BlY3RvclJlc291cmNlQWdlbnQ6
Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwgY29udGV4dCkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkK
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogewogfQogCi12b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6Ok5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAg
RXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGYwODI0
ZTI4YTJmY2YzMWI4MjM1NzE0N2ZhNzQwMTYzNGU4ZjQ0YzkuLmQyNWE3YzAyODQyMTFjMTY3NmUw
OWZlMWE1NTAwZjgyMDhkZjExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTUsNyArNTUsNiBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JQYWdlQWdlbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmV0d29y
a1Jlc291cmNlc0RhdGE7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKQEAgLTc2
LDcgKzc1LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50Kik7
CisgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXNv
dXJjZUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggYjA5YzExNTliNjQxMDg5MjcxMmFlYzNkZTZlYzYz
NzFiMTkxOWExZC4uNzZjMWY4Yzg4NmJhMTI3YzI2ZWUzNzM1ZWFiZGE0ZTRiYjQ4NGI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcApAQCAtOTAsMTEgKzkwLDggQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9u
dGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwotCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCiAg
ICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCkBAIC0xMDMsOSArMTAwLDYgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXQKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQog
ewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKLQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0
ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAogICAgIGlmIChyZWFzb24gIT0g
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsK
QEAgLTczMCw4ICs3MjQsMTAgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21w
bGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiAgICAgfQogfQogCi1J
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
SW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGNvbnRleHQpCisgICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFnZW50KHBh
Z2VBZ2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faW5zcGVjdG9yVHlwZSh0
eXBlKQpAQCAtNzg0LDkgKzc4MCw0IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6bG9j
YWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgcXVh
ZC0+c2V0UDQoZnJhbWVWaWV3LmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQoYWJz
b2x1dGUucDQoKSkpKTsKIH0KIAotUGFnZSogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSgp
Ci17Ci0gICAgcmV0dXJuIG1fcGFnZUFnZW50ID8gbV9wYWdlQWdlbnQtPnBhZ2UoKSA6IG51bGxw
dHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDVhOTBiMzcwYmYzZTUxM2Zi
ZGZiNWQzZDMyMDFjNDdmNTBhYjkwMzEuLjFjYmNlNTVmOGVkOGNkNGQ0OWEwMDlkZTJlMGYwN2U1
N2M3ZjU5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaApAQCAtNTQsNyArNTQsNiBAQCBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
LWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgVVJMOwog
Y2xhc3MgUGFnZTsKQEAgLTExOCw3ICsxMTcsNyBAQCBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50IGZpbmFsCiBwdWJsaWM6CiAgICAgZW51bSBJbnNwZWN0b3JUeXBlIHsgUGFnZUluc3BlY3Rv
ciwgV29ya2VySW5zcGVjdG9yIH07CiAKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNw
ZWN0b3JDbGllbnQqKTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KFdlYkFnZW50Q29udGV4
dCYsIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclR5cGUsIEluc3BlY3RvckNsaWVudCop
OwogICAgIHZpcnR1YWwgfkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTIzMCw3ICsy
MjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJSZWNvcmRTdGFjaygpOwogCiAgICAgdm9p
ZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYs
IEZsb2F0UXVhZCopOwotICAgIFBhZ2UqIHBhZ2UoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldlYkFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldlYkFnZW50QmFzZS5oCmluZGV4IDRjZTBjN2JhNDc2ODYzZTRkNjNhZjQzMjYxNmIyZDY0OWIx
MTY0M2YuLjc0MzQyOTM0MDI5MmU1YmYwMzc3YTJhOWRiYzI3ZTNiMDBhZDdkMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMz
LDEyICszMyw0NSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOworY2xhc3MgUGFnZTsKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworCisvLyBGSVhN
RTogbW92ZSB0aGlzIHRvIEluc3BlY3RvciBuYW1lc3BhY2Ugd2hlbiByZW1haW5pbmcgYWdlbnRz
IG1vdmUuCitzdHJ1Y3QgV2ViQWdlbnRDb250ZXh0IDogcHVibGljIEluc3BlY3Rvcjo6QWdlbnRD
b250ZXh0IHsKKyAgICBXZWJBZ2VudENvbnRleHQoQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICAgICA6IEFnZW50Q29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIGluc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICB7CisgICAgfQorCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50czsKK307CisKK3N0cnVjdCBQYWdlQWdlbnRDb250ZXh0IDogcHVibGljIFdl
YkFnZW50Q29udGV4dCB7CisgICAgUGFnZUFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNv
bnRleHQsIFBhZ2UmIGluc3BlY3RlZFBhZ2UpCisgICAgICAgIDogV2ViQWdlbnRDb250ZXh0KGNv
bnRleHQpCisgICAgICAgICwgaW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdlKQorICAgIHsKKyAg
ICB9CisKKyAgICBQYWdlJiBpbnNwZWN0ZWRQYWdlOworfTsKKworc3RydWN0IFdvcmtlckFnZW50
Q29udGV4dCA6IHB1YmxpYyBXZWJBZ2VudENvbnRleHQgeworICAgIFdvcmtlckFnZW50Q29udGV4
dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKKyAgICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCB3
b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICB7CisgICAgfQorCisgICAg
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworfTsKIAogY2xhc3MgSW5zcGVj
dG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKIHBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIEluc3BlY3RvckFnZW50
QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICAg
ICAgOiBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZShuYW1lKQotICAgICAgICAsIG1faW5z
dHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICAgICAsIG1faW5zdHJ1
bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgewogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAKaW5kZXggZTA4YjdhN2M4NWY0NjUxOWRhMzIwYTQzYTZjYmI1Y2Q0ODc0NDU5ZC4uNDRhMzQ1
ZWM1NDc1YmUxNjA4OGRkYWY0ZTAwYzNmYzdlNGU0NDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0xMDEsOCArMTAxLDEw
IEBAIHByaXZhdGU6CiAKIGludCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRD
aGFubmVsOjpzX25leHRJZCA9IDE7CiAKLUluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JX
b3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCitJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiV29ya2VyIiksIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JXb3JrZXJB
Z2VudCh0aGlzKTsKIH0KQEAgLTExMiwxMCArMTE0LDggQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvcldvcmtlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKQpAQCAtMTIzLDkgKzEyMyw2IEBAIHZvaWQgSW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlCiAgICAgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQgPSBmYWxzZTsKICAg
ICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwotCi0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxs
cHRyOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApp
bmRleCBmY2JlZTBkMWE0NTQwMzkwYzBmZjA3YWJkNjY1MTg5MWJhZTIyZjgwLi5kMmY1Y2U3MDAy
YmY4ODg2YjY1MTIxYWU1ZGNlN2JhODM0MjUyZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZVByb3h5OwogCkBAIC01Miw3ICs1MSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Y2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRC
YXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEluc3Bl
Y3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudChXZWJBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JXb3JrZXJBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwCmluZGV4IDY3MTk3NDczMTIwODJhNzBjNjRjNmEyZTI4MmQ1MzZmYWVmZWIw
ZTcuLmYyNGM2NDg3NWViOWM5NzgyZDM2NGYyZDc2YTg4Y2NkZWFlMDVhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQxLDggKzQxLDgg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0g
ICAgOiBXZWJDb25zb2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorUGFnZUNvbnNvbGVB
Z2VudDo6UGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCkKKyAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQogICAg
ICwgbV9pbnNwZWN0b3JET01BZ2VudChkb21BZ2VudCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IGIxMzU0MDRhZTRmN2EyNTM1MmEwNDhh
MWM1ZDVhNjdmNDM1YjRmNjkuLjRjNzU4ZjBjOWRjNjM1NjliYjI5MTA3ZDQ5YzA5MmYyMzU2YTRk
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAt
MzIsNiArMzIsNyBAQAogI2lmbmRlZiBQYWdlQ29uc29sZUFnZW50X2gKICNkZWZpbmUgUGFnZUNv
bnNvbGVBZ2VudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJXZWJDb25zb2xlQWdlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyAr
NDMsNyBAQCBjbGFzcyBQYWdlQ29uc29sZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkNvbnNvbGVB
Z2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbnNvbGVBZ2VudCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUNvbnNvbGVBZ2VudChX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnNwZWN0b3JET01BZ2VudCopOworICAgIFBhZ2VD
b25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKICAgICB2
aXJ0dWFsIH5QYWdlQ29uc29sZUFnZW50KCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhZTNiMTQ1YzM0NjUz
OTA2M2Q3MjQxNGJkY2I5ZGEwZjI1ZmY4YmY1Li4xODkyYWUzNzdkYWJlOTc3MjkwOGM0MmU3Zjlh
M2I0NjgwYTg4ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5oIgpAQCAtNTAsMTEgKzUxLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dl
ckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKLSAgICA6IFdlYkRlYnVnZ2Vy
QWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorUGFnZURl
YnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5
KQorICAgIDogV2ViRGVidWdnZXJBZ2VudChjb250ZXh0KQorICAgICwgbV9wYWdlKGNvbnRleHQu
aW5zcGVjdGVkUGFnZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3Zl
cmxheShvdmVybGF5KQotICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcigqcGFnZUFnZW50LT5wYWdl
KCkpCisgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKG1fcGFnZSkKIHsKIH0KIApAQCAtNzYsNyAr
NzgsNyBAQCBTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChj
b25zdCBTY3JpcHQmIHNjcmlwdCkKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFTQ0lJTGl0ZXJhbCgiWC1T
b3VyY2VNYXAiKSkpOwogCiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewotICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2Uo
bV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJs
KSk7CisgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNo
ZWRSZXNvdXJjZSgmbV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3Jp
cHQudXJsKSk7CiAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgU3RyaW5nIHNv
dXJjZU1hcEhlYWRlciA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3Vy
Y2VNYXBIVFRQSGVhZGVyKTsKICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlzRW1w
dHkoKSkKQEAgLTExOCwxMyArMTIwLDEzIEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnVubXV0
ZUNvbnNvbGUoKQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9n
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9w
YWdlQWdlbnQtPnBhZ2UoKS0+Y29uc29sZSgpLmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywg
U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgbV9wYWdl
QWdlbnQtPnBhZ2UoKS5jb25zb2xlKCkuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBTY3Jp
cHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKIH0KIAogSW5qZWN0ZWRT
Y3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlm
ICghZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOworICAg
ICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1f
cGFnZUFnZW50LT5tYWluRnJhbWUoKSk7CiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IDc1YWYyOGU0OWY3
OWViNzA4YzA0NDM3NmM4OWZlN2JiM2M4YmZlYjUuLmJhZWUyYmFhOTMzNDE4ZWZmY2YxMGRmNTk2
YmM0YTgxNmY2MjU0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdn
ZXJBZ2VudC5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVy
OwogCkBAIC00Nyw3ICs0Niw3IEBAIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVi
bGljIFdlYkRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1
Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQ
YWdlRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7
CisgICAgUGFnZURlYnVnZ2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYsIEluc3BlY3RvclBhZ2VB
Z2VudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVidWdnZXJBZ2Vu
dCgpIHsgfQogCiAgICAgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwpAQCAt
NzEsOCArNzAsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNz
YWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CiAKLSAgICBJbnNwZWN0
b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OworICAgIFBhZ2UmIG1fcGFnZTsK
IAorICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yT3Zl
cmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwogICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciBt
X3NjcmlwdERlYnVnU2VydmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmNwcAppbmRleCA5YWVkNzEwMGQzMDkxYmU1NjMyYzM4NWEwOWRjZTg2ZDkw
MTI4NjVjLi45MmEwN2M3YzllYzNhMmQxOThjYTAxNzI1MTY5ZTcwY2FkMjZlZWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01MywyNCAr
NTMsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFu
YWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlw
dE1hbmFnZXIpCitQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIDogSW5z
cGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX2luc3Bl
Y3RlZFBhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBh
Z2UpCiB7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1bnRp
bWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIg
PSBudWxscHRyOwotCiAgICAgU3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiAK
QEAgLTEyMCw3ICsxMTcsNyBAQCBKU0M6OlZNJiBQYWdlUnVudGltZUFnZW50OjpnbG9iYWxWTSgp
CiBJbmplY3RlZFNjcmlwdCBQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkK
IHsKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS0+bWFp
bkZyYW1lKCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29y
bGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CiAgICAgICAgIEluamVj
dGVkU2NyaXB0IHJlc3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNOb1ZhbHVlKCkpCiAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3I6IG1haW4g
d29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kLiIpOwpAQCAtMTQ2LDcgKzE0Myw3IEBA
IHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiB2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpCiB7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4+IGlzb2xhdGVkQ29udGV4
dHM7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1l
LT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2Vu
dC0+ZnJhbWVJZChmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuaAppbmRleCAzZTRiZWRmN2I3ZmM5YTRhZTFmMTM4ZGY4MmEyZjNjOWMwMDYzYzM0Li5i
NzkwZTcwMTAxZGUxMjE4OWRiNWZiMTMwNGFmMWZiZTY0ODE2MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpZm5k
ZWYgUGFnZVJ1bnRpbWVBZ2VudF9oCiAjZGVmaW5lIFBhZ2VSdW50aW1lQWdlbnRfaAogCisjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oPgogCkBAIC01NCw3ICs1NSw3IEBAIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogY2xhc3MgUGFnZVJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgUGFnZVJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlciYsIFBhZ2UqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBQYWdlUnVudGlt
ZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0
dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAKLSAg
ICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CisgICAgUGFnZSYgbV9pbnNwZWN0ZWRQYWdlOwogCiAg
ICAgYm9vbCBtX21haW5Xb3JsZENvbnRleHRDcmVhdGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDliMDBmMmZkZWEz
ZmI5NTc5MzZjMmUyMzM3MDM3NmVlOTg2ZmM0MDQuLmQxM2IyOTQ0NjdiZWQ5ODhjODgyNjk1Nzky
MzVlMzBhOWI4MTkyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xl
QWdlbnQuY3BwCkBAIC00MSw4ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQo
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorV2ViQ29uc29sZUFn
ZW50OjpXZWJDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVj
dG9yQ29uc29sZUFnZW50KGNvbnRleHQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJDb25zb2xlQWdlbnQuaAppbmRleCAyOTJmOWQ0MzMxNjVlYmI4NzM0NTcxZWE5MDk1YWNi
Mjg3ODhkMmE1Li4xODc4MDMzNTlhM2ZkNGU0OTAxNzRkODA4NmZjMGM2MzlhZGY5YmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCkBAIC0zMywxNCArMzMs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgV2ViQ29uc29s
ZUFnZW50IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYkNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXImKTsKKyAgICBXZWJDb25zb2xlQWdlbnQoSW5zcGVjdG9yOjpBZ2VudENvbnRleHQm
KTsKICAgICB2aXJ0dWFsIH5XZWJDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3Zl
cnJpZGUgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggNGI2YWZmOGQ4MDk3YmJiYjc4ODA3NjdlZjUwZTI1OWE0MTAzNjRiNC4uZTY2
NDhlNzU3ZWNiNTNkZDQxMjllZDhmMDI4ZjMwNDVkYzczNzEyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzIsOSArMzIsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkRlYnVn
Z2VyQWdlbnQ6OldlYkRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMp
Ci0gICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAg
ICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorV2ViRGVidWdn
ZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAg
OiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGNvbnRleHQpCisgICAgLCBtX2luc3RydW1lbnRpbmdB
Z2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaAppbmRleCBjYzBiYmRjN2JjZTEwZmRiY2Nj
NmIyNmE3ZTU2ZGJjNzkxZDNjMGQyLi4yMzAxNzRkOTVmYmE0YzZmMDk2YmJiZTljM2VlNDFiZTU2
YWE2NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViRGVidWdnZXJBZ2VudF9oCiAjZGVmaW5lIFdl
YkRlYnVnZ2VyQWdlbnRfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDcgQEAgY2xhc3MgV2ViRGVidWdnZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdlYkRlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdlYkRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgV2ViRGVidWdnZXJB
Z2VudChXZWJBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5XZWJEZWJ1Z2dlckFnZW50KCkg
eyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHAKaW5kZXggNGE3Yzg3YjVkMzJkMmRjZTdhZTNhNjU2NjU2Zjc4N2JkODEy
MmM2Mi4uMjcxOTQ4NjhkNzU2ZWYwNjllN2NlZDEwOGRmOTM3YTAxNGFmYTYzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKQEAgLTM2LDgg
KzM2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Xb3JrZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IFdlYkNvbnNvbGVBZ2Vu
dChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitXb3JrZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNv
bGVBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBXZWJDb25zb2xlQWdl
bnQoY29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNv
bnNvbGVBZ2VudC5oCmluZGV4IDIyZjI2ZDc3MjJhMzk3M2Y4YzcxMjFkNzQ0YjIzMzIwZjA0ODg3
MmYuLmIyNGU4MzA4YTMyZDY5ZDNlZDI2MGYyMWNjNTIzZGE0ZmQ2NDhlMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpZm5kZWYgV29ya2VyQ29uc29sZUFnZW50X2gKICNkZWZpbmUgV29ya2VyQ29uc29sZUFn
ZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIldl
YkNvbnNvbGVBZ2VudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MSw3IEBA
IGNsYXNzIFdvcmtlckNvbnNvbGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJDb25zb2xlQWdlbnQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckNvbnNvbGVBZ2VudCk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyQ29uc29sZUFnZW50KFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIFdvcmtlckNvbnNvbGVBZ2VudChXb3JrZXJB
Z2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQWdlbnQoKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDhkMWI5NWJmZDAyZjFkZTc2ZTdiMmEwYWZlMzc0NzY2NWUwNjBjNDkuLjA2
NDRjMDViMjI3OWYxNDE3MjJhNjRiMzNjOTRhZWZiNWY2MDQxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTgxLDIxICs4MSwy
MSBAQCBwcml2YXRlOgogCiBjb25zdCBjaGFyKiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dl
clRhc2tNb2RlID0gImRlYnVnZ2VyIjsKIAotV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVi
dWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwg
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2Nv
cGUqIGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKQotICAgIDogV2ViRGVidWdnZXJBZ2VudChp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3Njcmlw
dERlYnVnU2VydmVyKGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpkZWJ1Z2dlclRhc2tNb2RlKQotICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29w
ZShpbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckRlYnVnZ2VyQWdlbnQ6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogV2ViRGVi
dWdnZXJBZ2VudChjb250ZXh0KQorICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0Lndv
cmtlckdsb2JhbFNjb3BlLCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKQor
ICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNj
b3BlKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHdvcmtlckRlYnVn
Z2VyQWdlbnRzTXV0ZXgpOwotICAgIHdvcmtlckRlYnVnZ2VyQWdlbnRzKCkuc2V0KCZpbnNwZWN0
ZWRXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCksIHRoaXMpOworICAgIHdvcmtlckRlYnVnZ2Vy
QWdlbnRzKCkuc2V0KCZjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLCB0aGlzKTsK
IH0KIAogV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKQogewogICAg
IHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHdvcmtlckRlYnVnZ2VyQWdlbnRzTXV0
ZXgpOwogCi0gICAgQVNTRVJUKHdvcmtlckRlYnVnZ2VyQWdlbnRzKCkuY29udGFpbnMoJm1faW5z
cGVjdGVkV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpKSk7Ci0gICAgd29ya2VyRGVidWdnZXJB
Z2VudHMoKS5yZW1vdmUoJm1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpKTsK
KyAgICBBU1NFUlQod29ya2VyRGVidWdnZXJBZ2VudHMoKS5jb250YWlucygmbV9pbnNwZWN0ZWRX
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKSkpOworICAgIHdvcmtlckRlYnVnZ2VyQWdlbnRzKCku
cmVtb3ZlKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpKTsKIH0KIAogdm9p
ZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbnRlcnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1h
bmRzKFdvcmtlclRocmVhZCogdGhyZWFkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2Vy
RGVidWdnZXJBZ2VudDo6aW50ZXJydXB0QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhXb3Jr
ZXJUaHJlYWQqIHRoCiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2sod29ya2Vy
RGVidWdnZXJBZ2VudHNNdXRleCk7CiAKICAgICBpZiAoV29ya2VyRGVidWdnZXJBZ2VudCogYWdl
bnQgPSB3b3JrZXJEZWJ1Z2dlckFnZW50cygpLmdldCh0aHJlYWQpKQotICAgICAgICBhZ2VudC0+
bV9zY3JpcHREZWJ1Z1NlcnZlci5pbnRlcnJ1cHRBbmRSdW5UYXNrKHN0ZDo6bWFrZV91bmlxdWU8
UnVuSW5zcGVjdG9yQ29tbWFuZHNUYXNrPih0aHJlYWQsIGFnZW50LT5tX2luc3BlY3RlZFdvcmtl
ckdsb2JhbFNjb3BlKSk7CisgICAgICAgIGFnZW50LT5tX3NjcmlwdERlYnVnU2VydmVyLmludGVy
cnVwdEFuZFJ1blRhc2soc3RkOjptYWtlX3VuaXF1ZTxSdW5JbnNwZWN0b3JDb21tYW5kc1Rhc2s+
KHRocmVhZCwgJmFnZW50LT5tX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKSk7CiB9CiAKIHZv
aWQgV29ya2VyRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigp
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVu
aW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogCiB2b2lkIFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6TG9nLCBt
ZXNzYWdlKTsKKyAgICBtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSk7CiB9CiAK
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyJiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1
Z1NlcnZlcigpCkBAIC0xMzMsNyArMTMzLDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdn
ZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvciwgY28KICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1faW5zcGVj
dGVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxT
Y29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggOTYxZGJlMTg2MmZiYThkZjk2NDZhYzZlYzA1NTZmNjZh
ZmYzZDVjNy4uM2UxNzY4MTk1YmY2NTMyMmY4MjgzMDc4ZTFkZDllMTZjNzUxZmI2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCkBAIC00NCw3
ICs0NCw3IEBAIGNsYXNzIFdvcmtlckRlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViRGVi
dWdnZXJBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXJBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyRGVi
dWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3RydW1lbnRp
bmdBZ2VudHMmLCBXb3JrZXJHbG9iYWxTY29wZSopOworICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQo
V29ya2VyQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRGVidWdnZXJBZ2VudCgp
OwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnZ2VyVGFza01vZGU7CkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBt
X3NjcmlwdERlYnVnU2VydmVyOwotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX2luc3BlY3RlZFdv
cmtlckdsb2JhbFNjb3BlIHsgbnVsbHB0ciB9OworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX2lu
c3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDlmZDlmOWNhOWRiNjFmMzUzYjg0YmYzYzljZTgwMjVlOWM0MTk5ZWMu
LjdlNTkxZjdhMzZlYjg0NDJjMGMwY2QyMTQ2YzQyNTkxZGE1ZWM4ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg1LDE5ICs4NSwzNiBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQogewotICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJS
dW50aW1lQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgJndvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICBBZ2VudENvbnRleHQgYmFzZUNvbnRleHQgPSB7CisgICAgICAgICp0aGlzLAorICAg
ICAgICAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsCisgICAgICAgIG1fZnJvbnRlbmRSb3V0ZXIu
Z2V0KCksCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAgICB9OworCisgICAg
V2ViQWdlbnRDb250ZXh0IHdlYkNvbnRleHQgPSB7CisgICAgICAgIGJhc2VDb250ZXh0LAorICAg
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkKKyAgICB9OworCisgICAgV29ya2VyQWdl
bnRDb250ZXh0IHdvcmtlckNvbnRleHQgPSB7CisgICAgICAgIHdlYkNvbnRleHQsCisgICAgICAg
IHdvcmtlckdsb2JhbFNjb3BlLAorICAgIH07CisKKyAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBt
X3J1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudC5nZXQoKTsKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMtPnNldFdvcmtlclJ1bnRpbWVBZ2VudChtX3J1bnRpbWVBZ2VudCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURjo6bW92ZShydW50aW1lQWdlbnQpKTsKIAotICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KCptX2luamVjdGVkU2Ny
aXB0TWFuYWdlcik7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKIAotICAgIGF1dG8g
ZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4oKm1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksICZ3b3Jr
ZXJHbG9iYWxTY29wZSk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBtX3J1bnRpbWVBZ2Vu
dC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQtPnNjcmlwdERlYnVnU2VydmVy
KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoZGVidWdnZXJBZ2VudCkpOwogCi0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBudWxscHRyLCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpXb3JrZXJJbnNwZWN0b3IsIG51bGxwdHIpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50Pih3b3JrZXJDb250ZXh0LCBu
dWxscHRyLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpXb3JrZXJJbnNwZWN0b3IsIG51bGxwdHIp
KTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNvbnNvbGVBZ2VudCkpOwogCiAgICAg
aWYgKENvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGNjZDhmZWFjZWQ5MTZjNDdl
NzE0ZmYxMzY4ZDQxYzU1NTFjOWNmMjQuLjUzMDMwZWFkZmJhN2FhNWE4NTc5OWI4M2Y0Mzg0YjAw
ZWVjMmI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuY3BwCkBAIC00NywyMSArNDcsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgV29y
a2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQotICAgIDogSW5zcGVjdG9yUnVudGlt
ZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUo
d29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdl
bnQoY29udGV4dCkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1l
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKKyAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkK
IHsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgSW5zcGVjdG9yUnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogfQogCkBAIC03Miw3
ICs3MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvciwgY29uCiAgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4
ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2Nv
cGUoJm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA5NmQ5YTBiMWNkOWVhNDM4
MDI1YzFiOGEyZDIwZWRkNmI2ZTg0YzlkLi5mODJjY2FmMTkzYzFjNGU2Yzc3MjgyZDQwZjRmYWI1
MDBiZWIzMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaWZuZGVmIFdvcmtlclJ1bnRpbWVBZ2VudF9oCiAj
ZGVmaW5lIFdvcmtlclJ1bnRpbWVBZ2VudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBXb3JrZXJSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQgewogcHVibGljOgotICAgIFdvcmtl
clJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIFdvcmtlckds
b2JhbFNjb3BlKik7CisgICAgV29ya2VyUnVudGltZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYp
OwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNTYsOSArNTcs
MTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CisKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAKLSAgICBX
b3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZSB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260686</attachid>
            <date>2015-09-05 09:13:46 -0700</date>
            <delta_ts>2015-09-05 09:29:45 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-148625-20150905091343.patch</filename>
            <type>text/plain</type>
            <size>130076</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjJkMDJiOTY1MGUwODVkMDYxODY3MDVkNjEzNWYwMjlhMTQ2N2ExLi40NTY1YjBlZTczYTcxNjli
Y2IyOTIzYWJlNDA5MjdhYWNlNDFlZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0wOS0wNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgQWdlbnQtb3du
ZWQgb2JqZWN0cywgYW5kIGluaXRpYWxpemUgYWdlbnRzIHVzaW5nIGNvbnRleHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgQWxsIGFnZW50cyBvd24g
dGhlaXIgZG9tYWluLXNwZWNpZmljIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXJzLiBD
aGFuZ2Ugc28gdGhhdAorICAgICAgICB0aGV5IGFyZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3Rv
cnMgcmF0aGVyIHRoYW4gd2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLgor
ICAgICAgICBUaGlzIG1heSBjYXVzZSBhZGRpdGlvbmFsIG1lbW9yeSB1c2UsIGJ1dCB0aGlzIGNh
biBiZSBjb3VudGVyYWN0ZWQgYnkgbGF6aWx5IGNyZWF0aW5nCisgICAgICAgIHNvbWUgYWdlbnRz
IHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3Igb3RoZXIgYWdlbnRzIHRvIGZ1bmN0aW9uIChpLmUu
LCBydW50aW1lIGFuZCBwYWdlIGFnZW50cykuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIGZy
b250ZW5kL2JhY2tlbmQgZGlzcGF0Y2hlciBhcmd1bWVudHMgdG8gZXZlcnkgc2luZ2xlIGFnZW50
IGNvbnN0cnVjdG9yLAorICAgICAgICBjaGFuZ2UgYWdlbnQgY29uc3RydWN0aW9uIHRvIHRha2Ug
YSBBZ2VudENvbnRleHQgb3IgYSBzdWJjbGFzcyBvZiBpdC4gVGhpcyBwcm92aWRlcyBhZ2VudHMg
d2l0aAorICAgICAgICByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGhlIG93bmluZyBJbnNwZWN0
b3JFbnZpcm9ubWVudCBzdWJjbGFzcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvCisgICAgICAgIG91
dGxpdmUgYWxsIGFnZW50cy4gQWdlbnRDb250ZXh0IGFuZCBpdHMgc3ViY2xhc3NlcyBmb2xsb3cg
dGhlIGV4aXN0aW5nIEFnZW50IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNBZ2VudENvbnRl
eHQ6OkpTQWdlbnRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNw
ZWN0b3JBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaDogQWx0ZXJuYXRlIGFnZW50cyBzaG91bGQKKyAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gZnJv
bnRlbmQgcm91dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgYXQgY29uc3RydWN0aW9uIHRpbWUu
CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAg
ICAgKENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9ldmVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisKIDIwMTUt
MDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1lc3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIg
aW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGViZDkzZjcyMWU0ZjJk
MGNhY2YwZThiNTk1MzA5ZGIwMzY2ZjNkLi5iNjgzZjRjYTcxYmFiMzg1NmQ0NGIxZGNkZTE4Y2Yz
MzRlZmYwYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDE1LTA5LTA1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpZ2h0
ZW4gdXAgbGlmZXRpbWVzIGZvciBBZ2VudC1vd25lZCBvYmplY3RzLCBhbmQgaW5pdGlhbGl6ZSBh
Z2VudHMgdXNpbmcgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KKworICAgICAgICBBbGwgYWdlbnRzIG93biB0aGVpciBkb21haW4tc3BlY2lmaWMgZnJvbnRl
bmQgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlcnMuIENoYW5nZSBzbyB0aGF0CisgICAgICAgIHRoZXkg
YXJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9ycyByYXRoZXIgdGhhbiB3aGVuIGEgZnJvbnRl
bmQgY29ubmVjdHMgb3IgZGlzY29ubmVjdHMuCisgICAgICAgIFRoaXMgbWF5IGNhdXNlIGFkZGl0
aW9uYWwgbWVtb3J5IHVzZSwgYnV0IHRoaXMgY2FuIGJlIGNvdW50ZXJhY3RlZCBieSBsYXppbHkg
Y3JlYXRpbmcKKyAgICAgICAgc29tZSBhZ2VudHMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBv
dGhlciBhZ2VudHMgdG8gZnVuY3Rpb24gKGkuZS4sIHJ1bnRpbWUgYW5kIHBhZ2UgYWdlbnRzKS4K
KworICAgICAgICBUbyBhdm9pZCBhZGRpbmcgZnJvbnRlbmQvYmFja2VuZCBkaXNwYXRjaGVyIGFy
Z3VtZW50cyB0byBldmVyeSBzaW5nbGUgYWdlbnQgY29uc3RydWN0b3IsCisgICAgICAgIGNoYW5n
ZSBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8gdGFrZSBhIEFnZW50Q29udGV4dCBvciBhIHN1YmNsYXNz
IG9mIGl0LiBUaGlzIHByb3ZpZGVzIGFnZW50cyB3aXRoCisgICAgICAgIHJlZmVyZW5jZXMgdG8g
b2JqZWN0cyBpbiB0aGUgb3duaW5nIEluc3BlY3RvckVudmlyb25tZW50IHN1YmNsYXNzIHRoYXQg
YXJlIGd1YXJhbnRlZWQgdG8KKyAgICAgICAgb3V0bGl2ZSBhbGwgYWdlbnRzLiBBZ2VudENvbnRl
eHQgYW5kIGl0cyBzdWJjbGFzc2VzIGZvbGxvdyB0aGUgZXhpc3RpbmcgQWdlbnQgY2xhc3MgaGll
cmFyY2h5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92
ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2Fi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRP
YmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
cGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJBZ2Vu
dENvbnRleHQ6OldlYkFnZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQWdlbnRD
b250ZXh0OjpQYWdlQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFnZW50
Q29udGV4dDo6V29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50QmFzZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZv
clNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29u
dGV4dENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2Vi
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpX
ZWJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRl
YnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlv
bkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50Lmg6CisKIDIwMTUtMDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1l
c3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIgaW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCmluZGV4IGY0YWViMDdlOTgyZTgzYzkwZDJmOTYyMmYxZDljZTg1NjI1ZjU5OWQuLjYx
YzY5M2Q0ZWM4MGVjNDg3Y2IyZDJkMjE4YjFjMTY4NGU5MTQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApAQCAtMjks
MTAgKzI5LDMzIEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Citj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CitjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVudDsK
Kworc3RydWN0IEFnZW50Q29udGV4dCB7CisgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmly
b25tZW50OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OworICAgIEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcjsKKyAgICBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXI7Cit9OworCitzdHJ1Y3QgSlNBZ2VudENvbnRleHQgOiBw
dWJsaWMgQWdlbnRDb250ZXh0IHsKKyAgICBKU0FnZW50Q29udGV4dChBZ2VudENvbnRleHQmIGNv
bnRleHQsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBBZ2Vu
dENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3Q7Cit9OwogCiBlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb24gewogICAg
IEluc3BlY3RlZFRhcmdldERlc3Ryb3llZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCBkYmQyZTc2YzZhMTYxNmVjNDBiOTgyMzZjYTY5ZjBlZmM4ZDRjMjMw
Li45YTgzYWEzNmFkMzM4Y2U1Y2U4MDM2NzdkODNiZDM1NDIyNGNlMzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02OCwxMCArNjgsMjIgQEAgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIoSlNHbG9iYWxPYmoKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6
OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIGluc3BlY3Rv
ckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oKnRoaXMpOwotICAgIGF1
dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUFn
ZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpOwotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50PigqbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIG1fZ2xvYmFsT2JqZWN0LCBjb25zb2xlQWdlbnQuZ2V0KCkpOworICAg
IEFnZW50Q29udGV4dCBiYXNlQ29udGV4dCA9IHsKKyAgICAgICAgKnRoaXMsCisgICAgICAgICpt
X2luamVjdGVkU2NyaXB0TWFuYWdlciwKKyAgICAgICAgbV9mcm9udGVuZFJvdXRlci5nZXQoKSwK
KyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKQorICAgIH07CisKKyAgICBKU0FnZW50
Q29udGV4dCBjb250ZXh0ID0geworICAgICAgICBiYXNlQ29udGV4dCwKKyAgICAgICAgZ2xvYmFs
T2JqZWN0CisgICAgfTsKKworICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpOworICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRleHQsIGNvbnNvbGVBZ2VudC5n
ZXQoKSk7CiAKICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAg
ICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKQEAgLTExMSw3ICsxMjMs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbgogICAgIGlmICghY29ubmVjdGVkRmlyc3RGcm9u
dGVuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CisgICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIHRvIG5vdGlmeSBhZ2VudHMgd2hpY2gg
ZnJvbnRlbmQgaGFzIGNvbm5lY3RlZCAoYnkgaWQpLgorICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChudWxscHRyLCBudWxscHRyKTsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRl
RXh0cmFEb21haW5zKG1fYWdlbnRzLmV4dHJhRG9tYWlucygpKTsKQEAgLTEyNSw2ICsxMzgsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbgogewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFu
bmVsLCBmcm9udGVuZENoYW5uZWwpOwogCisgICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIHRvIG5v
dGlmeSBhZ2VudHMgd2hpY2ggZnJvbnRlbmQgaGFzIGRpc2Nvbm5lY3RlZCAoYnkgaWQpLgogICAg
IG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0
RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKQEAgLTE0Myw2ICsxNTcsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEZyb250ZW5k
Q2hhbm5lbCogZnJvbgogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCiB7CisgICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIHRv
IG5vdGlmeSBhZ2VudHMgd2hpY2ggZnJvbnRlbmQgaGFzIGRpc2Nvbm5lY3RlZCAoYnkgaWQpLgog
ICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKICAgICBtX2Zyb250ZW5kUm91dGVyLT5k
aXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CkBAIC0yNzEsNyArMjg2LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3QKIHsKICAgICBTdHJpbmcgZG9tYWluTmFtZSA9IGFnZW50LT5kb21haW5OYW1l
KCk7CiAKLSAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5k
Um91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgLy8gRklYTUU6
IGNoYW5nZSB0aGlzIHRvIG5vdGlmeSBhZ2VudHMgd2hpY2ggZnJvbnRlbmQgaGFzIGNvbm5lY3Rl
ZCAoYnkgaWQpLgorICAgIGFnZW50LT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobnVsbHB0
ciwgbnVsbHB0cik7CiAKICAgICBtX2FnZW50cy5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShh
Z2VudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBlMTEz
MDg1ZDVjYzk4ZGI4NTJmODVkM2Q2YWQzOWFkYjE5NDQ0MWI3Li40ZjRlM2Y5YmRjNDA5ZTNjYjZi
YTRjOWNiNWYwMjRlMTJkNzFjYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEF1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNv
bnRyb2xsZXJDbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2F1Z21lbnRpbmdDbGllbnQgPSBj
bGllbnQ7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZFJvdXRlci5nZXQoKTsgfQor
ICAgIHZpcnR1YWwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSBv
dmVycmlkZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggNTdmZTVhYWZkY2IxM2Fm
NTczNDFjNmQxNjViNTJlOWZkOGY2MmM2Yi4uYjdjNjIzZGEwZjZmODVmZGMwOTkwNzAxNDQyYmM2
NTFiYjFiZTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMzgsOSArMzgsMTEgQEAKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChJbnNw
ZWN0b3JFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCitJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9y
QWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiSW5zcGVjdG9yIikpCi0gICAgLCBtX2Vudmlyb25tZW50KGVudmlyb25tZW50
KQorICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogewogfQogCkBAIC00OCwxNyArNTAsMTIgQEAgSW5zcGVjdG9yQWdlbnQ6On5J
bnNwZWN0b3JBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVy
KikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAg
IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7CiAKICAgICBFcnJvclN0cmlu
ZyB1bnVzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAxZThmYjY5MGViNTVmZmJjZTQ1ZDAxMThiOTVj
NDRkYjYwNzEwOWZlLi5lZGE3NDQ5MDE0OWFmYWVjNjkzZWIxOThlZmVhMmZmMGQ3OWIxNDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SW5zcGVjdG9yQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9yRW52
aXJvbm1lbnQmKTsKKyAgICBJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRW52
aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwogICAgIHN0ZDo6cGFpcjxS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDY0
OWMwMjlhNGQ3MGQ1MjVkMDhjZGU4MGNmYTcyMzIwMTAzMmE0NjAuLjJiOTQyOWFjMDkzY2UzZWI3
NDc0ZDRiZWJkNDkzOGVmZjg2MjViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cApAQCAtNDMsOSArNDMsMTEgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3QgaW50
IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLUluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdl
bnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiQ29uc29sZSIpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5p
bmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KIApAQCAtNTMs
MTcgKzU1LDEyIEBAIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2Vu
dCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNo
ZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwot
CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIGRpc2FibGUoZXJyb3JTdHJpbmcpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBkMTIxNDdlMjZmMDEzNTE0NzFlYmY1NzM4
ZjU5NWFjZDQ4MWIwNmM3Li5iOTcxODY5ZDYzNDUzY2U1MGRjMTE3OGFmNzBjMDNiZTcwMjQ2OGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNv
bGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5z
cGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb25z
b2xlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtODMs
NiArODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPENvbnNvbGVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIENvbnNvbGVNZXNzYWdlKiBt
X3ByZXZpb3VzTWVzc2FnZSB7IG51bGxwdHIgfTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CiAgICAgaW50IG1fZXhwaXJlZENv
bnNvbGVNZXNzYWdlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDY4NTM2NzBhN2EwZmFkNDVkYmUyZTNhNjRhZTAyY2FlYzI1ZTJiZDAuLmIwNmFiYzIz
MTY4NDYzZWRiZGVkN2JlOTdmOTVjOGRmYzNlNDU4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCkBAIC01Niw5ICs1NiwxMSBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3Vw
Rm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpbwog
ICAgIHJldHVybiBtYWtlU3RyaW5nKG9iamVjdEdyb3VwLCBTdHJpbmc6Om51bWJlcihhY3Rpb24u
aWRlbnRpZmllcikpOwogfQogCi1JbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQor
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1
Z2dlciIpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlw
dE1hbmFnZXIpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQoSlNDOjpub0JyZWFrcG9pbnRJRCkKIHsKICAgICAvLyBGSVhNRTogbWFr
ZSBicmVha1JlYXNvbiBvcHRpb25hbCBzbyB0aGF0IHRoZXJlIHdhcyBubyBuZWVkIHRvIGluaXQg
aXQgd2l0aCAib3RoZXIiLgpAQCAtNjksMTcgKzcxLDEyIEBAIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqIGZy
b250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9u
dGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBib29sIHNraXBSZWNv
bXBpbGUgPSByZWFzb24gPT0gRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJv
eWVkOwogICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKaW5kZXggOGQxOTQyNTFmMTUwODMyNzkxMzliYzM3Yzk2N2RjMjgyYjkwMGNhMi4u
YWZhMjg2YzQ3ODcwNDM3MTBlZmY5NDg0ZTgyOTdkZjQ4YTk2NGQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKIAogcHJvdGVjdGVk
OgotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7Cisg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmKTsKIAogICAgIEluamVjdGVk
U2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBhZGRmZWJjMTkw
YjgwZWM3ZjZmNjQ4MzA2ZjczNzI0OTA2OTNhYWMzLi5mMTVkNThkNDQ2OGUxZTMwNWRjNGQ5NDY3
NDllM2I3ZWE1MjgyMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU3
LDkgKzU3LDkgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiAgICAg
cmV0dXJuIGIgPyAqYiA6IGZhbHNlOwogfQogCi1JbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3Bl
Y3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlcikKK0luc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IlJ1bnRpbWUiKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0
TWFuYWdlcikKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDJl
MmQ3OTQxMmRmM2MyMWFhODhhMWI3ODRjZjAwZGMxNTY3NTc5MWMuLjc3MGU0MDc4YzdiMmQ0NmY2
NmM2MTUwYWE1YjM5MmFiODhjMDE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBA
IC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudChJ
bmplY3RlZFNjcmlwdE1hbmFnZXImKTsKKyAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoQWdlbnRD
b250ZXh0Jik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29u
c29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcAppbmRleCA5NmUxYTQ5YWRmMmY3OWFmZjJkYWJl
NWE0ZGIxZDVlMzhiZWM0ZDI2Li4wMjE3ZGM2ZGM1NWEwZmYxYjdiNmEwMTA5MDE1ODE5ZTBkZjI4
YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudDo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQoaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3Rv
ckNvbnNvbGVBZ2VudChjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25z
b2xlQWdlbnQuaAppbmRleCA5YzI4NWUyZWZmMjM2ZWFlZGVhOWQ3MTg2NTBlMTkwOTE2ODI1NTU3
Li5hNmYxZTBlZGE0ZWRiMDczZDY0NmI0MGY2ZDY4MTI1YWUxOTQ0MjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3RDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUFnZW50
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CisgICAgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmpl
Y3RDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIC8vIEZJWE1FOiBYSFJzIGFuZCBOb2RlcyBvbmx5
IG1ha2VzIHNlbnNlIGRlYnVnZ2luZyBhIFdlYiBjb250ZXh0LiBDYW4gdGhpcyBiZSBtb3ZlZCB0
byBhIGRpZmZlcmVudCBhZ2VudD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDRkMzgzMDc2NWIxOGNkNWVhYjUwZWNmYTljOWI5Zjg4NGFjMDdmZDkuLmY2
OTEyYTZhMDUyNWIyMmIxOWVjYWQzM2Y5MGQ4YjhmMTgyYjRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCi0gICAgOiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KQorICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dChjb250ZXh0KQorICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0Lmluc3BlY3RlZEds
b2JhbE9iamVjdCkKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2VudCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggZDIxZWZhMGY1ZjcxYjBj
YTFmZTg1YWU3ODA1NjU3NDU0M2RmZTZkMi4uMWRkNGEyMDM1YzY4ZWJhZmM5NTliZDc3Zjc3Yzc1
NzBiYWU1Y2ZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAg
LTM3LDcgKzM3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
KTsKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmLCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdERlYnVnU2Vy
dmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMGUw
NDVmNDBmMzBhZmY1MGIxNzQxYTIxYjdjZDZmZWFiMDU5ZTQwZS4uZWFhNzUxZDI1Y2ZlODZjNGQw
NWU5ZmJmMmUzNGQwNjcwODc3YWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmNwcApAQCAtMzQsMTYgKzM0LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgOiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9yUnVu
dGltZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKKyAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewogfQogCi12b2lkIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRS
b3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQog
CiB2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudC5oCmluZGV4IDkxN2ZkZWI5NWQ4YTBlMTNhZTgzMTBkZGQ4MmY0MDRlNzBjODBk
NTMuLjVkYzg3YjIwOTVlN2FiNTRhNDJkNTg0YmIwMjJlNzJiNjg0NGQ3MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKLSAgICBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Jik7CisgICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0
ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaAppbmRleCBjYTQ2ZjEy
NWFlMzFlNTRjNDU5YjBiODE2MTc4ZWRmZjFmNGE1NDhhLi45NzkxYzI5NTU2MjA2MDIzNWQ1MTgy
ZDE1MDAzMWM4Y2Q5NzczZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudC5oCkBAIC0zOSwyMyArMzksMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVEJhY2tl
bmREaXNwYXRjaGVyLCB0eXBlbmFtZSBUQWx0ZXJuYXRlRGlzcGF0Y2hlcj4KIGNsYXNzIEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8
VEFsdGVybmF0ZURpc3BhdGNoZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCisgICAgQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIHN0ZDo6dW5pcXVlX3B0cjxUQWx0ZXJuYXRl
RGlzcGF0Y2hlcj4gYWx0ZXJuYXRlRGlzcGF0Y2hlcikKICAgICAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoZG9tYWluTmFtZSkKICAgICAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIoV1RGOjpt
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKQorICAgICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
VEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udHJvbGxlci5iYWNrZW5kRGlzcGF0Y2hlcigp
LCBudWxscHRyKSkKICAgICB7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVy
bmF0ZURpc3BhdGNoZXIobV9hbHRlcm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKKyAgICAgICAgbV9h
bHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcigmY29udHJvbGxlci5iYWNr
ZW5kRGlzcGF0Y2hlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKSBvdmVycmlkZQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50KCkKKyAgICB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2Vu
ZERpc3BhdGNoZXIobnVsbHB0cik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBUQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7Ci0gICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5hdGVEaXNw
YXRjaGVyLmdldCgpKTsKLSAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5k
RGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
CiAgICAgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICAgICAg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKICAg
ICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCBiMGQyNWIwYjY3MmEyOTY3Y2FmZjU3OGJmNGY1ODg4ZTllOTU0
Zjc5Li4zNDhjNzU0NWNjOGI1OTFlNTUzNjlkZTE0ZDNlOWUwYWJjNTQyZTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
aD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCopID0gMDsKIAogICAgIHZpcnR1YWwg
Y29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2Vu
dEJhc2U+KSA9IDA7CiAKICAgICBib29sIGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZyb250
ZW5kUm91dGVyKCkuaGFzRnJvbnRlbmRzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3Bw
X2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggOWFmOWRkYWY4NGRmMjFlNmVmNzI2NzAxOTM5
ZjQzNThhN2FlZWNiNC4uNjFiMGJhMTgzMjhjNzc3NmQ2NWQwMjI3ZWQzNzBmMGYzYWI5MzQxYyAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJE
b21haW5EaXNwYXRjaGVyRGVjbGFyYXRpb24gPSAoCiAgICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1h
Y3JvfSAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8JHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCAke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgc3RhdGljIFJlZjwke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciYsICR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogJHtjb21tYW5kRGVjbGFyYXRpb25zfQog
cHJpdmF0ZToKQEAgLTE2OCw5ICsxNjgsOSBAQCAke2Rpc3BhdGNoQ2FzZXN9CiB9IiIiKQogCiAg
ICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0cnVjdG9yID0gKAot
ICAgICIiIlJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+ICR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAg
IiIiUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gJHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVy
LCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tl
bmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAog
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKQEAgLTIwNCwxMCArMjA0LDEwIEBAICR7
b3V0UGFyYW1ldGVyQXNzaWdubWVudHN9CiAgICAgRnJvbnRlbmREaXNwYXRjaGVyRG9tYWluRGlz
cGF0Y2hlckRlY2xhcmF0aW9uID0gKAogIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2RvbWFp
bk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICAke2RvbWFpbk5hbWV9RnJv
bnRlbmREaXNwYXRjaGVyKEZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlcikgOiBtX2Zyb250
ZW5kUm91dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRlbmRE
aXNwYXRjaGVyKEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcikgOiBtX2Zyb250ZW5kUm91
dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KICR7ZXZlbnREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgot
ICAgIEZyb250ZW5kUm91dGVyKiBtX2Zyb250ZW5kUm91dGVyOworICAgIEZyb250ZW5kUm91dGVy
JiBtX2Zyb250ZW5kUm91dGVyOwogfTsiIiIpCiAKICAgICBQcm90b2NvbE9iamVjdEJ1aWxkZXJE
ZWNsYXJhdGlvblByZWx1ZGUgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CmluZGV4IGRlNDRmOWExYjhiNWJmY2ExZjkwNjhjODRlYmJiOTU3ZDc0YTFiYzkuLjY2
YWUwMzU1YTVmYjZmYmE1MjIzMTAxMmJhNGRlNTE2OGEzZmJmNmYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMTksNiArMTE5LDYgQEAgY2xhc3MgQ3Bw
RnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOycpCiAKICAgICAgICAg
bGluZXMuYXBwZW5kKCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kUm91
dGVyLT5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+
dG9KU09OU3RyaW5nKCkpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJl
dHVybiAiXG4iLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggYTI4YTllZjEwNTFmMzg5OTlkNmI1MzAyZDJlMjNiMDBl
NzI4ZmVlYS4uMTQ4NDUyNzZiMzQwMTAyOGU1Y2IyYTRjMGNjZDJiMTNmNTgxMGM3MiAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4
LDcgKzEzOCw3IEBAICR7aW52b2NhdGlvbn0KICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFu
ZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRl
cmFsKCIke2RvbWFpbk5hbWV9IiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIiR7ZG9tYWluTmFtZX0i
KSwgKl9jb250cm9sbGVyLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggZGNlMmEzMTkwNTQxZmNhNDhlYmNkOTgzNjFhMTllODk2MDdj
YjlhNy4uODhiMzI4Yzg3MWJlYjM0MjgyOTRhNmNiNzFhYjA5ODVhMjAwYjk0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcApAQCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2Rl
KQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC0+c2NyaXB0KCktPnZtKCksIHRydWUp
CitXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2Vy
R2xvYmFsU2NvcGUmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6IFNjcmlwdERl
YnVnU2VydmVyKGNvbnRleHQuc2NyaXB0KCktPnZtKCksIHRydWUpCiAgICAgLCBtX3dvcmtlckds
b2JhbFNjb3BlKGNvbnRleHQpCiAgICAgLCBtX2RlYnVnZ2VyVGFza01vZGUobW9kZSkKIHsKQEAg
LTYwLDcgKzYwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIo
U2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3Rl
bmVyKTsKIAogICAgIGlmICh3YXNFbXB0eSkgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3Bl
LT5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIodGhpcyk7CisgICAgICAgIG1fd29ya2VyR2xvYmFs
U2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOwogICAgICAgICByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygpOwogICAgIH0KIH0KQEAgLTczLDggKzczLDggQEAgdm9pZCBXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlz
dGVuZXIsIGJvb2wKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogCiAgICAgaWYg
KG1fbGlzdGVuZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29w
ZS0+c2NyaXB0KCkpCi0gICAgICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT5zY3JpcHQoKS0+
ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNj
cmlwdCgpKQorICAgICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNo
RGVidWdnZXIodGhpcyk7CiAgICAgICAgIGlmICghc2tpcFJlY29tcGlsZSkKICAgICAgICAgICAg
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgfQpAQCAtOTIsNyArOTIsNyBAQCB2b2lk
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAKICAg
ICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJlc3Vs
dCA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1bkxvb3AoKS5ydW5Jbk1vZGUobV93
b3JrZXJHbG9iYWxTY29wZSwgbV9kZWJ1Z2dlclRhc2tNb2RlKTsKKyAgICAgICAgcmVzdWx0ID0g
bV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5Nb2RlKCZtX3dvcmtl
ckdsb2JhbFNjb3BlLCBtX2RlYnVnZ2VyVGFza01vZGUpOwogICAgIC8vIEtlZXAgd2FpdGluZyB1
bnRpbCBleGVjdXRpb24gaXMgcmVzdW1lZC4KICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2Fn
ZVF1ZXVlVGVybWluYXRlZCAmJiAhbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVn
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlci5oCmluZGV4IDc4ODFmNjFiMDk0NDIwODY4ODczZjE0NDcyYzRlNjQ0YWRjMGY2NjcuLjgw
ZWQ5ZDM4NWFjMDIxYWI0NzAyMjNjNmQ0NTc4NmU5YTY2ZWFhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclNjcmlwdERlYnVnU2VydmVyKTsKIHB1Ymxp
YzoKLSAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0
IFN0cmluZyYpOworICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2JhbFNjb3Bl
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKQEAg
LTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2NyaXB0
KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFeGNlcHRp
b24qKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckds
b2JhbFNjb3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwog
ICAgIExpc3RlbmVyU2V0IG1fbGlzdGVuZXJzOwogICAgIFN0cmluZyBtX2RlYnVnZ2VyVGFza01v
ZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhODQxYzMyMmM5NjRhMWE5MWRjY2Yy
NjNlZTNmNmNjNWFmYTY2ZmRiLi44MDk4OTEyZjgyY2ZiNWM0ZWI0MmIwYjY1ZGQ1M2RhYjQ3YTcz
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQzLDIzICs0NCwyMCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNo
ZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0
LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgY29udGV4dCkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNh
Y2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
cGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJv
bnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNo
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOwogfQog
CkBAIC05NSw3ICs5Myw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpn
ZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyCiB7CiAgICAgcmVzdWx0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9w
YWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMjQ4ZDNm
ODQxYmQ3ZjJjMGMxZDA5MWFlOTE1OTYzZWVmYTVhZTkxNi4uNjU5ZmY0NzMyMzQyZTA5MDRjNDFk
ODExY2FmOTY3NTI2MDRhYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNDEsNyArNDEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogCkBAIC01MCw3ICs0OSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNo
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmly
dHVhbCB+SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MjA3NzFjMTk2
NmU2MGNjNjIzZjVhNjk1MGE5MGRhOTFlNTA4NGQwLi45MGRiZWQyYjY3ODFjYjAwZjBkMWRlNDdk
OTlmY2JmZWU2ODFkMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTM0MSw4ICszNDEsMTAgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0
b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTU3R5bGVSdWxlPigmcnVsZSk7CiB9CiAKLUluc3BlY3RvckNTU0FnZW50OjpJbnNw
ZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVND
SUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckNTU0FnZW50
OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IkNTUyIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3Vu
aXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkK
IHsKICAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlzKTsKQEAgLTM1NCwxNyArMzU2
LDEyIEBAIEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQ1NTQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICByZXNldE5vblBlcnNpc3RlbnRE
YXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKaW5kZXggMDBiMDM3OTc2ZmIwNGYxMGRmNTc0NDJiY2YxNmNkMzZlNGFlOTVhNC4uY2UwNTcw
NzZkYWZlOTY3ZDJiMTM1Y2FkNzhmMGNmMTM3NDEwM2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTUxLDcgKzUxLDYgQEAgY2xhc3MgQ1NT
U3R5bGVTaGVldDsKIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5v
ZGU7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CkBAIC04Miw3ICs4MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEluc3BlY3RvckRPTUFnZW50Kik7CisgICAgSW5zcGVjdG9yQ1NTQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JDU1NBZ2VudCgpOwogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUo
Q1NTUnVsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IGRhNzk0YjU0Zjg3ZDYzYWQ0OTI1YTk4NTgxY2Q5ODkzZDMyYmIzMWYu
LmNmOGNiMDI4YjVlODVhMDVlMjZhYjQ2ZDVlMTliMGEwNzlmZGYxZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTk1LDY3ICs5
NSw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogewogICAgIEFTU0VSVF9BUkcoaW5zcGVj
dG9yQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOwogCi0gICAgYXV0byBpbnNwZWN0b3JBZ2VudFB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCp0aGlzKTsKKyAgICBBZ2VudENv
bnRleHQgYmFzZUNvbnRleHQgPSB7CisgICAgICAgICp0aGlzLAorICAgICAgICAqbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsCisgICAgICAgIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksCisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAgICB9OworCisgICAgV2ViQWdlbnRDb250ZXh0
IHdlYkNvbnRleHQgPSB7CisgICAgICAgIGJhc2VDb250ZXh0LAorICAgICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCkKKyAgICB9OworCisgICAgUGFnZUFnZW50Q29udGV4dCBwYWdlQ29u
dGV4dCA9IHsKKyAgICAgICAgd2ViQ29udGV4dCwKKyAgICAgICAgbV9wYWdlCisgICAgfTsKKwor
ICAgIGF1dG8gaW5zcGVjdG9yQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFn
ZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50
UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQo
bV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShpbnNwZWN0
b3JBZ2VudFB0cikpOwogCi0gICAgYXV0byBwYWdlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclBhZ2VBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmcGFnZSwg
aW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gcGFnZUFnZW50UHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBpbnNw
ZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9wYWdlQWdlbnQgPSBwYWdlQWdl
bnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShwYWdlQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVu
dGltZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsICZwYWdlLCBwYWdlQWdlbnQpOwor
ICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFn
ZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KTsKICAgICBQYWdlUnVudGltZUFnZW50KiBydW50
aW1lQWdlbnQgPSBydW50aW1lQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRQYWdlUnVudGltZUFnZW50KHJ1bnRpbWVBZ2VudCk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURjo6bW92ZShydW50aW1lQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gZG9tQWdlbnRQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIHBhZ2VBZ2VudCwgKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX292ZXJsYXku
Z2V0KCkpOworICAgIGF1dG8gZG9tQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRPTUFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAg
IG1fZG9tQWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RG
Ojptb3ZlKGRvbUFnZW50UHRyKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2Rv
bUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
Q1NTQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50KSk7CiAKLSAgICBhdXRvIGRhdGFiYXNl
QWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CisgICAgYXV0byBkYXRhYmFzZUFnZW50UHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudCA9IGRhdGFiYXNlQWdlbnRQdHIu
Z2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkYXRhYmFzZUFnZW50UHRyKSk7
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2VBZ2VudCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50Pihw
YWdlQ29udGV4dCwgcGFnZUFnZW50KSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZ
KQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlcGxheUFn
ZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlcGxheUFnZW50PihwYWdlQ29u
dGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIGRvbVN0b3JhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fcGFnZUFnZW50KTsKKyAgICBhdXRvIGRvbVN0b3JhZ2VBZ2VudFB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9wYWdl
QWdlbnQpOwogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50ID0g
ZG9tU3RvcmFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUo
ZG9tU3RvcmFnZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHRpbWVsaW5lQWdlbnRQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgcGFnZUFnZW50LCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9y
LCBpbnNwZWN0b3JDbGllbnQpOworICAgIGF1dG8gdGltZWxpbmVBZ2VudFB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6UGFnZUluc3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50KTsK
ICAgICBtX3RpbWVsaW5lQWdlbnQgPSB0aW1lbGluZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdl
bnRzLmFwcGVuZChXVEY6Om1vdmUodGltZWxpbmVBZ2VudFB0cikpOwogCi0gICAgYXV0byByZXNv
dXJjZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXNvdXJjZUFnZW50Piht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgaW5zcGVjdG9yQ2xpZW50KTsK
KyAgICBhdXRvIHJlc291cmNlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJl
c291cmNlQWdlbnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQsIGluc3BlY3RvckNsaWVudCk7CiAg
ICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gY29uc29s
ZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PigqbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQpOworICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2Vu
dCk7CiAgICAgV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnRQdHIu
Z2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29u
c29sZUFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNvbnNv
bGVBZ2VudFB0cikpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICBh
dXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50
PihwYWdlQ29udGV4dCwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgIG1fZGVidWdn
ZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rjo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGRvbURlYnVnZ2VyQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50KTsKKyAgICBh
dXRvIGRvbURlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50LCBtX2RlYnVnZ2VyQWdlbnQpOwog
ICAgIG1fZG9tRGVidWdnZXJBZ2VudCA9IGRvbURlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkb21EZWJ1Z2dlckFnZW50UHRyKSk7CiAKLSAgICBt
X2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50KSk7Ci0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAogICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0
TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpOwogICAgIGlmIChDb21tYW5kTGluZUFQSUhv
c3QqIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5k
TGluZUFQSUhvc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggMTdmOTcxODhmY2E1MGVjYjBjMTI1MzU4YWExMTk0MWMxMGUyOWRi
OC4uNThiMmMzYjg3Y2NlY2VkYzNiYmFkNzQ1ZTc5NGM2MGFiZDNlMmZhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3
IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3Rv
cnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOb2RlRmluZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0yMDEsOSAr
MjAyLDExIEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gIiI7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50
OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChXZWJBZ2VudENvbnRleHQm
IGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5
KiBvdmVybGF5KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NIiks
IGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVk
U2NyaXB0TWFuYWdlcikKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBt
X3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKIHsKQEAgLTIx
NSwxNiArMjE4LDEzIEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQog
ICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Ci0KICAgICBtX2hpc3RvcnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKTsKIAogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKLSAgICBtX2RvY3VtZW50ID0g
bV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgIG1fZG9jdW1lbnQgPSBt
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKIAogICAgIGlmIChtX25vZGVUb0Zv
Y3VzKQogICAgICAgICBmb2N1c05vZGUoKTsKQEAgLTIzMiw5ICsyMzIsNiBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZFJvdXRlciogZgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxs
cHRyOwotCiAgICAgbV9oaXN0b3J5LnJlc2V0KCk7CiAgICAgbV9kb21FZGl0b3IucmVzZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA4
ZTliMTA2MjA4ZjFjNTVlODA2ZjMwMDI3NzIzM2E3OWM1YmFiY2Q2Li45ZjZhZWIxODdkZDkzMTM4
Y2Y4ZGU2NDI4NzNlYjI0NTFjNGY1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2RlZmluZSBJbnNwZWN0b3JE
T01BZ2VudF9oCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC02Nyw3ICs2Niw2IEBAIGNs
YXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBI
aXRUZXN0UmVzdWx0OwogY2xhc3MgSFRNTEVsZW1lbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzazsKQEAgLTEwNCw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAgfTsKIAotICAg
IEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdl
bnQqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3BlY3Rvck92ZXJsYXkq
KTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdl
QWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NQWdl
bnQoKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25D
b2RlJik7CkBAIC0yNDcsOSArMjQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5uZXJIaWdo
bGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+LCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBv
dXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKKyAgICBJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50
KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKIAogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3Zl
cmxheSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmODNlZDdhMTBlMWZiM2E3ZTg2M2Ey
NTNjNzc2ZGY0ZTBjMDk4ZDRhLi5iMjdiMWVlYzI3YzE3MTZiZjAzMDRiM2UwM2I4YWU0YWI4ZDJk
NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJBZ2VudENvbnRleHQm
IGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogZGVidWdnZXJBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkRPTURlYnVnZ2VyIiksIGNvbnRleHQpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAs
IG1fZGVidWdnZXJBZ2VudChkZWJ1Z2dlckFnZW50KQogewpAQCAtMTAxLDE1ICsxMDIsMTIgQEAg
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBjbGVhcigpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBkaXNh
YmxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGJmNDMxOTEzODBjMTUzZWU0ODVhZDJkNjg0MWE4MmEw
MWMwOWZjNjguLjU2YmY2NTAwNTc0ZTcxNzg1MzM4MDE1MDYxZTkzOTYwOWE3OGU4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaApAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKQEAgLTU2LDcgKzU1
LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWMKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5z
cGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCk7CiAKICAgICAvLyBET01EZWJ1
Z2dlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggYjJkZTkyYmMwYTU3NDU4YTZhNDNlYjI1MDZiNzQ5ZjMz
MDE0NjRlYS4uN2QzNmIxYzg1ODQxZTdkMTRlNmJhYzQ4ODJiNDM1MDgwOTdiMGZjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKQEAgLTU0LDggKzU0LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCitJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBjb250ZXh0KQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3Jh
Z2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdl
bnQocGFnZUFnZW50KQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQodGhpcyk7CkBAIC02NiwxNyArNjgsMTIgQEAgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lk
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUo
dW51c2VkKTsKIH0KQEAgLTE5OSw4ICsxOTYsOCBAQCBSZWZQdHI8U3RvcmFnZUFyZWE+IEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiBlcnJvcgog
ICAgIH0KIAogICAgIGlmICghaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBtX3BhZ2VB
Z2VudC0+cGFnZSgpLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgcmV0dXJuIG1fcGFnZUFnZW50LT5w
YWdlKCktPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdl
dEZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcGFnZUFnZW50LT5wYWdlKCku
c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVu
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDU5YzY4MDg3YTli
OTM4NjYxY2JiNTYxN2E4ZDg5OGVkMzEwMTcwOGQuLjY2MjlhZTdmY2JhYjA3ZmU5OTQ5NWJhM2Mw
MDgyZTJkMTQyOTQ5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBj
bGFzcyBTdG9yYWdlOwpAQCAtNTUsNyArNTQsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFn
ZUFnZW50Kik7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KFdlYkFnZW50Q29udGV4dCYs
IEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCmluZGV4IGIzYjI3OWY5ZDUwYmI4NjM2YjE4MzQyNDExNzU1ZDBjYmEy
ODIyODUuLjg2MTEzZWJjNGFiMGRmNzFmMmFmMmQzOGZlZGZkZWYzYmNkMzZlOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAK
QEAgLTIxMiw4ICsyMTIsMTAgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVhclJl
c291cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
RGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckRhdGFiYXNlQWdlbnQ6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgY29udGV4dCkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEYXRh
YmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwogfQpAQCAtMjIz
LDE3ICsyMjUsMTIgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNl
QWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJv
dXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
CiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBFcnJvclN0cmluZyB1bnVzZWQ7
CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggMGYxZjkyNzlkZmJiZWEyYTA4ZjY0ODAx
MjJhYTYyNWIzZWRkN2FiOS4uNmM5ZDIyNzUxYmJhOGIwMjA3M2I1YTI5OGIzYzY3N2I3NzkyMWVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oCkBAIC00NCwxNCArNDQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
YXRhYmFzZTsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7Ci1jbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGEwODY5NzlhMzhjZmY2MzdhMmExNTAw
MDEyZTk5ZjNlMDg5NTIwNjIuLjVjYjlhZGE5YWQ0YTk3MzAwMDJmYTU3ZWU4Y2UxZjgxNDZmNjEz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtNTY2LDkgKzU2NiwxMCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNw
YWNlCiAKLUluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVj
dGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5kZXhl
ZERCIiksIGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0Lmlu
amVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQpAQCAtNTc3
LDE1ICs1NzgsMTIgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVk
REJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckluZGV4
ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAg
ICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCA4
NGE5OGZkYzQ4YmQwMDkxM2YzNTMwOTE4ZjI0ODAzNzRkN2NmY2U1Li5iNDQ3ODEwY2M5OTkxYWM0
YWFkNTQ0NWU2MDg1MDU5YmZmOTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5kZXhlZERC
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnNwZWN0b3JQYWdlQWdlbnQq
KTsKKyAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0
b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwpAQCAtNjYsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0
U3RvcmUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9yZU5h
bWUsIFJlZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbmRleGVkREJC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhOGM1
YmFkOGIzYTQxZGFlZTFmMjIyMjRhNGEyOWM3OTA0NTI0NGE0Li5kYmQyNDdmYmExMDMzNTc5MmMx
NWQ3ZGZlZGViYTMzYmZmYTA5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VuCiAgICAgaWYgKHBhZ2VBZ2VudCkKICAgICAgICAgcGFnZUFn
ZW50LT5kaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoJmZyYW1lLCB3b3JsZCk7CiAgICAgaWYg
KFBhZ2VEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5w
YWdlRGVidWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgIGlmIChwYWdlQWdlbnQgJiYgJndvcmxkID09
ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSAmJiAmZnJhbWUgPT0gcGFnZUFnZW50LT5tYWluRnJh
bWUoKSkKKyAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQgPT0gJm1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpICYmICZmcmFtZSA9PSAmcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAgICAgICAg
ICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAg
fQogICAgIGlmIChQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5wYWdlUnVudGltZUFnZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDdmYmRmYTQ2YmYw
YjRjZjQyODY4NWIxOWI1NzMxMWI0OTRiYjZhMzIuLjY0MTVhZmQ5YTcxOTQ5MWY1NDY1ODQ5MDdk
MzExYjIyYWZhYWNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDYsOCArNDYsMTAgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAg
ICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBjb250ZXh0
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KIApA
QCAtNTYsMTcgKzU4LDEyIEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRS
b3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkxheWVyVHJlZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAg
RXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggZmEy
NDAxNTg0N2JmMTRjZGU3YTEwMTI2ZWM5NDhmOWFjMmY3NDc2NS4uMTBkZWRmMjE5NWU1ZmRjODFi
ZmVlMmI1ZmE5MGQ4ZjNlZjQzMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTQwLDE0ICs0MCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci0KIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVyVHJl
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOworICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFn
ZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IGVjNTJmNDc3Nzg0MWIxNGE1Y2QwYTA1ZDQ1NjE3MDMyNzdkZTdlYjEuLjI1ZWQyOGQ5NzQz
NTRlMDJmZWY3MmNkNjNjZGJkMmI1YTJmN2RiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMjYsMjUgKzMyNiwyMiBAQCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YWNoZWRSZXNvdXJjZVR5cGVKcwogICAgIHJldHVybiByZXNvdXJjZVR5cGVKc29uKGNhY2hlZFJl
c291cmNlVHlwZShjYWNoZWRSZXNvdXJjZSkpOwogfQogCi1JbnNwZWN0b3JQYWdlQWdlbnQ6Oklu
c3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSog
b3ZlcmxheSkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlBhZ2UiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fcGFnZShwYWdlKQorSW5zcGVjdG9yUGFnZUFn
ZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVj
dG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGNvbnRleHQpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQ
YWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCiB7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0K
ICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCkBAIC0zNjYsOCArMzYzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgc3RvcHdhdGNoLT5yZXNldCgpOwogICAgIHN0
b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkK
LSAgICAgICAgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkID0gIWZyYW1lLT5zZXR0
aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOworICAgIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25E
aXNhYmxlZCA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC00MDks
MTMgKzQwNSwxMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0CiB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25v
cmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCiB7
CiAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogIiI7
Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25vcmVD
YWNoZSA/ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOworICAgIG1fcGFnZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNoZSA/ICpvcHRpb25hbElnbm9y
ZUNhY2hlIDogZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UubWFpbkZyYW1lKCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KGZy
YW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOwogICAgIEZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVSZXF1ZXN0KGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNl
UmVxdWVzdCwgIl9zZWxmIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMOjpSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTUwMyw3ICs0OTksNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcgogICAgIC8vIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdHJ1ZS9mYWxz
ZSB2YWx1ZS4KICAgICBib29sIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGZhbHNlOwogCi0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgICAgIGZv
ciAoYXV0byYgdXJsIDogYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKSkgewpAQCAtNTM1
LDEzICs1MzEsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJh
bWUtPmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmplY3QpCiB7Ci0gICAg
b2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOwor
ICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKCZtX3BhZ2UubWFpbkZyYW1lKCkp
OwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQpAQCAtNjE3LDcgKzYx
Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwog
ICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRp
bGl0aWVzOjpjcmVhdGVTZWFyY2hSZWdleCh0ZXh0LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsK
IAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnQ7CiAKICAgICAgICAgZm9y
IChhdXRvKiBjYWNoZWRSZXNvdXJjZSA6IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKSkg
ewpAQCAtNjY1LDExICs2NjEsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0
RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQYWdlQgogewogICAgIGJv
b2wgZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKICAgICBib29sIGRpc2FibGVk
SW5TZXR0aW5ncyA9IGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IGlmIChmcmFtZSkgewotICAgICAgICBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9ICFmcmFt
ZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpOwot
ICAgICAgICBkaXNhYmxlZEluU2V0dGluZ3MgPSAhZnJhbWUtPnNldHRpbmdzKCkuaXNTY3JpcHRF
bmFibGVkKCk7Ci0gICAgfQorICAgIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gbWFpbkZy
YW1lKCkuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
OworICAgIGRpc2FibGVkSW5TZXR0aW5ncyA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlzU2Ny
aXB0RW5hYmxlZCgpOwogCiAgICAgaWYgKCFkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlcikgewog
ICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpSZXN1bHQ6OkFsbG93ZWQ7CkBAIC02ODQsMTEgKzY3Nyw4IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6
OlBhZ2VCCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3JpcHRFeGVjdXRpb25EaXNh
YmxlZChFcnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCiB7Ci0gICAgaWYgKCFtYWluRnJhbWUoKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlv
biA9IHRydWU7Ci0gICAgbWFpbkZyYW1lKCktPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCgh
dmFsdWUpOworICAgIG1haW5GcmFtZSgpLnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCghdmFs
dWUpOwogICAgIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb24gPSBmYWxzZTsKIH0K
IApAQCAtNzQyLDEwICs3MzIsOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVEZXRh
Y2hlZChGcmFtZSYgZnJhbWUpCiAgICAgfQogfQogCi1GcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluRnJhbWUoKQorTWFpbkZyYW1lJiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5GcmFtZSgp
CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIEZyYW1lJgotICAgIHJldHVy
biAmbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgpOwog
fQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCkKQEAgLTc4NSw3ICs3NzQsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojps
b2FkZXJJZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFn
ZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5SYXdT
dHJpbmcpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAg
ICAgICAgIGlmIChkb2N1bWVudE9yaWdpbi0+dG9SYXdTdHJpbmcoKSA9PSBvcmlnaW5SYXdTdHJp
bmcpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CkBAIC05MDgsNiArODk3LDggQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogCiBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVp
bGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CisgICAgQVNTRVJUX0FSRyhmcmFtZSwg
ZnJhbWUpOworCiAgICAgYXV0byBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoZnJhbWVJZChmcmFtZSkpCiAgICAg
ICAgIC5zZXRMb2FkZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSkpCkBAIC05MjksNiArOTIwLDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZy
YW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnIKIAogUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsKKyAgICBBU1NF
UlRfQVJHKGZyYW1lLCBmcmFtZSk7CisKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CiAgICAg
YXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRl
KCkKQEAgLTk4OCw3ICs5ODEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0
ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fZW11bGF0ZWRNZWRpYSA9IG1lZGlhOwotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQpIHsK
ICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHkpOwogICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CkBAIC0xMDAzLDE5ICs5
OTYsMTggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYShTdHJp
bmcmIG1lZGlhKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29tcG9zaXRpbmdCb3Jk
ZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91dFBhcmFtKQogewotICAgICpvdXRQYXJh
bSA9IG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93RGVidWdCb3JkZXJzKCkgfHwgbV9wYWdlLT5zZXR0
aW5ncygpLnNob3dSZXBhaW50Q291bnRlcigpOworICAgICpvdXRQYXJhbSA9IG1fcGFnZS5zZXR0
aW5ncygpLnNob3dEZWJ1Z0JvcmRlcnMoKSB8fCBtX3BhZ2Uuc2V0dGluZ3MoKS5zaG93UmVwYWlu
dENvdW50ZXIoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldENvbXBvc2l0aW5n
Qm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sIHZpc2libGUpCiB7Ci0gICAgbV9wYWdl
LT5zZXR0aW5ncygpLnNldFNob3dEZWJ1Z0JvcmRlcnModmlzaWJsZSk7Ci0gICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldFNob3dSZXBhaW50Q291bnRlcih2aXNpYmxlKTsKKyAgICBtX3BhZ2Uuc2V0
dGluZ3MoKS5zZXRTaG93RGVidWdCb3JkZXJzKHZpc2libGUpOworICAgIG1fcGFnZS5zZXR0aW5n
cygpLnNldFNob3dSZXBhaW50Q291bnRlcih2aXNpYmxlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIFN0cmluZyogb3V0RGF0YVVSTCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUo
KTsKLSAgICBBU1NFUlQoZnJhbWUpOworICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwog
CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgQVNTRVJUKGRvbUFnZW50KTsKQEAgLTEwMjMsNyAr
MTAxNSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0g
V2ViQ29yZTo6c25hcHNob3ROb2RlKCpmcmFtZSwgKm5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdE5vZGUoZnJhbWUsICpu
b2RlKTsKICAgICBpZiAoIXNuYXBzaG90KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCIpOwogICAgICAgICByZXR1cm47CkBA
IC0xMDM0LDE1ICsxMDI2LDE0IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5v
ZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGlu
YXRlU3lzdGVtLCBTdHJpbmcqIG91dERhdGFVUkwpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1lKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJh
bWUoKTsKIAogICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9u
ZTsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSAiVmlld3BvcnQiKQogICAgICAgICBvcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzOwogCiAgICAgSW50UmVjdCBy
ZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KCpmcmFtZSwgcmVjdGFuZ2xlLCBv
cHRpb25zKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25h
cHNob3RGcmFtZVJlY3QoZnJhbWUsIHJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoIXNu
YXBzaG90KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qg
Y2FwdHVyZSBzbmFwc2hvdCIpOwpAQCAtMTA2MCwxNCArMTA1MSwxMCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6aGFuZGxlSmF2YVNjcmlwdERpYWxvZyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGJvb2wgYQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtYWlu
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJObyBtYWluIGZyYW1lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgRnJh
bWUmIGZyYW1lID0gbWFpbkZyYW1lKCk7CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVT
RShDRikKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShmcmFtZSk7CisgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoJmZyYW1lKTsKICAgICBpZiAoIWFyY2hpdmUp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUg
d2ViIGFyY2hpdmUgZm9yIG1haW4gZnJhbWUiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGU5YWQ4NjZiYWVj
MDQxMjUyNmEwYWRjNmFiNTBiMzZiNWFmZjVkYTMuLjA1ZWVmYWYyZTMxMDI2ZjVlOTE5ODlmYzRl
YmU2MzFiM2U4MDVjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcm9udGVu
ZDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7Ci1jbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgVVJMOwogY2xh
c3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6UGEKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3Rv
clBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFnZSosIEluc3BlY3RvckNsaWVudCos
IEluc3BlY3Rvck92ZXJsYXkqKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29u
dGV4dCYsIEluc3BlY3RvckNsaWVudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKIAogICAgIGVudW0g
UmVzb3VyY2VUeXBlIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZSwKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDcm9z
cy1hZ2VudHMgQVBJCi0gICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQotICAgIEZy
YW1lKiBtYWluRnJhbWUoKTsKKyAgICBQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9Cisg
ICAgTWFpbkZyYW1lJiBtYWluRnJhbWUoKTsKICAgICBTdHJpbmcgY3JlYXRlSWRlbnRpZmllcigp
OwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBhZ2VC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAotICAgIFBhZ2UqIG1fcGFn
ZSB7IG51bGxwdHIgfTsKKyAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBt
X2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXkgeyBu
dWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVw
bGF5QWdlbnQuY3BwCmluZGV4IDM0OTBlNzVjMjIwZWM3N2JkMTZjZGU2YTlmMmUxOTg3ZjU2NTg4
NmQuLjhiZGEwOWRmMGJkNmU0ZGI5YmI5NTc2ZWQzYjY5ZjE0ZmE0OTEyMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMTU2
LDkgKzE1NiwxMSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vz
c2lvblNlZ21lbnQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yUwogICAgICAgICAucmVsZWFzZSgp
OwogfQogCi1JbnNwZWN0b3JSZXBsYXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSZXBsYXki
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fcGFnZSgqcGFnZUFnZW50LT5wYWdlKCkp
CitJbnNwZWN0b3JSZXBsYXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoUGFnZUFnZW50Q29u
dGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlJl
cGxheSIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UmVwbGF5QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
KyAgICAsIG1fcGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CiB9CiAKQEAgLTE3MywxMSAr
MTc1LDggQEAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNz
aW9uU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNl
c3Npb25TdGF0ZSgpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0
ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpS
ZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJ
bnNwZWN0b3JSZXBsYXlBZ2VudCh0aGlzKTsKICAgICBBU1NFUlQoc2Vzc2lvblN0YXRlKCkgPT0g
V2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSk7CiAKQEAgLTE5Miw5ICsxOTEsNiBAQCB2
b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZFJvdXRlcgogCiB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBudWxscHRyOwotCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rv
clJlcGxheUFnZW50KG51bGxwdHIpOwogCiAgICAgLy8gRHJvcCByZWZlcmVuY2VzIHRvIGFsbCBz
ZXNzaW9ucyBhbmQgc2VnbWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXBsYXlBZ2VudC5oCmluZGV4IGY3YmVhNmZkYTU1YjYwZDg4ZTAzZTkzNzUwMWZiZDYz
MmFjOGVmOGIuLjgzM2VlY2UwMTFjNWY5MjEwMjQ4ODA3MTgwZGFmODc4ODVmZDhmYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC00
Myw3ICs0Myw2IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVwbGF5U2Vzc2lvbjsKIGNsYXNzIFJlcGxheVNlc3Np
b25TZWdtZW50OwpAQCAtNjIsNyArNjEsNyBAQCBjbGFzcyBJbnNwZWN0b3JSZXBsYXlBZ2VudCBm
aW5hbAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclJlcGxheUFnZW50KTsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JSZXBsYXlB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgSW5z
cGVjdG9yUmVwbGF5QWdlbnQoUGFnZUFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvclJlcGxheUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggZTI1NTFhMmNiYTM2YzQ5OTUzNGExYTYw
MzJlZWMwYjEyZGY3MDQxMy4uY2M4NWZkMjYzYTE5M2RhYzk5MzZhM2E0ZTA2MjUxNmY1ODg4M2Vh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcApAQCAtMTYyLDI1ICsxNjIsMjIgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3Bh
Y2UKIAotSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCitJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KFdlYkFnZW50Q29udGV4
dCYgY29udGV4dCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVu
dCogY2xpZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29y
ayIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAg
ICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+
KCkpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3
b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlz
YWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZjA4MjRlMjhhMmZjZjMxYjgyMzU3MTQ3ZmE3NDAxNjM0
ZThmNDRjOS4uZDI1YTdjMDI4NDIxMWMxNjc2ZTA5ZmUxYTU1MDBmODIwOGRmMTExYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBA
IC01NSw3ICs1NSw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNz
IEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtNzYsNyArNzUsNyBAQCB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKKyAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCop
OwogICAgIHZpcnR1YWwgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBi
MDljMTE1OWI2NDEwODkyNzEyYWVjM2RlNmVjNjM3MWIxOTE5YTFkLi43NmMxZjhjODg2YmExMjdj
MjZlZTM3MzVlYWJkYTRlNGJiNDg0YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC05MCwxMSArOTAsOCBAQCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7Ci0KICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQodGhpcyk7CiAKICAgICBpZiAobV9zY3JpcHREZWJ1Z1NlcnZlcikK
QEAgLTEwMyw5ICsxMDAsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dAogCiB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51
bGxwdHIpOwogCiAgICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCkgewpAQCAtNzMwLDggKzcyNCwxMCBAQCB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJl
Y29yZFR5cGUgdHlwZSkKICAgICB9CiB9CiAKLUluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclR5cGUgdHlwZSwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRl
cmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
VGltZWxpbmUiKSwgY29udGV4dCkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGlt
ZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9pbnNwZWN0b3JUeXBlKHR5cGUpCkBAIC03ODQsOSArNzgwLDQgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwgY29uc3QKICAgICBxdWFkLT5zZXRQNChmcmFtZVZpZXcuY29udGVudHNU
b1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChhYnNvbHV0ZS5wNCgpKSkpOwogfQogCi1QYWdlKiBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpwYWdlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlQWdlbnQg
PyBtX3BhZ2VBZ2VudC0+cGFnZSgpIDogbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgKaW5kZXggNWE5MGIzNzBiZjNlNTEzZmJkZmI1ZDNkMzIwMWM0N2Y1MGFiOTAzMS4uMWNi
Y2U1NWY4ZWQ4Y2Q0ZDQ5YTAwOWRlMmUwZjA3ZTU3YzdmNTlhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC01NCw3ICs1NCw2
IEBAIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwpAQCAtMTE4LDcgKzExNyw3
IEBAIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgZmluYWwKIHB1YmxpYzoKICAgICBlbnVt
IEluc3BlY3RvclR5cGUgeyBQYWdlSW5zcGVjdG9yLCBXb3JrZXJJbnNwZWN0b3IgfTsKIAotICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBh
Z2VBZ2VudCosIEluc3BlY3RvclR5cGUsIEluc3BlY3RvckNsaWVudCopOworICAgIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5z
cGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwpAQCAtMjMwLDcgKzIyOSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
bGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7Ci0gICAgUGFnZSogcGFn
ZSgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlRp
bWVsaW5lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKaW5kZXggNGNlMGM3
YmE0NzY4NjNlNGQ2M2FmNDMyNjE2YjJkNjQ5YjExNjQzZi4uNzQzNDI5MzQwMjkyZTViZjAzNzdh
MmE5ZGJjMjdlM2IwMGFkN2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldlYkFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaApAQCAtMzMsMTIgKzMzLDQ1IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CitjbGFzcyBQYWdlOworY2xhc3Mg
V29ya2VyR2xvYmFsU2NvcGU7CisKKy8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5h
bWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2VudHMgbW92ZS4KK3N0cnVjdCBXZWJBZ2VudENvbnRl
eHQgOiBwdWJsaWMgSW5zcGVjdG9yOjpBZ2VudENvbnRleHQgeworICAgIFdlYkFnZW50Q29udGV4
dChBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMpCisgICAgICAgIDogQWdlbnRDb250ZXh0KGNvbnRleHQpCisgICAgICAgICwgaW5z
dHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIHsKKyAgICB9CisKKyAg
ICBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzOworfTsKKworc3RydWN0
IFBhZ2VBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKKyAgICBQYWdlQWdl
bnRDb250ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgUGFnZSYgaW5zcGVjdGVkUGFnZSkK
KyAgICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnNwZWN0ZWRQ
YWdlKGluc3BlY3RlZFBhZ2UpCisgICAgeworICAgIH0KKworICAgIFBhZ2UmIGluc3BlY3RlZFBh
Z2U7Cit9OworCitzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29u
dGV4dCB7CisgICAgV29ya2VyQWdlbnRDb250ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwg
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgICAgICA6IFdlYkFnZW50
Q29udGV4dChjb250ZXh0KQorICAgICAgICAsIHdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKQorICAgIHsKKyAgICB9CisKKyAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGU7Cit9OwogCiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UgewogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvckFnZW50
QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMpCisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgICAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnRCYXNlKG5hbWUpCi0gICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRp
bmdBZ2VudHMpCisgICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCBlMDhiN2E3Yzg1ZjQ2NTE5ZGEz
MjBhNDNhNmNiYjVjZDQ4NzQ0NTlkLi40NGEzNDVlYzU0NzViZTE2MDg4ZGRhZjRlMDBjM2ZjN2U0
ZTQ0OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgcHJpdmF0ZToKIAogaW50IEluc3BlY3Rv
cldvcmtlckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5uZWw6OnNfbmV4dElkID0gMTsKIAotSW5z
cGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvcldvcmtlckFn
ZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgY29udGV4dCkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpXb3Jr
ZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldEluc3BlY3RvcldvcmtlckFnZW50KHRoaXMpOwogfQpAQCAtMTEyLDEwICsx
MTQsOCBAQCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yV29ya2VyQWdlbnQobnVsbHB0cik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rvcldv
cmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCkBAIC0xMjMsOSAr
MTIzLDYgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmUKICAgICBtX3Nob3VsZFBhdXNlRGVkaWNh
dGVkV29ya2VyT25TdGFydCA9IGZhbHNlOwogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBk
aXNhYmxlKHVudXNlZCk7Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yV29y
a2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IGZjYmVlMGQxYTQ1NDAzOTBjMGZmMDdh
YmQ2NjUxODkxYmFlMjJmODAuLmQyZjVjZTcwMDJiZjg4ODZiNjUxMjFhZTVkY2U3YmE4MzQyNTJm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIFdvcmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNz
IFVSTDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAKQEAgLTUyLDcgKzUxLDcgQEAg
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Oldvcmtl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYpOworICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFnZW50KFdlYkFnZW50Q29u
dGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNjcxOTc0NzMx
MjA4MmE3MGM2NGM2YTJlMjgyZDUzNmZhZWZlYjBlNy4uZjI0YzY0ODc1ZWI5Yzk3ODJkMzY0ZjJk
NzZhODhjY2RlYWUwNWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29u
c29sZUFnZW50LmNwcApAQCAtNDEsOCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xl
QWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKLSAgICA6IFdlYkNvbnNvbGVBZ2VudChpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCitQYWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkFn
ZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KQorICAgIDog
V2ViQ29uc29sZUFnZW50KGNvbnRleHQpCiAgICAgLCBtX2luc3BlY3RvckRPTUFnZW50KGRvbUFn
ZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgK
aW5kZXggYjEzNTQwNGFlNGY3YTI1MzUyYTA0OGExYzVkNWE2N2Y0MzViNGY2OS4uNGM3NThmMGM5
ZGM2MzU2OWJiMjkxMDdkNDljMDkyZjIzNTZhNGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaWZuZGVmIFBhZ2VD
b25zb2xlQWdlbnRfaAogI2RlZmluZSBQYWdlQ29uc29sZUFnZW50X2gKIAorI2luY2x1ZGUgIklu
c3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Myw3IEBAIGNsYXNzIFBhZ2VDb25zb2xlQWdl
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29uc29sZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQYWdlQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYsIElu
c3BlY3RvckRPTUFnZW50Kik7CisgICAgUGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQm
LCBJbnNwZWN0b3JET01BZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VDb25zb2xlQWdlbnQoKSB7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IGFlM2IxNDVjMzQ2NTM5MDYzZDcyNDE0YmRjYjlkYTBmMjVmZjhiZjUu
LjE4OTJhZTM3N2RhYmU5NzcyOTA4YzQyZTdmOWEzYjQ2ODBhODhmNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCkBAIC01MCwxMSArNTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5
KiBvdmVybGF5KQotICAgIDogV2ViRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IGluc3RydW1lbnRpbmdBZ2VudHMpCitQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCisgICAgOiBXZWJEZWJ1Z2dlckFnZW50KGNv
bnRleHQpCisgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9wYWdl
QWdlbnQocGFnZUFnZW50KQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCi0gICAgLCBtX3Njcmlw
dERlYnVnU2VydmVyKCpwYWdlQWdlbnQtPnBhZ2UoKSkKKyAgICAsIG1fc2NyaXB0RGVidWdTZXJ2
ZXIobV9wYWdlKQogewogfQogCkBAIC03Niw3ICs3OCw3IEBAIFN0cmluZyBQYWdlRGVidWdnZXJB
Z2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJE
ZXByZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CiAKICAgICBpZiAoIXNj
cmlwdC51cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9
IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIFVS
TChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlID0gbV9wYWdlQWdlbnQtPmNhY2hlZFJlc291cmNlKCZtX3BhZ2UubWFpbkZyYW1l
KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKICAgICAgICAgaWYgKHJlc291
cmNlKSB7CiAgICAgICAgICAgICBTdHJpbmcgc291cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJl
c3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1hcEhUVFBIZWFkZXIpOwogICAgICAgICAg
ICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQpAQCAtMTE4LDEzICsxMjAsMTMgQEAg
dm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiAKIHZvaWQgUGFnZURlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BhZ2VBZ2VudC0+cGFnZSgpLT5jb25zb2xlKCku
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2Us
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmUpKTsKKyAgICBtX3BhZ2VBZ2VudC0+cGFnZSgpLmNvbnNvbGUoKS5hZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6
ZVRvQ2FwdHVyZSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKLSAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKG1f
cGFnZUFnZW50LT5tYWluRnJhbWUoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpKTsKICAg
ICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNj
cmlwdFN0YXRlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmgKaW5kZXggNzVhZjI4ZTQ5Zjc5ZWI3MDhjMDQ0Mzc2Yzg5ZmU3YmIzYzhiZmVi
NS4uYmFlZTJiYWE5MzM0MThlZmZjZjEwZGY1OTZiYzRhODE2ZjYyNTQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTM5LDcgKzM5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7CiAKQEAgLTQ3LDcgKzQ2LDcgQEAgY2xhc3Mg
UGFnZURlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViRGVidWdnZXJBZ2VudCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZURlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhZ2VEZWJ1Z2dlckFnZW50KEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBh
Z2VBZ2VudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKKyAgICBQYWdlRGVidWdnZXJBZ2VudChQYWdl
QWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOwog
ICAgIHZpcnR1YWwgflBhZ2VEZWJ1Z2dlckFnZW50KCkgeyB9CiAKICAgICB2b2lkIGRpZENsZWFy
TWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CkBAIC03MSw4ICs3MCw5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChF
cnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcqKSBvdmVycmlkZTsKIAotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBu
dWxscHRyIH07CisgICAgUGFnZSYgbV9wYWdlOwogCisgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXkgeyBudWxscHRyIH07
CiAgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDlhZWQ3
MTAwZDMwOTFiZTU2MzJjMzg1YTA5ZGNlODZkOTAxMjg2NWMuLjkyYTA3YzdjOWVjM2EyZDE5OGNh
MDE3MjUxNjllNzBjYWQyNmVlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUzLDI0ICs1MywyMSBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VS
dW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IFBhZ2UqIHBhZ2UsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVj
dG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1BhZ2VSdW50aW1lQWdlbnQ6
OlBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQpCisgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpS
dW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKLSAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQorICAgICwgbV9pbnNw
ZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KIAotdm9pZCBQYWdlUnVudGlt
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgUGFnZVJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxw
dHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBTdHJpbmcgdW51
c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIApAQCAtMTIwLDcgKzExNyw3IEBAIEpTQzo6Vk0m
IFBhZ2VSdW50aW1lQWdlbnQ6Omdsb2JhbFZNKCkKIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmICghZXhlY3V0aW9uQ29udGV4
dElkKSB7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4
ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7CisgICAgICAgIEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdl
Lm1haW5GcmFtZSgpKTsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgICAgICBp
ZiAocmVzdWx0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJJbnRlcm5hbCBlcnJvcjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3Qg
Zm91bmQuIik7CkBAIC0xNDYsNyArMTQzLDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50Ojp1bm11
dGVDb25zb2xlKCkKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29udGV4
dENyZWF0aW9uKCkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwgU2Vj
dXJpdHlPcmlnaW4qPj4gaXNvbGF0ZWRDb250ZXh0czsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDNlNGJlZGY3YjdmYzlh
NGFlMWYxMzhkZjgyYTJmM2M5YzAwNjNjMzQuLmI3OTBlNzAxMDFkZTEyMTg5ZGI1ZmIxMzA0YWYx
ZmJlNjQ4MTYzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmbmRlZiBQYWdlUnVudGltZUFnZW50X2gKICNkZWZp
bmUgUGFnZVJ1bnRpbWVBZ2VudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+CiAKQEAg
LTU0LDcgKzU1LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBQYWdlUnVu
dGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlUnVudGlt
ZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgUGFnZSosIEluc3BlY3Rv
clBhZ2VBZ2VudCopOworICAgIFBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYsIElu
c3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQoKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKQEAgLTc3LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50
aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKIAotICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAg
ICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiAKICAgICBib29sIG1fbWFpbldvcmxkQ29udGV4dENy
ZWF0ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNv
bGVBZ2VudC5jcHAKaW5kZXggOWIwMGYyZmRlYTNmYjk1NzkzNmMyZTIzMzcwMzc2ZWU5ODZmYzQw
NC4uZDEzYjI5NDQ2N2JlZDk4OGM4ODI2OTU3OTIzNWUzMGE5YjgxOTIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTQxLDggKzQxLDggQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJD
b25zb2xlQWdlbnQ6OldlYkNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckNvbnNvbGVBZ2VudChpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCitXZWJDb25zb2xlQWdlbnQ6OldlYkNvbnNvbGVBZ2VudChBZ2VudENv
bnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQoY29udGV4dCkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCmluZGV4IDI5
MmY5ZDQzMzE2NWViYjg3MzQ1NzFlYTkwOTVhY2IyODc4OGQyYTUuLjE4NzgwMzM1OWEzZmQ0ZTQ5
MDE3NGQ4MDg2ZmMwYzYzOWFkZjliYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2Vi
Q29uc29sZUFnZW50LmgKQEAgLTMzLDE0ICszMywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBET01XaW5kb3c7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCiBjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNv
bGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2Vi
Q29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIFdlYkNvbnNvbGVB
Z2VudChJbnNwZWN0b3I6OkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfldlYkNvbnNvbGVB
Z2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVkKEVy
cm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA0YjZhZmY4ZDgwOTdiYmJi
Nzg4MDc2N2VmNTBlMjU5YTQxMDM2NGI0Li5lNjY0OGU3NTdlY2I1M2RkNDEyOWVkOGYwMjhmMzA0
NWRjNzM3MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC0zMiw5ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViRGVidWdnZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudChJ
bmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCitXZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KFdl
YkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoY29u
dGV4dCkKKyAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdB
Z2VudHMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IGNjMGJiZGM3YmNlMTBmZGJjY2M2YjI2YTdlNTZkYmM3OTFkM2MwZDIuLjIzMDE3
NGQ5NWZiYTRjNmYwOTZiYmJlOWMzZWU0MWJlNTZhYTY2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBX
ZWJEZWJ1Z2dlckFnZW50X2gKICNkZWZpbmUgV2ViRGVidWdnZXJBZ2VudF9oCiAKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyAr
MzgsNyBAQCBjbGFzcyBXZWJEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViRGVidWdnZXJB
Z2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2ViRGVi
dWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3RydW1lbnRp
bmdBZ2VudHMmKTsKKyAgICBXZWJEZWJ1Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAg
IHZpcnR1YWwgfldlYkRlYnVnZ2VyQWdlbnQoKSB7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAppbmRleCA0YTdjODdi
NWQzMmQyZGNlN2FlM2E2NTY2NTZmNzg3YmQ4MTIyYzYyLi4yNzE5NDg2OGQ3NTZlZjA2OWU3Y2Vk
MTA4ZGY5MzdhMDE0YWZhNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlckNvbnNvbGVBZ2VudDo6V29y
a2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQotICAgIDogV2ViQ29uc29sZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1dv
cmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYg
Y29udGV4dCkKKyAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKaW5kZXggMjJmMjZkNzcy
MmEzOTczZjhjNzEyMWQ3NDRiMjMzMjBmMDQ4ODcyZi4uYjI0ZTgzMDhhMzJkNjlkM2VkMjYwZjIx
Y2M1MjNkYTRmZDY0OGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJD
b25zb2xlQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmbmRlZiBXb3JrZXJDb25zb2xlQWdl
bnRfaAogI2RlZmluZSBXb3JrZXJDb25zb2xlQWdlbnRfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQwLDcgKzQxLDcgQEAgY2xhc3MgV29ya2VyQ29uc29sZUFnZW50IGZp
bmFsIDogcHVibGljIFdlYkNvbnNvbGVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V29ya2VyQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXb3JrZXJDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7Cisg
ICAgV29ya2VyQ29uc29sZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwg
fldvcmtlckNvbnNvbGVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyQWdl
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggOGQxYjk1YmZkMDJmMWRl
NzZlN2IyYTBhZmUzNzQ3NjY1ZTA2MGM0OS4uMDY0NGMwNWIyMjc5ZjE0MTcyMmE2NGIzM2M5NGFl
ZmI1ZjYwNDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmNwcApAQCAtODEsMjEgKzgxLDIxIEBAIHByaXZhdGU6CiAKIGNvbnN0IGNoYXIq
IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUgPSAiZGVidWdnZXIiOwogCi1X
b3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFu
YWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZSogaW5zcGVjdGVkV29ya2VyR2xvYmFsU2Nv
cGUpCi0gICAgOiBXZWJEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5zdHJ1
bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoaW5zcGVjdGVkV29ya2Vy
R2xvYmFsU2NvcGUsIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpCi0gICAg
LCBtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3Bl
KQorV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChXb3JrZXJBZ2VudENv
bnRleHQmIGNvbnRleHQpCisgICAgOiBXZWJEZWJ1Z2dlckFnZW50KGNvbnRleHQpCisgICAgLCBt
X3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUsIFdvcmtlckRlYnVn
Z2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpCisgICAgLCBtX2luc3BlY3RlZFdvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY0xvY2s+IGxvY2sod29ya2VyRGVidWdnZXJBZ2VudHNNdXRleCk7Ci0gICAgd29ya2Vy
RGVidWdnZXJBZ2VudHMoKS5zZXQoJmluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQo
KSwgdGhpcyk7CisgICAgd29ya2VyRGVidWdnZXJBZ2VudHMoKS5zZXQoJmNvbnRleHQud29ya2Vy
R2xvYmFsU2NvcGUudGhyZWFkKCksIHRoaXMpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+
V29ya2VyRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2sod29ya2VyRGVidWdnZXJBZ2VudHNNdXRleCk7CiAKLSAgICBBU1NFUlQod29ya2VyRGVi
dWdnZXJBZ2VudHMoKS5jb250YWlucygmbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZS0+dGhy
ZWFkKCkpKTsKLSAgICB3b3JrZXJEZWJ1Z2dlckFnZW50cygpLnJlbW92ZSgmbV9pbnNwZWN0ZWRX
b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkpOworICAgIEFTU0VSVCh3b3JrZXJEZWJ1Z2dlckFn
ZW50cygpLmNvbnRhaW5zKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpKSk7
CisgICAgd29ya2VyRGVidWdnZXJBZ2VudHMoKS5yZW1vdmUoJm1faW5zcGVjdGVkV29ya2VyR2xv
YmFsU2NvcGUudGhyZWFkKCkpOwogfQogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmludGVy
cnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMoV29ya2VyVGhyZWFkKiB0aHJlYWQpCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbnRlcnJ1cHRBbmRE
aXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKFdvcmtlclRocmVhZCogdGgKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayh3b3JrZXJEZWJ1Z2dlckFnZW50c011dGV4KTsKIAogICAg
IGlmIChXb3JrZXJEZWJ1Z2dlckFnZW50KiBhZ2VudCA9IHdvcmtlckRlYnVnZ2VyQWdlbnRzKCku
Z2V0KHRocmVhZCkpCi0gICAgICAgIGFnZW50LT5tX3NjcmlwdERlYnVnU2VydmVyLmludGVycnVw
dEFuZFJ1blRhc2soc3RkOjptYWtlX3VuaXF1ZTxSdW5JbnNwZWN0b3JDb21tYW5kc1Rhc2s+KHRo
cmVhZCwgYWdlbnQtPm1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICAgICAgYWdl
bnQtPm1fc2NyaXB0RGVidWdTZXJ2ZXIuaW50ZXJydXB0QW5kUnVuVGFzayhzdGQ6Om1ha2VfdW5p
cXVlPFJ1bkluc3BlY3RvckNvbW1hbmRzVGFzaz4odGhyZWFkLCAmYWdlbnQtPm1faW5zcGVjdGVk
V29ya2VyR2xvYmFsU2NvcGUpKTsKIH0KIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpzdGFy
dExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIGlz
QmVpbmdEZXN0cm95ZWQpCiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFj
dGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBt
X2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UpOworICAgIG1faW5zcGVjdGVkV29y
a2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6TG9nLCBtZXNzYWdlKTsKIH0KIAogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkKQEAgLTEzMyw3ICsxMzMsNyBA
QCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcmIGVycm9yLCBjbwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQo
KTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUobV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAg
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAppbmRleCA5NjFk
YmUxODYyZmJhOGRmOTY0NmFjNmVjMDU1NmY2NmFmZjNkNWM3Li4zZTE3NjgxOTViZjY1MzIyZjgy
ODMwNzhlMWRkOWUxNmM3NTFmYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgV29ya2VyRGVidWdn
ZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdvcmtlckdsb2JhbFNjb3Bl
Kik7CisgICAgV29ya2VyRGVidWdnZXJBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmKTsKICAgICB2
aXJ0dWFsIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciog
ZGVidWdnZXJUYXNrTW9kZTsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0gICAgV29y
a2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUgeyBudWxscHRyIH07
CisgICAgV29ya2VyR2xvYmFsU2NvcGUmIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjE0MTNiODZkNjky
ZjEzMDIyYjgyZjkyZTY4YzAzYjYyZmJjYjgzYi4uMmU1NGI3MGM0NmUzZTYxOTM2OTM2YmQ1NDMz
OWMwNDkyNjNiY2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODUsMTkgKzg1LDM2IEBAIFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpj
cmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7Ci0gICAgYXV0byBydW50aW1lQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4oKm1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEFnZW50Q29udGV4dCBiYXNlQ29u
dGV4dCA9IHsKKyAgICAgICAgKnRoaXMsCisgICAgICAgICptX2luamVjdGVkU2NyaXB0TWFuYWdl
ciwKKyAgICAgICAgbV9mcm9udGVuZFJvdXRlci5nZXQoKSwKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKQorICAgIH07CisKKyAgICBXZWJBZ2VudENvbnRleHQgd2ViQ29udGV4dCA9
IHsKKyAgICAgICAgYmFzZUNvbnRleHQsCisgICAgICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKQorICAgIH07CisKKyAgICBXb3JrZXJBZ2VudENvbnRleHQgd29ya2VyQ29udGV4dCA9IHsK
KyAgICAgICAgd2ViQ29udGV4dCwKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUsCisgICAgfTsK
KworICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1l
QWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50
LmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V29ya2VyUnVudGltZUFnZW50
KG1fcnVudGltZUFnZW50KTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJ1bnRpbWVB
Z2VudCkpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckNvbnNvbGVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsKKyAgICBhdXRvIGNvbnNv
bGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250
ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25z
b2xlQWdlbnQuZ2V0KCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJndvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBhdXRvIGRl
YnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtl
ckNvbnRleHQpOwogICAgIG1fcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmZGVi
dWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rjo6bW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIG51bGxwdHIsIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3BlY3RvciwgbnVs
bHB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ+KHdvcmtlckNvbnRleHQsIG51bGxwdHIsIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6Oldvcmtlckluc3BlY3RvciwgbnVsbHB0cikpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6
Om1vdmUoY29uc29sZUFnZW50KSk7CiAKICAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21t
YW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElI
b3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5jcHAKaW5kZXggY2NkOGZlYWNlZDkxNmM0N2U3MTRmZjEzNjhkNDFjNTU1MWM5Y2YyNC4uNTMw
MzBlYWRmYmE3YWE1YTg1Nzk5YjgzZjQzODRiMDBlZWMyYjc2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ3LDIxICs0NywxOSBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdv
cmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFs
U2NvcGUpCi0gICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlclJ1
bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4
dCkKKyAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQorICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV93b3JrZXJHbG9iYWxTY29w
ZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQogewogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBXb3JrZXJS
dW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxw
dHI7Ci0KICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKHJlYXNvbik7CiB9CiAKQEAgLTcyLDcgKzcwLDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29y
a2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9y
LCBjb24KICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7CiAg
ICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlw
dFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCmluZGV4IDk2ZDlhMGIxY2Q5ZWE0MzgwMjVjMWI4YTJkMjBlZGQ2YjZlODRjOWQuLmY4
MmNjYWYxOTNjMWM0ZTZjNzcyODJkNDBmNGZhYjUwMGJlYjMyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
Zm5kZWYgV29ya2VyUnVudGltZUFnZW50X2gKICNkZWZpbmUgV29ya2VyUnVudGltZUFnZW50X2gK
IAorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQxLDcgKzQyLDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIFdv
cmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRp
bWVBZ2VudCB7CiBwdWJsaWM6Ci0gICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKKyAgICBXb3JrZXJSdW50
aW1lQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGlt
ZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7CkBAIC01Niw5ICs1NywxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNv
bnNvbGUoKSBvdmVycmlkZTsKKwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckds
b2JhbFNjb3BlIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260688</attachid>
            <date>2015-09-05 09:29:50 -0700</date>
            <delta_ts>2015-09-05 10:30:14 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-148625-20150905092946.patch</filename>
            <type>text/plain</type>
            <size>131539</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjJkMDJiOTY1MGUwODVkMDYxODY3MDVkNjEzNWYwMjlhMTQ2N2ExLi40NTY1YjBlZTczYTcxNjli
Y2IyOTIzYWJlNDA5MjdhYWNlNDFlZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0wOS0wNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgQWdlbnQtb3du
ZWQgb2JqZWN0cywgYW5kIGluaXRpYWxpemUgYWdlbnRzIHVzaW5nIGNvbnRleHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgQWxsIGFnZW50cyBvd24g
dGhlaXIgZG9tYWluLXNwZWNpZmljIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXJzLiBD
aGFuZ2Ugc28gdGhhdAorICAgICAgICB0aGV5IGFyZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3Rv
cnMgcmF0aGVyIHRoYW4gd2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLgor
ICAgICAgICBUaGlzIG1heSBjYXVzZSBhZGRpdGlvbmFsIG1lbW9yeSB1c2UsIGJ1dCB0aGlzIGNh
biBiZSBjb3VudGVyYWN0ZWQgYnkgbGF6aWx5IGNyZWF0aW5nCisgICAgICAgIHNvbWUgYWdlbnRz
IHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3Igb3RoZXIgYWdlbnRzIHRvIGZ1bmN0aW9uIChpLmUu
LCBydW50aW1lIGFuZCBwYWdlIGFnZW50cykuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIGZy
b250ZW5kL2JhY2tlbmQgZGlzcGF0Y2hlciBhcmd1bWVudHMgdG8gZXZlcnkgc2luZ2xlIGFnZW50
IGNvbnN0cnVjdG9yLAorICAgICAgICBjaGFuZ2UgYWdlbnQgY29uc3RydWN0aW9uIHRvIHRha2Ug
YSBBZ2VudENvbnRleHQgb3IgYSBzdWJjbGFzcyBvZiBpdC4gVGhpcyBwcm92aWRlcyBhZ2VudHMg
d2l0aAorICAgICAgICByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGhlIG93bmluZyBJbnNwZWN0
b3JFbnZpcm9ubWVudCBzdWJjbGFzcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvCisgICAgICAgIG91
dGxpdmUgYWxsIGFnZW50cy4gQWdlbnRDb250ZXh0IGFuZCBpdHMgc3ViY2xhc3NlcyBmb2xsb3cg
dGhlIGV4aXN0aW5nIEFnZW50IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNBZ2VudENvbnRl
eHQ6OkpTQWdlbnRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNw
ZWN0b3JBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaDogQWx0ZXJuYXRlIGFnZW50cyBzaG91bGQKKyAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gZnJv
bnRlbmQgcm91dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgYXQgY29uc3RydWN0aW9uIHRpbWUu
CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAg
ICAgKENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9ldmVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisKIDIwMTUt
MDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1lc3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIg
aW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGViZDkzZjcyMWU0ZjJk
MGNhY2YwZThiNTk1MzA5ZGIwMzY2ZjNkLi5iNjgzZjRjYTcxYmFiMzg1NmQ0NGIxZGNkZTE4Y2Yz
MzRlZmYwYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDE1LTA5LTA1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpZ2h0
ZW4gdXAgbGlmZXRpbWVzIGZvciBBZ2VudC1vd25lZCBvYmplY3RzLCBhbmQgaW5pdGlhbGl6ZSBh
Z2VudHMgdXNpbmcgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KKworICAgICAgICBBbGwgYWdlbnRzIG93biB0aGVpciBkb21haW4tc3BlY2lmaWMgZnJvbnRl
bmQgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlcnMuIENoYW5nZSBzbyB0aGF0CisgICAgICAgIHRoZXkg
YXJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9ycyByYXRoZXIgdGhhbiB3aGVuIGEgZnJvbnRl
bmQgY29ubmVjdHMgb3IgZGlzY29ubmVjdHMuCisgICAgICAgIFRoaXMgbWF5IGNhdXNlIGFkZGl0
aW9uYWwgbWVtb3J5IHVzZSwgYnV0IHRoaXMgY2FuIGJlIGNvdW50ZXJhY3RlZCBieSBsYXppbHkg
Y3JlYXRpbmcKKyAgICAgICAgc29tZSBhZ2VudHMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBv
dGhlciBhZ2VudHMgdG8gZnVuY3Rpb24gKGkuZS4sIHJ1bnRpbWUgYW5kIHBhZ2UgYWdlbnRzKS4K
KworICAgICAgICBUbyBhdm9pZCBhZGRpbmcgZnJvbnRlbmQvYmFja2VuZCBkaXNwYXRjaGVyIGFy
Z3VtZW50cyB0byBldmVyeSBzaW5nbGUgYWdlbnQgY29uc3RydWN0b3IsCisgICAgICAgIGNoYW5n
ZSBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8gdGFrZSBhIEFnZW50Q29udGV4dCBvciBhIHN1YmNsYXNz
IG9mIGl0LiBUaGlzIHByb3ZpZGVzIGFnZW50cyB3aXRoCisgICAgICAgIHJlZmVyZW5jZXMgdG8g
b2JqZWN0cyBpbiB0aGUgb3duaW5nIEluc3BlY3RvckVudmlyb25tZW50IHN1YmNsYXNzIHRoYXQg
YXJlIGd1YXJhbnRlZWQgdG8KKyAgICAgICAgb3V0bGl2ZSBhbGwgYWdlbnRzLiBBZ2VudENvbnRl
eHQgYW5kIGl0cyBzdWJjbGFzc2VzIGZvbGxvdyB0aGUgZXhpc3RpbmcgQWdlbnQgY2xhc3MgaGll
cmFyY2h5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92
ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2Fi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRP
YmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
cGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJBZ2Vu
dENvbnRleHQ6OldlYkFnZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQWdlbnRD
b250ZXh0OjpQYWdlQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFnZW50
Q29udGV4dDo6V29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50QmFzZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZv
clNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29u
dGV4dENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2Vi
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpX
ZWJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRl
YnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlv
bkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50Lmg6CisKIDIwMTUtMDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1l
c3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIgaW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCmluZGV4IGY0YWViMDdlOTgyZTgzYzkwZDJmOTYyMmYxZDljZTg1NjI1ZjU5OWQuLjYx
YzY5M2Q0ZWM4MGVjNDg3Y2IyZDJkMjE4YjFjMTY4NGU5MTQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApAQCAtMjks
MTAgKzI5LDMzIEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Citj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CitjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVudDsK
Kworc3RydWN0IEFnZW50Q29udGV4dCB7CisgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmly
b25tZW50OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OworICAgIEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcjsKKyAgICBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXI7Cit9OworCitzdHJ1Y3QgSlNBZ2VudENvbnRleHQgOiBw
dWJsaWMgQWdlbnRDb250ZXh0IHsKKyAgICBKU0FnZW50Q29udGV4dChBZ2VudENvbnRleHQmIGNv
bnRleHQsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBBZ2Vu
dENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3Q7Cit9OwogCiBlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb24gewogICAg
IEluc3BlY3RlZFRhcmdldERlc3Ryb3llZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCBkYmQyZTc2YzZhMTYxNmVjNDBiOTgyMzZjYTY5ZjBlZmM4ZDRjMjMw
Li45ODlkMmE2ZTlmYWNjOTcwMzZhMWQ5ZjgzMGI4Y2UzNzE4ZTlkNmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02MiwxNiArNjIsMzAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkK
KyAgICA6IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQorI2VuZGlmCiB7Ci0gICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCp0aGlzKTsKLSAgICBhdXRvIHJ1bnRpbWVBZ2Vu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KCptX2luamVj
dGVkU2NyaXB0TWFuYWdlciwgbV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY29uc29sZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudD4oKm1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKTsKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCBtX2dsb2JhbE9iamVjdCwgY29uc29sZUFnZW50LmdldCgpKTsKKyAgICBBZ2VudENvbnRleHQg
YmFzZUNvbnRleHQgPSB7CisgICAgICAgICp0aGlzLAorICAgICAgICAqbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIsCisgICAgICAgIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksCisgICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAgICB9OworCisgICAgSlNBZ2VudENvbnRleHQgY29udGV4
dCA9IHsKKyAgICAgICAgYmFzZUNvbnRleHQsCisgICAgICAgIGdsb2JhbE9iamVjdAorICAgIH07
CisKKyAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
Z2VudD4oY29udGV4dCk7CisgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBjb25zb2xlQWdlbnQuZ2V0KCkpOwogCiAgICAg
bV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CkBAIC0xMTEsNyArMTI1LDggQEAgdm9pZCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGZyb250ZW4KICAgICBpZiAoIWNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9m
cm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIC8v
IEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhhcyBj
b25uZWN0ZWQgKGJ5IGlkKS4KKyAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQobnVsbHB0ciwgbnVsbHB0cik7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyht
X2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMjUsNiArMTQwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGZyb24KIHsKICAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRD
aGFubmVsKTsKIAorICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdo
aWNoIGZyb250ZW5kIGhhcyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0
cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CkBAIC0xNDMsNiArMTU5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb24K
IAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxG
cm9udGVuZHMoKQogeworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRz
IHdoaWNoIGZyb250ZW5kIGhhcyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRU
YXJnZXREZXN0cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZy
b250ZW5kcygpOwpAQCAtMjcxLDcgKzI4OCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiB7
CiAgICAgU3RyaW5nIGRvbWFpbk5hbWUgPSBhZ2VudC0+ZG9tYWluTmFtZSgpOwogCi0gICAgYWdl
bnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwg
Jm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0
byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQgKGJ5IGlkKS4KKyAg
ICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG51bGxwdHIsIG51bGxwdHIpOwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZTExMzA4NWQ1Y2M5OGRiODUy
Zjg1ZDNkNmFkMzlhZGIxOTQ0NDFiNy4uZmI4YzdhNWI0NzEzNTg1YTBkNDBmNTNiYWFlMWJjODgy
NTRhNmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDMs
MTMgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2F1Z21lbnRpbmdDbGllbnQgPSBjbGllbnQ7IH0KIAog
ICAgIHZpcnR1YWwgY29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZFJvdXRlci5nZXQoKTsgfQorICAgIHZpcnR1YWwg
QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRy
YUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSBvdmVycmlkZTsKICNl
bmRpZgogCiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrKTsKIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2Jq
ZWN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhl
Y3V0aW9uU3RvcHdhdGNoOwpAQCAtMTI1LDYgKzEyNSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnMgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24geyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAg
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogbV9hdWdtZW50aW5nQ2xpZW50
IHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggNTdmZTVhYWZkY2Ix
M2FmNTczNDFjNmQxNjViNTJlOWZkOGY2MmM2Yi4uYjdjNjIzZGEwZjZmODVmZGMwOTkwNzAxNDQy
YmM2NTFiYjFiZTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMzgsOSArMzgsMTEgQEAKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChJ
bnNwZWN0b3JFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCitJbnNwZWN0b3JBZ2VudDo6SW5zcGVj
dG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yIikpCi0gICAgLCBtX2Vudmlyb25tZW50KGVudmlyb25t
ZW50KQorICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogewogfQogCkBAIC00OCwxNyArNTAsMTIgQEAgSW5zcGVjdG9yQWdlbnQ6
On5JbnNwZWN0b3JBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRj
aGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQog
ICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7CiAKICAgICBFcnJvclN0
cmluZyB1bnVzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAxZThmYjY5MGViNTVmZmJjZTQ1ZDAxMThi
OTVjNDRkYjYwNzEwOWZlLi5lZGE3NDQ5MDE0OWFmYWVjNjkzZWIxOThlZmVhMmZmMGQ3OWIxNDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgSW5zcGVjdG9yQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9y
RW52aXJvbm1lbnQmKTsKKyAgICBJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RW52aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwogICAgIHN0ZDo6cGFp
cjxSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4
IDY0OWMwMjlhNGQ3MGQ1MjVkMDhjZGU4MGNmYTcyMzIwMTAzMmE0NjAuLjJiOTQyOWFjMDkzY2Uz
ZWI3NDc0ZDRiZWJkNDkzOGVmZjg2MjViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcApAQCAtNDMsOSArNDMsMTEgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3Qg
aW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLUluc3BlY3RvckNvbnNvbGVB
Z2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xl
QWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiQ29uc29sZSIpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4
dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KIApAQCAt
NTMsMTcgKzU1LDEyIEBAIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVB
Z2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3Bh
dGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRy
OwotCiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIGRpc2FibGUoZXJyb3JTdHJpbmcpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBkMTIxNDdlMjZmMDEzNTE0NzFlYmY1
NzM4ZjU5NWFjZDQ4MWIwNmM3Li5iOTcxODY5ZDYzNDUzY2U1MGRjMTE3OGFmNzBjMDNiZTcwMjQ2
OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNv
bnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
SW5zcGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JD
b25zb2xlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAt
ODMsNiArODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPENvbnNvbGVCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIENvbnNvbGVNZXNzYWdl
KiBtX3ByZXZpb3VzTWVzc2FnZSB7IG51bGxwdHIgfTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CiAgICAgaW50IG1fZXhwaXJl
ZENvbnNvbGVNZXNzYWdlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDY4NTM2NzBhN2EwZmFkNDVkYmUyZTNhNjRhZTAyY2FlYzI1ZTJiZDAuLmIwNmFi
YzIzMTY4NDYzZWRiZGVkN2JlOTdmOTVjOGRmYzNlNDU4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCkBAIC01Niw5ICs1NiwxMSBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rp
bwogICAgIHJldHVybiBtYWtlU3RyaW5nKG9iamVjdEdyb3VwLCBTdHJpbmc6Om51bWJlcihhY3Rp
b24uaWRlbnRpZmllcikpOwogfQogCi1JbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQorSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJE
ZWJ1Z2dlciIpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNj
cmlwdE1hbmFnZXIpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SUQoSlNDOjpub0JyZWFrcG9pbnRJRCkKIHsKICAgICAvLyBGSVhNRTog
bWFrZSBicmVha1JlYXNvbiBvcHRpb25hbCBzbyB0aGF0IHRoZXJlIHdhcyBubyBuZWVkIHRvIGlu
aXQgaXQgd2l0aCAib3RoZXIiLgpAQCAtNjksMTcgKzcxLDEyIEBAIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIq
IGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChG
cm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRGVidWdnZXJCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxw
dHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBib29sIHNraXBS
ZWNvbXBpbGUgPSByZWFzb24gPT0gRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVz
dHJveWVkOwogICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKaW5kZXggOGQxOTQyNTFmMTUwODMyNzkxMzliYzM3Yzk2N2RjMjgyYjkwMGNh
Mi4uYWZhMjg2YzQ3ODcwNDM3MTBlZmY5NDg0ZTgyOTdkZjQ4YTk2NGQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmKTsKIAogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBhZGRmZWJj
MTkwYjgwZWM3ZjZmNjQ4MzA2ZjczNzI0OTA2OTNhYWMzLi5mMTVkNThkNDQ2OGUxZTMwNWRjNGQ5
NDY3NDllM2I3ZWE1MjgyMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTU3LDkgKzU3LDkgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiAg
ICAgcmV0dXJuIGIgPyAqYiA6IGZhbHNlOwogfQogCi1JbnNwZWN0b3JSdW50aW1lQWdlbnQ6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKK0luc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIlJ1bnRpbWUiKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4
IDJlMmQ3OTQxMmRmM2MyMWFhODhhMWI3ODRjZjAwZGMxNTY3NTc5MWMuLjc3MGU0MDc4YzdiMmQ0
NmY2NmM2MTUwYWE1YjM5MmFiODhjMDE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsKKyAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoQWdl
bnRDb250ZXh0Jik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcigpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcAppbmRleCA5NmUxYTQ5YWRmMmY3OWFmZjJk
YWJlNWE0ZGIxZDVlMzhiZWM0ZDI2Li4wMjE3ZGM2ZGM1NWEwZmYxYjdiNmEwMTA5MDE1ODE5ZTBk
ZjI4YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCkBAIC0y
OCw4ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudDo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0Q29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3Bl
Y3RvckNvbnNvbGVBZ2VudChjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RD
b25zb2xlQWdlbnQuaAppbmRleCA5YzI4NWUyZWZmMjM2ZWFlZGVhOWQ3MTg2NTBlMTkwOTE2ODI1
NTU3Li5hNmYxZTBlZGE0ZWRiMDczZDY0NmI0MGY2ZDY4MTI1YWUxOTQ0MjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUFn
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CisgICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIC8vIEZJWE1FOiBYSFJzIGFuZCBOb2RlcyBv
bmx5IG1ha2VzIHNlbnNlIGRlYnVnZ2luZyBhIFdlYiBjb250ZXh0LiBDYW4gdGhpcyBiZSBtb3Zl
ZCB0byBhIGRpZmZlcmVudCBhZ2VudD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDRkMzgzMDc2NWIxOGNkNWVhYjUwZWNmYTljOWI5Zjg4NGFjMDdmZDku
LmY2OTEyYTZhMDUyNWIyMmIxOWVjYWQzM2Y5MGQ4YjhmMTgyYjRjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCi0gICAgOiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fc2NyaXB0
RGVidWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KQorICAgIDogSW5zcGVjdG9yRGVidWdnZXJB
Z2VudChjb250ZXh0KQorICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0Lmluc3BlY3Rl
ZEdsb2JhbE9iamVjdCkKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2VudCkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggZDIxZWZhMGY1Zjcx
YjBjYTFmZTg1YWU3ODA1NjU3NDU0M2RmZTZkMi4uMWRkNGEyMDM1YzY4ZWJhZmM5NTliZDc3Zjc3
Yzc1NzBiYWU1Y2ZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQqKTsKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmLCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdERlYnVn
U2VydmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
MGUwNDVmNDBmMzBhZmY1MGIxNzQxYTIxYjdjZDZmZWFiMDU5ZTQwZS4uZWFhNzUxZDI1Y2ZlODZj
NGQwNWU5ZmJmMmUzNGQwNjcwODc3YWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcApAQCAtMzQsMTYgKzM0LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgOiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9y
UnVudGltZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKKyAgICAsIG1fZ2xvYmFs
T2JqZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewogfQogCi12b2lkIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gUnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudC5oCmluZGV4IDkxN2ZkZWI5NWQ4YTBlMTNhZTgzMTBkZGQ4MmY0MDRlNzBj
ODBkNTMuLjVkYzg3YjIwOTVlN2FiNTRhNDJkNTg0YmIwMjJlNzJiNjg0NGQ3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKLSAgICBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Jik7CisgICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRleHQmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRS
b3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUv
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaAppbmRleCBjYTQ2
ZjEyNWFlMzFlNTRjNDU5YjBiODE2MTc4ZWRmZjFmNGE1NDhhLi45NzkxYzI5NTU2MjA2MDIzNWQ1
MTgyZDE1MDAzMWM4Y2Q5NzczZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudC5oCkBAIC0zOSwyMyArMzksMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVEJh
Y2tlbmREaXNwYXRjaGVyLCB0eXBlbmFtZSBUQWx0ZXJuYXRlRGlzcGF0Y2hlcj4KIGNsYXNzIEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9w
dHI8VEFsdGVybmF0ZURpc3BhdGNoZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCisgICAgQWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIHN0ZDo6dW5pcXVlX3B0cjxUQWx0ZXJu
YXRlRGlzcGF0Y2hlcj4gYWx0ZXJuYXRlRGlzcGF0Y2hlcikKICAgICAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoZG9tYWluTmFtZSkKICAgICAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIoV1RG
Ojptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKQorICAgICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoVEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udHJvbGxlci5iYWNrZW5kRGlzcGF0Y2hl
cigpLCBudWxscHRyKSkKICAgICB7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFs
dGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKKyAgICAgICAg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcigmY29udHJvbGxlci5i
YWNrZW5kRGlzcGF0Y2hlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKSBvdmVycmlkZQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50KCkKKyAgICB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFj
a2VuZERpc3BhdGNoZXIobnVsbHB0cik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBUQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7Ci0gICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5hdGVE
aXNwYXRjaGVyLmdldCgpKTsKLSAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNr
ZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlCiAgICAgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsK
ICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCBiMGQyNWIwYjY3MmEyOTY3Y2FmZjU3OGJmNGY1ODg4ZTll
OTU0Zjc5Li4zNDhjNzU0NWNjOGI1OTFlNTUzNjlkZTE0ZDNlOWUwYWJjNTQyZTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
IAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ckNsaWVudC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50
KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCopID0gMDsKIAogICAgIHZpcnR1
YWwgY29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JB
Z2VudEJhc2U+KSA9IDA7CiAKICAgICBib29sIGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZy
b250ZW5kUm91dGVyKCkuaGFzRnJvbnRlbmRzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggOWFmOWRkYWY4NGRmMjFlNmVmNzI2NzAx
OTM5ZjQzNThhN2FlZWNiNC4uNjFiMGJhMTgzMjhjNzc3NmQ2NWQwMjI3ZWQzNzBmMGYzYWI5MzQx
YyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFk
ZXJEb21haW5EaXNwYXRjaGVyRGVjbGFyYXRpb24gPSAoCiAgICAgIiIiJHtjbGFzc0FuZEV4cG9y
dE1hY3JvfSAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8JHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCAk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgc3RhdGljIFJlZjwk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciYs
ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5z
cGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogJHtjb21tYW5kRGVjbGFyYXRpb25z
fQogcHJpdmF0ZToKQEAgLTE2OCw5ICsxNjgsOSBAQCAke2Rpc3BhdGNoQ2FzZXN9CiB9IiIiKQog
CiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0cnVjdG9yID0g
KAotICAgICIiIlJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+ICR7ZG9tYWluTmFt
ZX1CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisg
ICAgIiIiUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRj
aGVyLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKmJh
Y2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0K
IAogJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKQEAgLTIwNCwxMCArMjA0LDEwIEBA
ICR7b3V0UGFyYW1ldGVyQXNzaWdubWVudHN9CiAgICAgRnJvbnRlbmREaXNwYXRjaGVyRG9tYWlu
RGlzcGF0Y2hlckRlY2xhcmF0aW9uID0gKAogIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2Rv
bWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICAke2RvbWFpbk5hbWV9
RnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlcikgOiBtX2Zy
b250ZW5kUm91dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRl
bmREaXNwYXRjaGVyKEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcikgOiBtX2Zyb250ZW5k
Um91dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KICR7ZXZlbnREZWNsYXJhdGlvbnN9CiBwcml2YXRl
OgotICAgIEZyb250ZW5kUm91dGVyKiBtX2Zyb250ZW5kUm91dGVyOworICAgIEZyb250ZW5kUm91
dGVyJiBtX2Zyb250ZW5kUm91dGVyOwogfTsiIiIpCiAKICAgICBQcm90b2NvbE9iamVjdEJ1aWxk
ZXJEZWNsYXJhdGlvblByZWx1ZGUgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5CmluZGV4IGRlNDRmOWExYjhiNWJmY2ExZjkwNjhjODRlYmJiOTU3ZDc0YTFiYzku
LjY2YWUwMzU1YTVmYjZmYmE1MjIzMTAxMmJhNGRlNTE2OGEzZmJmNmYgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVu
ZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMTksNiArMTE5LDYgQEAgY2xhc3Mg
Q3BwRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOycpCiAKICAgICAg
ICAgbGluZXMuYXBwZW5kKCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5k
Um91dGVyLT5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2Fn
ZS0+dG9KU09OU3RyaW5nKCkpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAg
IHJldHVybiAiXG4iLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggYTI4YTllZjEwNTFmMzg5OTlkNmI1MzAyZDJlMjNi
MDBlNzI4ZmVlYS4uMTQ4NDUyNzZiMzQwMTAyOGU1Y2IyYTRjMGNjZDJiMTNmNTgxMGM3MiAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAt
MTM4LDcgKzEzOCw3IEBAICR7aW52b2NhdGlvbn0KICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlM
aXRlcmFsKCIke2RvbWFpbk5hbWV9IiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIiR7ZG9tYWluTmFt
ZX0iKSwgKl9jb250cm9sbGVyLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZGNlMmEzMTkwNTQxZmNhNDhlYmNkOTgzNjFhMTllODk2
MDdjYjlhNy4uODhiMzI4Yzg3MWJlYjM0MjgyOTRhNmNiNzFhYjA5ODVhMjAwYjk0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBt
b2RlKQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC0+c2NyaXB0KCktPnZtKCksIHRy
dWUpCitXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29y
a2VyR2xvYmFsU2NvcGUmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6IFNjcmlw
dERlYnVnU2VydmVyKGNvbnRleHQuc2NyaXB0KCktPnZtKCksIHRydWUpCiAgICAgLCBtX3dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQpCiAgICAgLCBtX2RlYnVnZ2VyVGFza01vZGUobW9kZSkKIHsK
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVu
ZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxp
c3RlbmVyKTsKIAogICAgIGlmICh3YXNFbXB0eSkgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNj
b3BlLT5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIodGhpcyk7CisgICAgICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOwogICAgICAgICByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucygpOwogICAgIH0KIH0KQEAgLTczLDggKzczLDggQEAgdm9pZCBXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciog
bGlzdGVuZXIsIGJvb2wKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogCiAgICAg
aWYgKG1fbGlzdGVuZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxT
Y29wZS0+c2NyaXB0KCkpCi0gICAgICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT5zY3JpcHQo
KS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3Bl
LnNjcmlwdCgpKQorICAgICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0
YWNoRGVidWdnZXIodGhpcyk7CiAgICAgICAgIGlmICghc2tpcFJlY29tcGlsZSkKICAgICAgICAg
ICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgfQpAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAK
ICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJl
c3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1bkxvb3AoKS5ydW5Jbk1vZGUo
bV93b3JrZXJHbG9iYWxTY29wZSwgbV9kZWJ1Z2dlclRhc2tNb2RlKTsKKyAgICAgICAgcmVzdWx0
ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5Nb2RlKCZtX3dv
cmtlckdsb2JhbFNjb3BlLCBtX2RlYnVnZ2VyVGFza01vZGUpOwogICAgIC8vIEtlZXAgd2FpdGlu
ZyB1bnRpbCBleGVjdXRpb24gaXMgcmVzdW1lZC4KICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVz
c2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oCmluZGV4IDc4ODFmNjFiMDk0NDIwODY4ODczZjE0NDcyYzRlNjQ0YWRjMGY2Njcu
LjgwZWQ5ZDM4NWFjMDIxYWI0NzAyMjNjNmQ0NTc4NmU5YTY2ZWFhNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFdvcmtlclNjcmlw
dERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclNjcmlwdERlYnVnU2VydmVyKTsKIHB1
YmxpYzoKLSAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSosIGNv
bnN0IFN0cmluZyYpOworICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2JhbFNj
b3BlJiwgY29uc3QgU3RyaW5nJik7CiAgICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsK
QEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2Ny
aXB0KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFeGNl
cHRpb24qKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtl
ckdsb2JhbFNjb3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3Bl
OwogICAgIExpc3RlbmVyU2V0IG1fbGlzdGVuZXJzOwogICAgIFN0cmluZyBtX2RlYnVnZ2VyVGFz
a01vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhODQxYzMyMmM5NjRhMWE5MWRj
Y2YyNjNlZTNmNmNjNWFmYTY2ZmRiLi44MDk4OTEyZjgyY2ZiNWM0ZWI0MmIwYjY1ZGQ1M2RhYjQ3
YTczMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQzLDIzICs0NCwyMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50KQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25D
YWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250
ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgY29udGV4dCkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlv
bkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAs
IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciog
ZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25D
YWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxw
dHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOwog
fQogCkBAIC05NSw3ICs5Myw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyCiB7CiAgICAgcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBw
bGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAotICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMjQ4
ZDNmODQxYmQ3ZjJjMGMxZDA5MWFlOTE1OTYzZWVmYTVhZTkxNi4uNjU5ZmY0NzMyMzQyZTA5MDRj
NDFkODExY2FmOTY3NTI2MDRhYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNDEsNyArNDEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9y
UGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCkBAIC01MCw3ICs0OSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6QXBwbGljYXRpb25D
YWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MjA3NzFj
MTk2NmU2MGNjNjIzZjVhNjk1MGE5MGRhOTFlNTA4NGQwLi45MGRiZWQyYjY3ODFjYjAwZjBkMWRl
NDdkOTlmY2JmZWU2ODFkMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTM0MSw4ICszNDEsMTAgQEAgQ1NTU3R5bGVSdWxlKiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKICAgICByZXR1cm4g
ZG93bmNhc3Q8Q1NTU3R5bGVSdWxlPigmcnVsZSk7CiB9CiAKLUluc3BlY3RvckNTU0FnZW50OjpJ
bnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckNTU0Fn
ZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkNTUyIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9kb21BZ2VudChkb21BZ2Vu
dCkKIHsKICAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlzKTsKQEAgLTM1NCwxNyAr
MzU2LDEyIEBAIEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJl
c2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQ1NTQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICByZXNldE5vblBlcnNpc3Rl
bnREYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggMDBiMDM3OTc2ZmIwNGYxMGRmNTc0NDJiY2YxNmNkMzZlNGFlOTVhNC4uY2Uw
NTcwNzZkYWZlOTY3ZDJiMTM1Y2FkNzhmMGNmMTM3NDEwM2MxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTUxLDcgKzUxLDYgQEAgY2xhc3Mg
Q1NTU3R5bGVTaGVldDsKIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CkBAIC04Miw3ICs4
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEluc3BlY3RvckRPTUFnZW50Kik7CisgICAgSW5zcGVjdG9yQ1NTQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JDU1NBZ2VudCgpOwogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1
bGUoQ1NTUnVsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGRhNzk0YjU0Zjg3ZDYzYWQ0OTI1YTk4NTgxY2Q5ODkzZDMyYmIz
MWYuLmNmOGNiMDI4YjVlODVhMDVlMjZhYjQ2ZDVlMTliMGEwNzlmZGYxZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTk1LDY3
ICs5NSw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2Um
IHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogewogICAgIEFTU0VSVF9BUkcoaW5z
cGVjdG9yQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOwogCi0gICAgYXV0byBpbnNwZWN0b3JBZ2Vu
dFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCp0aGlzKTsKKyAgICBBZ2Vu
dENvbnRleHQgYmFzZUNvbnRleHQgPSB7CisgICAgICAgICp0aGlzLAorICAgICAgICAqbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsCisgICAgICAgIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksCisgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAgICB9OworCisgICAgV2ViQWdlbnRDb250
ZXh0IHdlYkNvbnRleHQgPSB7CisgICAgICAgIGJhc2VDb250ZXh0LAorICAgICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCkKKyAgICB9OworCisgICAgUGFnZUFnZW50Q29udGV4dCBwYWdl
Q29udGV4dCA9IHsKKyAgICAgICAgd2ViQ29udGV4dCwKKyAgICAgICAgbV9wYWdlCisgICAgfTsK
KworICAgIGF1dG8gaW5zcGVjdG9yQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdl
bnQobV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShpbnNw
ZWN0b3JBZ2VudFB0cikpOwogCi0gICAgYXV0byBwYWdlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvclBhZ2VBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmcGFn
ZSwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gcGFnZUFnZW50
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBp
bnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9wYWdlQWdlbnQgPSBwYWdl
QWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShwYWdlQWdlbnRQ
dHIpKTsKIAotICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
UnVudGltZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsICZwYWdlLCBwYWdlQWdlbnQp
OworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGlt
ZUFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KTsKICAgICBQYWdlUnVudGltZUFnZW50KiBy
dW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KHJ1bnRpbWVBZ2VudCk7CiAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURjo6bW92ZShydW50aW1lQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gZG9tQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX292ZXJs
YXkuZ2V0KCkpOworICAgIGF1dG8gZG9tQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkpOwog
ICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGOjptb3ZlKGRvbUFnZW50UHRyKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBt
X2RvbUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50KSk7CiAKLSAgICBhdXRvIGRhdGFi
YXNlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CisgICAgYXV0byBkYXRhYmFzZUFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCk7CiAg
ICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudCA9IGRhdGFiYXNlQWdlbnRQ
dHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkYXRhYmFzZUFnZW50UHRy
KSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4obV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpLCAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2VBZ2VudCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50
PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfUkVQ
TEFZKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlcGxh
eUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlcGxheUFnZW50PihwYWdl
Q29udGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIGRvbVN0b3JhZ2VBZ2VudFB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fcGFnZUFnZW50KTsKKyAgICBhdXRvIGRvbVN0b3JhZ2VBZ2VudFB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9w
YWdlQWdlbnQpOwogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50
ID0gZG9tU3RvcmFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1v
dmUoZG9tU3RvcmFnZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHRpbWVsaW5lQWdlbnRQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgcGFnZUFnZW50LCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVj
dG9yLCBpbnNwZWN0b3JDbGllbnQpOworICAgIGF1dG8gdGltZWxpbmVBZ2VudFB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2Vu
dCwgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6UGFnZUluc3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50
KTsKICAgICBtX3RpbWVsaW5lQWdlbnQgPSB0aW1lbGluZUFnZW50UHRyLmdldCgpOwogICAgIG1f
YWdlbnRzLmFwcGVuZChXVEY6Om1vdmUodGltZWxpbmVBZ2VudFB0cikpOwogCi0gICAgYXV0byBy
ZXNvdXJjZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXNvdXJjZUFnZW50
PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgaW5zcGVjdG9yQ2xpZW50
KTsKKyAgICBhdXRvIHJlc291cmNlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
clJlc291cmNlQWdlbnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQsIGluc3BlY3RvckNsaWVudCk7
CiAgICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gY29u
c29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PigqbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQpOworICAgIGF1dG8gY29uc29sZUFnZW50UHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCwgbV9kb21B
Z2VudCk7CiAgICAgV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnRQ
dHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQo
Y29uc29sZUFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNv
bnNvbGVBZ2VudFB0cikpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9vdmVybGF5LmdldCgpKTsKKyAg
ICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFn
ZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgIG1fZGVi
dWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURjo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGRvbURlYnVnZ2VyQWdl
bnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50KTsKKyAg
ICBhdXRvIGRvbURlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50LCBtX2RlYnVnZ2VyQWdlbnQp
OwogICAgIG1fZG9tRGVidWdnZXJBZ2VudCA9IGRvbURlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkb21EZWJ1Z2dlckFnZW50UHRyKSk7CiAKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNv
bnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JM
YXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAogICAgIEFTU0VSVChtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpOwogICAgIGlmIChDb21tYW5kTGluZUFQ
SUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21t
YW5kTGluZUFQSUhvc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggMTdmOTcxODhmY2E1MGVjYjBjMTI1MzU4YWExMTk0MWMxMGUy
OWRiOC4uNThiMmMzYjg3Y2NlY2VkYzNiYmFkNzQ1ZTc5NGM2MGFiZDNlMmZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02NCw2ICs2
NCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhp
c3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOb2RlRmluZGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0yMDEs
OSArMjAyLDExIEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25z
dCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gIiI7CiB9CiAKLUluc3BlY3RvckRPTUFn
ZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0g
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVy
bGF5KiBvdmVybGF5KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9N
IiksIGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVj
dGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKIHsKQEAg
LTIxNSwxNiArMjE4LDEzIEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQo
KQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Ci0KICAgICBtX2hpc3RvcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAgICAgbV9kb21FZGl0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKTsKIAogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKLSAgICBtX2RvY3VtZW50
ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgIG1fZG9jdW1lbnQg
PSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKIAogICAgIGlmIChtX25vZGVU
b0ZvY3VzKQogICAgICAgICBmb2N1c05vZGUoKTsKQEAgLTIzMiw5ICsyMzIsNiBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZFJvdXRlciogZgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotCiAgICAgbV9oaXN0b3J5LnJlc2V0KCk7CiAgICAgbV9kb21FZGl0b3IucmVzZXQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCA4ZTliMTA2MjA4ZjFjNTVlODA2ZjMwMDI3NzIzM2E3OWM1YmFiY2Q2Li45ZjZhZWIxODdkZDkz
MTM4Y2Y4ZGU2NDI4NzNlYjI0NTFjNGY1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2RlZmluZSBJbnNwZWN0
b3JET01BZ2VudF9oCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC02Nyw3ICs2Niw2IEBA
IGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFz
cyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSFRNTEVsZW1lbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmV2YWxpZGF0
ZVN0eWxlQXR0cmlidXRlVGFzazsKQEAgLTEwNCw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAgfTsKIAot
ICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdl
QWdlbnQqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3BlY3Rvck92ZXJs
YXkqKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9N
QWdlbnQoKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRp
b25Db2RlJik7CkBAIC0yNDcsOSArMjQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5uZXJI
aWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+LCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKKyAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBt
X2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKIAogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1f
b3ZlcmxheSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmODNlZDdhMTBlMWZiM2E3ZTg2
M2EyNTNjNzc2ZGY0ZTBjMDk4ZDRhLi5iMjdiMWVlYzI3YzE3MTZiZjAzMDRiM2UwM2I4YWU0YWI4
ZDJkNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVND
SUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxp
dGVyYWwoIkRPTURlYnVnZ2VyIiksIGNvbnRleHQpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAg
ICAsIG1fZGVidWdnZXJBZ2VudChkZWJ1Z2dlckFnZW50KQogewpAQCAtMTAxLDE1ICsxMDIsMTIg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBjbGVhcigp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBk
aXNhYmxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGJmNDMxOTEzODBjMTUzZWU0ODVhZDJkNjg0MWE4
MmEwMWMwOWZjNjguLjU2YmY2NTAwNTc0ZTcxNzg1MzM4MDE1MDYxZTkzOTYwOWE3OGU4MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaApAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKQEAgLTU2LDcg
KzU1LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWMKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0Jiwg
SW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCk7CiAKICAgICAvLyBET01E
ZWJ1Z2dlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggYjJkZTkyYmMwYTU3NDU4YTZhNDNlYjI1MDZiNzQ5
ZjMzMDE0NjRlYS4uN2QzNmIxYzg1ODQxZTdkMTRlNmJhYzQ4ODJiNDM1MDgwOTdiMGZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKQEAgLTU0LDggKzU0LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCitJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChXZWJBZ2VudENv
bnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBjb250ZXh0KQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0
b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdl
QWdlbnQocGFnZUFnZW50KQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQodGhpcyk7CkBAIC02NiwxNyArNjgsMTIgQEAgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24p
CiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2Fi
bGUodW51c2VkKTsKIH0KQEAgLTE5OSw4ICsxOTYsOCBAQCBSZWZQdHI8U3RvcmFnZUFyZWE+IElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiBlcnJv
cgogICAgIH0KIAogICAgIGlmICghaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBtX3Bh
Z2VBZ2VudC0+cGFnZSgpLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgcmV0dXJuIG1fcGFnZUFnZW50
LT5wYWdlKCktPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRh
cmdldEZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcGFnZUFnZW50LT5wYWdl
KCkuc2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1
bWVudCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDU5YzY4MDg3
YTliOTM4NjYxY2JiNTYxN2E4ZDg5OGVkMzEwMTcwOGQuLjY2MjlhZTdmY2JhYjA3ZmU5OTQ5NWJh
M2MwMDgyZTJkMTQyOTQ5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTdG9yYWdlOwpAQCAtNTUsNyArNTQsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9y
UGFnZUFnZW50Kik7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KFdlYkFnZW50Q29udGV4
dCYsIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGIzYjI3OWY5ZDUwYmI4NjM2YjE4MzQyNDExNzU1ZDBj
YmEyODIyODUuLjg2MTEzZWJjNGFiMGRmNzFmMmFmMmQzOGZlZGZkZWYzYmNkMzZlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAKQEAgLTIxMiw4ICsyMTIsMTAgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVh
clJlc291cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAotSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJh
bCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckRhdGFiYXNlQWdl
bnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgY29udGV4dCkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwogfQpAQCAt
MjIzLDE3ICsyMjUsMTIgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFi
YXNlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVu
ZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggMGYxZjkyNzlkZmJiZWEyYTA4ZjY0
ODAxMjJhYTYyNWIzZWRkN2FiOS4uNmM5ZDIyNzUxYmJhOGIwMjA3M2I1YTI5OGIzYzY3N2I3Nzky
MWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oCkBAIC00NCwxNCArNDQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEYXRhYmFzZTsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7Ci1jbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3Mg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGEwODY5NzlhMzhjZmY2MzdhMmEx
NTAwMDEyZTk5ZjNlMDg5NTIwNjIuLjVjYjlhZGE5YWQ0YTk3MzAwMDJmYTU3ZWU4Y2UxZjgxNDZm
NjEzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtNTY2LDkgKzU2NiwxMCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFt
ZXNwYWNlCiAKLUluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIi
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5k
ZXhlZERCIiksIGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0
LmluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQpAQCAt
NTc3LDE1ICs1NzgsMTIgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0K
ICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRl
eCA4NGE5OGZkYzQ4YmQwMDkxM2YzNTMwOTE4ZjI0ODAzNzRkN2NmY2U1Li5iNDQ3ODEwY2M5OTkx
YWM0YWFkNTQ0NWU2MDg1MDU5YmZmOTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IGZp
bmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnNwZWN0b3JQYWdlQWdl
bnQqKTsKKyAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwpAQCAtNjYsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2Jq
ZWN0U3RvcmUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBj
b25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9y
ZU5hbWUsIFJlZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbmRleGVk
REJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBh
OGM1YmFkOGIzYTQxZGFlZTFmMjIyMjRhNGEyOWM3OTA0NTI0NGE0Li5kYmQyNDdmYmExMDMzNTc5
MmMxNWQ3ZGZlZGViYTMzYmZmYTA5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGRJbXBsKEluc3RydW1lbnRpbmdBZ2VuCiAgICAgaWYgKHBhZ2VBZ2VudCkKICAgICAgICAgcGFn
ZUFnZW50LT5kaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoJmZyYW1lLCB3b3JsZCk7CiAgICAg
aWYgKFBhZ2VEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5wYWdlRGVidWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgIGlmIChwYWdlQWdlbnQgJiYgJndvcmxk
ID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSAmJiAmZnJhbWUgPT0gcGFnZUFnZW50LT5tYWlu
RnJhbWUoKSkKKyAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQgPT0gJm1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpICYmICZmcmFtZSA9PSAmcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAgICAg
ICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAg
ICAgfQogICAgIGlmIChQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5wYWdlUnVudGltZUFnZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDdmYmRmYTQ2
YmYwYjRjZjQyODY4NWIxOWI1NzMxMWI0OTRiYjZhMzIuLjY0MTVhZmQ5YTcxOTQ5MWY1NDY1ODQ5
MDdkMzExYjIyYWZhYWNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDYsOCArNDYsMTAgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkK
KyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBjb250
ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0K
IApAQCAtNTYsMTcgKzU4LDEyIEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkxheWVyVHJl
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQog
CiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAg
ICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXgg
ZmEyNDAxNTg0N2JmMTRjZGU3YTEwMTI2ZWM5NDhmOWFjMmY3NDc2NS4uMTBkZWRmMjE5NWU1ZmRj
ODFiZmVlMmI1ZmE5MGQ4ZjNlZjQzMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTQwLDE0ICs0MCwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci0KIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVy
VHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyYpOworICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KFdl
YkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CmluZGV4IGVjNTJmNDc3Nzg0MWIxNGE1Y2QwYTA1ZDQ1NjE3MDMyNzdkZTdlYjEuLjM0MzcxNWI4
MjZkMDMwNzJiYzEwN2U3ZTA5ZjUwNGU4NTM4MjgxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMjYsMjUgKzMyNiwyMiBAQCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50
OjpjYWNoZWRSZXNvdXJjZVR5cGVKcwogICAgIHJldHVybiByZXNvdXJjZVR5cGVKc29uKGNhY2hl
ZFJlc291cmNlVHlwZShjYWNoZWRSZXNvdXJjZSkpOwogfQogCi1JbnNwZWN0b3JQYWdlQWdlbnQ6
Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3Zlcmxh
eSogb3ZlcmxheSkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlBhZ2Ui
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fcGFnZShwYWdlKQorSW5zcGVjdG9yUGFn
ZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGNvbnRleHQpCisgICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkp
CiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
Ci0KICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCkBAIC0zNjYsOCArMzYzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgc3RvcHdhdGNoLT5yZXNldCgpOwogICAg
IHN0b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUo
KSkKLSAgICAgICAgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkID0gIWZyYW1lLT5z
ZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOworICAgIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRp
b25EaXNhYmxlZCA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC00
MDksMTMgKzQwNSwxMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0CiB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJ
Z25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQp
CiB7CiAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDog
IiI7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25v
cmVDYWNoZSA/ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOworICAgIG1fcGFnZS5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNoZSA/ICpvcHRpb25hbEln
bm9yZUNhY2hlIDogZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdh
dGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
RnJhbWUmIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UubWFpbkZyYW1lKCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0
KGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOwogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVSZXF1ZXN0KGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291
cmNlUmVxdWVzdCwgIl9zZWxmIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8s
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMOjpSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTUwMyw3ICs0OTksNyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcgogICAgIC8vIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdHJ1ZS9m
YWxzZSB2YWx1ZS4KICAgICBib29sIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGZhbHNlOwogCi0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgICAg
IGZvciAoYXV0byYgdXJsIDogYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKSkgewpAQCAt
NTM1LDEzICs1MzEsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUo
ZnJhbWUtPmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmplY3QpCiB7Ci0g
ICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoJm1fcGFnZS0+bWFpbkZyYW1lKCkp
OworICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKCZtX3BhZ2UubWFpbkZyYW1l
KCkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQpAQCAtNjE3LDcg
KzYxMyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNl
OwogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNo
VXRpbGl0aWVzOjpjcmVhdGVTZWFyY2hSZWdleCh0ZXh0LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4
KTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnQ7CiAKICAgICAgICAg
Zm9yIChhdXRvKiBjYWNoZWRSZXNvdXJjZSA6IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1l
KSkgewpAQCAtNjY1LDExICs2NjEsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQYWdlQgogewogICAg
IGJvb2wgZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKICAgICBib29sIGRpc2Fi
bGVkSW5TZXR0aW5ncyA9IGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwot
ICAgIGlmIChmcmFtZSkgewotICAgICAgICBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9ICFm
cmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
OwotICAgICAgICBkaXNhYmxlZEluU2V0dGluZ3MgPSAhZnJhbWUtPnNldHRpbmdzKCkuaXNTY3Jp
cHRFbmFibGVkKCk7Ci0gICAgfQorICAgIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gbWFp
bkZyYW1lKCkuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpOworICAgIGRpc2FibGVkSW5TZXR0aW5ncyA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlz
U2NyaXB0RW5hYmxlZCgpOwogCiAgICAgaWYgKCFkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlcikg
ewogICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpSZXN1bHQ6OkFsbG93ZWQ7CkBAIC02ODQsMTEgKzY3Nyw4IEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0
b3I6OlBhZ2VCCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3JpcHRFeGVjdXRpb25E
aXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCiB7Ci0gICAgaWYgKCFtYWluRnJhbWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNh
dGlvbiA9IHRydWU7Ci0gICAgbWFpbkZyYW1lKCktPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxl
ZCghdmFsdWUpOworICAgIG1haW5GcmFtZSgpLnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCgh
dmFsdWUpOwogICAgIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb24gPSBmYWxzZTsK
IH0KIApAQCAtNzQyLDEwICs3MzIsOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVE
ZXRhY2hlZChGcmFtZSYgZnJhbWUpCiAgICAgfQogfQogCi1GcmFtZSogSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluRnJhbWUoKQorTWFpbkZyYW1lJiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5GcmFt
ZSgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIEZyYW1lJgotICAgIHJl
dHVybiAmbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgp
OwogfQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCkKQEAgLTc4NSw3ICs3NzQsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50
Ojpsb2FkZXJJZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiBGcmFtZSogSW5zcGVjdG9yUGFn
ZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgICAgIGlmIChkb2N1bWVudE9yaWdpbi0+dG9SYXdTdHJpbmcoKSA9PSBvcmlnaW5SYXdT
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CkBAIC05MDgsNiArODk3LDggQEAgdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogCiBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6
YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CisgICAgQVNTRVJUX0FSRyhmcmFt
ZSwgZnJhbWUpOworCiAgICAgYXV0byBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoZnJhbWVJZChmcmFtZSkpCiAg
ICAgICAgIC5zZXRMb2FkZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSkpCkBAIC05MjksNiArOTIwLDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnIKIAogUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsKKyAgICBB
U1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CisKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CiAg
ICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3Jl
YXRlKCkKQEAgLTk2Niw4ICs5NTksNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplYwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVG91Y2hF
dmVudEVtdWxhdGlvbkluUGFnZShib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1haW5GcmFtZSgp
KQotICAgICAgICBtYWluRnJhbWUoKS0+c2V0dGluZ3MoKS5zZXRUb3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZChlbmFibGVkKTsKKyAgICBtYWluRnJhbWUoKS5zZXR0aW5ncygpLnNldFRvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkKGVuYWJsZWQpOwogfQogI2VuZGlmCiAKQEAgLTk4OCw3ICs5ODAs
NyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZW11bGF0
ZWRNZWRpYSA9IG1lZGlhOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgICAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CkBAIC0xMDAzLDE5ICs5OTUsMTggQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYShTdHJpbmcmIG1lZGlhKQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0
cmluZyYsIGJvb2wqIG91dFBhcmFtKQogewotICAgICpvdXRQYXJhbSA9IG1fcGFnZS0+c2V0dGlu
Z3MoKS5zaG93RGVidWdCb3JkZXJzKCkgfHwgbV9wYWdlLT5zZXR0aW5ncygpLnNob3dSZXBhaW50
Q291bnRlcigpOworICAgICpvdXRQYXJhbSA9IG1fcGFnZS5zZXR0aW5ncygpLnNob3dEZWJ1Z0Jv
cmRlcnMoKSB8fCBtX3BhZ2Uuc2V0dGluZ3MoKS5zaG93UmVwYWludENvdW50ZXIoKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJy
b3JTdHJpbmcmLCBib29sIHZpc2libGUpCiB7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNo
b3dEZWJ1Z0JvcmRlcnModmlzaWJsZSk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNob3dS
ZXBhaW50Q291bnRlcih2aXNpYmxlKTsKKyAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXRTaG93RGVi
dWdCb3JkZXJzKHZpc2libGUpOworICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldFNob3dSZXBhaW50
Q291bnRlcih2aXNpYmxlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFN0cmluZyogb3V0RGF0
YVVSTCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBBU1NFUlQoZnJh
bWUpOworICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwogCiAgICAgSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCk7CiAgICAgQVNTRVJUKGRvbUFnZW50KTsKQEAgLTEwMjMsNyArMTAxNCw3IEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBTdHJpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gV2ViQ29yZTo6c25hcHNob3RO
b2RlKCpmcmFtZSwgKm5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdE5vZGUoZnJhbWUsICpub2RlKTsKICAgICBpZiAoIXNu
YXBzaG90KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qg
Y2FwdHVyZSBzbmFwc2hvdCIpOwogICAgICAgICByZXR1cm47CkBAIC0xMDM0LDE1ICsxMDI1LDE0
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
bmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtLCBTdHJpbmcq
IG91dERhdGFVUkwpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgQVNT
RVJUKGZyYW1lKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKIAogICAgIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZTsKICAgICBpZiAoY29vcmRp
bmF0ZVN5c3RlbSA9PSAiVmlld3BvcnQiKQogICAgICAgICBvcHRpb25zIHw9IFNuYXBzaG90T3B0
aW9uc0luVmlld0Nvb3JkaW5hdGVzOwogCiAgICAgSW50UmVjdCByZWN0YW5nbGUoeCwgeSwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9
IHNuYXBzaG90RnJhbWVSZWN0KCpmcmFtZSwgcmVjdGFuZ2xlLCBvcHRpb25zKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RGcmFtZVJlY3QoZnJh
bWUsIHJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoIXNuYXBzaG90KSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCIp
OwpAQCAtMTA2MCwxNCArMTA1MCw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpoYW5kbGVK
YXZhU2NyaXB0RGlhbG9nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBhCiAKIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3Ry
aW5nKiBkYXRhKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIGlmICgh
ZnJhbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIG1haW4gZnJh
bWUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkg
JiYgVVNFKENGKQotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGZyYW1lKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUo
KTsKKyAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZSgmZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2ZSBmb3IgbWFp
biBmcmFtZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZTlhZDg2NmJhZWMwNDEyNTI2YTBhZGM2YWI1MGIz
NmI1YWZmNWRhMy4uMDVlZWZhZjJlMzEwMjZmNWU5MTk4OWZjNGViZTYzMWIzZTgwNWNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNTYs
NyArNTYsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9y
Q2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CitjbGFzcyBNYWluRnJhbWU7CiBjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVu
ZGVyT2JqZWN0OwpAQCAtNjksNyArNjksNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYQogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMmLCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yT3ZlcmxheSop
OworICAgIEluc3BlY3RvclBhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yQ2xp
ZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOwogCiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewogICAg
ICAgICBEb2N1bWVudFJlc291cmNlLApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKLSAgICBQ
YWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgRnJhbWUqIG1haW5GcmFtZSgpOwor
ICAgIFBhZ2UmIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KKyAgICBNYWluRnJhbWUmIG1haW5G
cmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1l
Rm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
ZnJhbWVJZChGcmFtZSopOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogCi0gICAgUGFnZSogbV9wYWdlIHsgbnVsbHB0ciB9OworICAg
IFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXgg
MzQ5MGU3NWMyMjBlYzc3YmQxNmNkZTZhOWYyZTE5ODdmNTY1ODg2ZC4uOGJkYTA5ZGYwYmQ2ZTRk
YjliYjk1NzZlZDNiNjlmMTRmYTQ5MTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCkBAIC0xNTYsOSArMTU2LDExIEBAIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3JTCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLUluc3BlY3RvclJl
cGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlJlcGxheSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQotICAgICwgbV9wYWdlKCpwYWdlQWdlbnQtPnBhZ2UoKSkKK0luc3BlY3RvclJlcGxheUFn
ZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUmVwbGF5IiksIGNvbnRleHQpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UmVw
bGF5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV9wYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KIApAQCAtMTczLDExICsxNzUsOCBAQCBXZWJDb3JlOjpT
ZXNzaW9uU3RhdGUgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lvblN0YXRlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlcGxheUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3I6OlJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwotCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlcGxheUFnZW50
KHRoaXMpOwogICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBXZWJDb3JlOjpTZXNzaW9uU3Rh
dGU6OkluYWN0aXZlKTsKIApAQCAtMTkyLDkgKzE5MSw2IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyCiAKIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0K
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQobnVsbHB0
cik7CiAKICAgICAvLyBEcm9wIHJlZmVyZW5jZXMgdG8gYWxsIHNlc3Npb25zIGFuZCBzZWdtZW50
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgK
aW5kZXggZjdiZWE2ZmRhNTViNjBkODhlMDNlOTM3NTAxZmJkNjMyYWM4ZWY4Yi4uODMzZWVjZTAx
MWM1ZjkyMTAyNDg4MDcxODBkYWY4Nzg4NWZkOGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVj
dG9yUGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBj
bGFzcyBSZXBsYXlTZXNzaW9uOwogY2xhc3MgUmVwbGF5U2Vzc2lvblNlZ21lbnQ7CkBAIC02Miw3
ICs2MSw3IEBAIGNsYXNzIEluc3BlY3RvclJlcGxheUFnZW50IGZpbmFsCiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUmVwbGF5
QWdlbnQpOwogcHVibGljOgotICAgIEluc3BlY3RvclJlcGxheUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JSZXBsYXlBZ2VudChQ
YWdlQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5QWdlbnQoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcAppbmRleCBlMjU1MWEyY2JhMzZjNDk5NTM0YTFhNjAzMmVlYzBiMTJkZjcwNDEzLi5j
Yzg1ZmQyNjNhMTkzZGFjOTkzNmEzYTRlMDYyNTE2ZjU4ODgzZWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xNjIs
MjUgKzE2MiwyMiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi1JbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
Ik5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvclJlc291cmNlQWdlbnQ6
Okluc3BlY3RvclJlc291cmNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGNvbnRleHQpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29y
a0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEo
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcios
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKLQogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApp
bmRleCBmMDgyNGUyOGEyZmNmMzFiODIzNTcxNDdmYTc0MDE2MzRlOGY0NGM5Li5kMjVhN2MwMjg0
MjExYzE2NzZlMDlmZTFhNTUwMGY4MjA4ZGYxMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTU1LDcgKzU1LDYgQEAgY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50Owog
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CkBAIC03Niw3ICs3NSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3Mg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvclJlc291cmNl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3Rv
ckNsaWVudCopOworICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jiwg
SW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGIwOWMxMTU5YjY0MTA4OTI3MTJh
ZWMzZGU2ZWM2MzcxYjE5MTlhMWQuLjc2YzFmOGM4ODZiYTEyN2MyNmVlMzczNWVhYmRhNGU0YmI0
ODRiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTkwLDExICs5MCw4IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJv
dXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6VGltZWxpbmVCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLQogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0
aGlzKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVyKQpAQCAtMTAzLDkgKzEwMCw2IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
IHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7CiAKICAgICBpZiAo
cmVhc29uICE9IEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVz
dHJveWVkKSB7CkBAIC03MzAsOCArNzI0LDEwIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogICAg
IH0KIH0KIAotSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVu
dCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCitJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQsIEluc3BlY3RvclR5cGUgdHlwZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCisg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIpLCBjb250ZXh0
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2luc3Bl
Y3RvclR5cGUodHlwZSkKQEAgLTc4NCw5ICs3ODAsNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dAogICAgIHF1YWQtPnNldFA0KGZyYW1lVmlldy5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZElu
dFBvaW50KGFic29sdXRlLnA0KCkpKSk7CiB9CiAKLVBhZ2UqIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnBhZ2UoKQotewotICAgIHJldHVybiBtX3BhZ2VBZ2VudCA/IG1fcGFnZUFnZW50LT5wYWdl
KCkgOiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA1YTkwYjM3
MGJmM2U1MTNmYmRmYjVkM2QzMjAxYzQ3ZjUwYWI5MDMxLi4xY2JjZTU1ZjhlZDhjZDRkNDlhMDA5
ZGUyZTBmMDdlNTdjN2Y1OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRmxvYXRRdWFk
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIFVSTDsKIGNsYXNzIFBhZ2U7CkBAIC0xMTgsNyArMTE3LDcgQEAgY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCBmaW5hbAogcHVibGljOgogICAgIGVudW0gSW5zcGVjdG9yVHlwZSB7IFBh
Z2VJbnNwZWN0b3IsIFdvcmtlckluc3BlY3RvciB9OwogCi0gICAgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9y
VHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNwZWN0
b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBA
IC0yMzAsNyArMjI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsK
IAogICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExh
eW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKLSAgICBQYWdlKiBwYWdlKCk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAppbmRleCA0Y2UwYzdiYTQ3Njg2M2U0ZDYzYWY0MzI2
MTZiMmQ2NDliMTE2NDNmLi43NDM0MjkzNDAyOTJlNWJmMDM3N2EyYTlkYmMyN2UzYjAwYWQ3ZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFz
ZS5oCkBAIC0zMywxMiArMzMsNDUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKK2NsYXNzIFBhZ2U7CitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsK
KworLy8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNwZWN0b3IgbmFtZXNwYWNlIHdoZW4gcmVtYWlu
aW5nIGFnZW50cyBtb3ZlLgorc3RydWN0IFdlYkFnZW50Q29udGV4dCA6IHB1YmxpYyBJbnNwZWN0
b3I6OkFnZW50Q29udGV4dCB7CisgICAgV2ViQWdlbnRDb250ZXh0KEFnZW50Q29udGV4dCYgY29u
dGV4dCwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAg
OiBBZ2VudENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgeworICAgIH0KKworICAgIEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHM7Cit9OworCitzdHJ1Y3QgUGFnZUFnZW50Q29udGV4dCA6
IHB1YmxpYyBXZWJBZ2VudENvbnRleHQgeworICAgIFBhZ2VBZ2VudENvbnRleHQoV2ViQWdlbnRD
b250ZXh0JiBjb250ZXh0LCBQYWdlJiBpbnNwZWN0ZWRQYWdlKQorICAgICAgICA6IFdlYkFnZW50
Q29udGV4dChjb250ZXh0KQorICAgICAgICAsIGluc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkK
KyAgICB7CisgICAgfQorCisgICAgUGFnZSYgaW5zcGVjdGVkUGFnZTsKK307CisKK3N0cnVjdCBX
b3JrZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKKyAgICBXb3JrZXJB
Z2VudENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCisgICAgICAgIDogV2ViQWdlbnRDb250ZXh0KGNvbnRleHQpCisg
ICAgICAgICwgd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCisgICAgeworICAg
IH0KKworICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZTsKK307CiAKIGNs
YXNzIEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICBJbnNw
ZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJBZ2VudENvbnRleHQmIGNvbnRl
eHQpCiAgICAgICAgIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UobmFtZSkKLSAgICAg
ICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAg
LCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
IHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwCmluZGV4IGUwOGI3YTdjODVmNDY1MTlkYTMyMGE0M2E2Y2JiNWNkNDg3NDQ1
OWQuLjQ0YTM0NWVjNTQ3NWJlMTYwODhkZGFmNGUwMGMzZmM3ZTRlNDQ5ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTAx
LDggKzEwMSwxMCBAQCBwcml2YXRlOgogCiBpbnQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6Oldvcmtl
ckZyb250ZW5kQ2hhbm5lbDo6c19uZXh0SWQgPSAxOwogCi1JbnNwZWN0b3JXb3JrZXJBZ2VudDo6
SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldvcmtl
ckFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVj
dG9yV29ya2VyQWdlbnQodGhpcyk7CiB9CkBAIC0xMTIsMTAgKzExNCw4IEBAIEluc3BlY3Rvcldv
cmtlckFnZW50Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6V29ya2VyQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKQEAgLTEyMyw5ICsxMjMsNiBAQCB2b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZQogICAgIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0ID0g
ZmFsc2U7CiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKLQot
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKaW5kZXggZmNiZWUwZDFhNDU0MDM5MGMwZmYwN2FiZDY2NTE4OTFiYWUyMmY4MC4u
ZDJmNWNlNzAwMmJmODg4NmI2NTEyMWFlNWRjZTdiYTgzNDI1MmYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTQzLDcgKzQzLDYg
QEAgY2xhc3MgV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJMOwogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eTsKIApAQCAtNTIsNyArNTEsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgZXhw
bGljaXQgSW5zcGVjdG9yV29ya2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRleCA2NzE5NzQ3MzEyMDgyYTcwYzY0YzZhMmUyODJk
NTM2ZmFlZmViMGU3Li5mMjRjNjQ4NzVlYjljOTc4MmQzNjRmMmQ3NmE4OGNjZGVhZTA1YWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC00
MSw4ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50KQotICAgIDogV2ViQ29uc29sZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1Bh
Z2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCisgICAgOiBXZWJDb25zb2xlQWdlbnQoY29u
dGV4dCkKICAgICAsIG1faW5zcGVjdG9yRE9NQWdlbnQoZG9tQWdlbnQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaAppbmRleCBiMTM1NDA0YWU0Zjdh
MjUzNTJhMDQ4YTFjNWQ1YTY3ZjQzNWI0ZjY5Li40Yzc1OGYwYzlkYzYzNTY5YmIyOTEwN2Q0OWMw
OTJmMjM1NmE0ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpZm5kZWYgUGFnZUNvbnNvbGVBZ2VudF9oCiAjZGVm
aW5lIFBhZ2VDb25zb2xlQWdlbnRfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgUGFnZUNvbnNvbGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDb25zb2xlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhZ2VDb25z
b2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsK
KyAgICBQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvckRPTUFnZW50
Kik7CiAgICAgdmlydHVhbCB+UGFnZUNvbnNvbGVBZ2VudCgpIHsgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWUz
YjE0NWMzNDY1MzkwNjNkNzI0MTRiZGNiOWRhMGYyNWZmOGJmNS4uMTg5MmFlMzc3ZGFiZTk3NzI5
MDhjNDJlN2Y5YTNiNDY4MGE4OGY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKQEAgLTUwLDExICs1MSwxMiBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VEZWJ1Z2dlckFnZW50OjpQ
YWdlRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAgOiBX
ZWJEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5zdHJ1bWVudGluZ0FnZW50
cykKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0
JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3Zlcmxh
eSogb3ZlcmxheSkKKyAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKKyAgICAsIG1fcGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAg
ICAgLCBtX292ZXJsYXkob3ZlcmxheSkKLSAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoKnBhZ2VB
Z2VudC0+cGFnZSgpKQorICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihtX3BhZ2UpCiB7CiB9CiAK
QEAgLTc2LDcgKzc4LDcgQEAgU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxG
b3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQsIChBU0NJSUxp
dGVyYWwoIlgtU291cmNlTWFwIikpKTsKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdlbnQtPmNhY2hl
ZFJlc291cmNlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywg
c2NyaXB0LnVybCkpOworICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VB
Z2VudC0+Y2FjaGVkUmVzb3VyY2UoJm1fcGFnZS5tYWluRnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0
cmluZywgc2NyaXB0LnVybCkpOwogICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAg
IFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVy
RmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZU1hcEhl
YWRlci5pc0VtcHR5KCkpCkBAIC0xMTgsMTMgKzEyMCwxMyBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFn
ZW50Ojp1bm11dGVDb25zb2xlKCkKIAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIG1fcGFnZUFnZW50LT5wYWdlKCktPmNvbnNvbGUoKS5hZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKGV4ZWMsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkpOwor
ICAgIG1fcGFnZUFnZW50LT5wYWdlKCkuY29uc29sZSgpLmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2so
ZXhlYywgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CiB9CiAK
IEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkK
IHsKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFt
ZSgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhl
Y1N0YXRlKCZtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOwogICAgICAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA3
NWFmMjhlNDlmNzllYjcwOGMwNDQzNzZjODlmZTdiYjNjOGJmZWI1Li5iYWVlMmJhYTkzMzQxOGVm
ZmNmMTBkZjU5NmJjNGE4MTZmNjI1NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1j
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjsKIApAQCAtNDcsNyArNDYsNyBAQCBjbGFzcyBQYWdlRGVidWdnZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9y
T3ZlcmxheSopOworICAgIFBhZ2VEZWJ1Z2dlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+UGFnZURl
YnVnZ2VyQWdlbnQoKSB7IH0KIAogICAgIHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmpl
Y3QoKTsKQEAgLTcxLDggKzcwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3Qg
aW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRP
dmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92ZXJyaWRlOwogCi0g
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBQYWdl
JiBtX3BhZ2U7CiAKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIElu
c3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKICAgICBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOWFlZDcxMDBkMzA5MWJlNTYzMmMzODVh
MDlkY2U4NmQ5MDEyODY1Yy4uOTJhMDdjN2M5ZWMzYTJkMTk4Y2EwMTcyNTE2OWU3MGNhZDI2ZWVj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApA
QCAtNTMsMjQgKzUzLDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbmplY3Rl
ZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFnZSwgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQorUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkK
KyAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQotICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5p
bnNwZWN0ZWRQYWdlKQogewogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRl
ciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGlt
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29u
KQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIFN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1
bnVzZWQpOwogCkBAIC0xMjAsNyArMTE3LDcgQEAgSlNDOjpWTSYgUGFnZVJ1bnRpbWVBZ2VudDo6
Z2xvYmFsVk0oKQogSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3Rl
ZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
ID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwogICAg
ICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1
ZSgpKQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVy
cm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iKTsKQEAgLTE0Niw3
ICsxNDMsNyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogdm9pZCBQ
YWdlUnVudGltZUFnZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKQogewogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiBpc29s
YXRlZENvbnRleHRzOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAg
aWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFN0cmluZyBmcmFtZUlkID0g
bV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmgKaW5kZXggM2U0YmVkZjdiN2ZjOWE0YWUxZjEzOGRmODJhMmYzYzlj
MDA2M2MzNC4uYjc5MGU3MDEwMWRlMTIxODlkYjVmYjEzMDRhZjFmYmU2NDgxNjMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaWZuZGVmIFBhZ2VSdW50aW1lQWdlbnRfaAogI2RlZmluZSBQYWdlUnVudGltZUFnZW50
X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaD4KIApAQCAtNTQsNyArNTUsNyBAQCB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIFBhZ2VSdW50aW1lQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXImLCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAg
UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7
CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwg
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNzcsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50OwogCi0gICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOworICAgIFBhZ2UmIG1faW5zcGVjdGVk
UGFnZTsKIAogICAgIGJvb2wgbV9tYWluV29ybGRDb250ZXh0Q3JlYXRlZCB7IGZhbHNlIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA5
YjAwZjJmZGVhM2ZiOTU3OTM2YzJlMjMzNzAzNzZlZTk4NmZjNDA0Li5kMTNiMjk0NDY3YmVkOTg4
Yzg4MjY5NTc5MjM1ZTMwYTliODE5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V2ViQ29uc29sZUFnZW50LmNwcApAQCAtNDEsOCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkNvbnNvbGVBZ2VudDo6V2ViQ29u
c29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgIDogSW5zcGVjdG9yQ29uc29sZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1dl
YkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKKyAg
ICA6IEluc3BlY3RvckNvbnNvbGVBZ2VudChjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKaW5kZXggMjkyZjlkNDMzMTY1ZWJiODczNDU3
MWVhOTA5NWFjYjI4Nzg4ZDJhNS4uMTg3ODAzMzU5YTNmZDRlNDkwMTc0ZDgwODZmYzBjNjM5YWRm
OWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaApAQCAt
MzMsMTQgKzMzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVdpbmRvdzsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNz
IFdlYkNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29uc29sZUFnZW50KTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJDb25zb2xlQWdlbnQoV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CisgICAgV2ViQ29uc29sZUFnZW50KEluc3BlY3Rvcjo6QWdl
bnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V2ViQ29uc29sZUFnZW50KCkgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVu
YWJsZWQpIG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IDRiNmFmZjhkODA5N2JiYmI3ODgwNzY3ZWY1MGUyNTlhNDEw
MzY0YjQuLmU2NjQ4ZTc1N2VjYjUzZGQ0MTI5ZWQ4ZjAyOGYzMDQ1ZGM3MzcxMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMyLDkgKzMy
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykK
K1dlYkRlYnVnZ2VyQWdlbnQ6OldlYkRlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250
ZXh0KQorICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChjb250ZXh0KQorICAgICwgbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKaW5kZXggY2MwYmJkYzdi
Y2UxMGZkYmNjYzZiMjZhN2U1NmRiYzc5MWQzYzBkMi4uMjMwMTc0ZDk1ZmJhNGM2ZjA5NmJiYmU5
YzNlZTQxYmU1NmFhNjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dl
YkRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdn
ZXJBZ2VudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkRlYnVnZ2VyQWdlbnRfaAog
I2RlZmluZSBXZWJEZWJ1Z2dlckFnZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw3IEBAIGNsYXNzIFdlYkRl
YnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJEZWJ1Z2dlckFnZW50KEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIFdl
YkRlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V2ViRGVidWdn
ZXJBZ2VudCgpIHsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDRhN2M4N2I1ZDMyZDJkY2U3YWUzYTY1NjY1
NmY3ODdiZDgxMjJjNjIuLjI3MTk0ODY4ZDc1NmVmMDY5ZTdjZWQxMDhkZjkzN2EwMTRhZmE2Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3Bw
CkBAIC0zNiw4ICszNiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBXZWJD
b25zb2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorV29ya2VyQ29uc29sZUFnZW50OjpX
b3JrZXJDb25zb2xlQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogV2Vi
Q29uc29sZUFnZW50KGNvbnRleHQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJDb25zb2xlQWdlbnQuaAppbmRleCAyMmYyNmQ3NzIyYTM5NzNmOGM3MTIxZDc0NGIy
MzMyMGYwNDg4NzJmLi5iMjRlODMwOGEzMmQ2OWQzZWQyNjBmMjFjYzUyM2RhNGZkNjQ4ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaWZuZGVmIFdvcmtlckNvbnNvbGVBZ2VudF9oCiAjZGVmaW5lIFdvcmtl
ckNvbnNvbGVBZ2VudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNp
bmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAs
NyArNDEsNyBAQCBjbGFzcyBXb3JrZXJDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29u
c29sZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJDb25zb2xlQWdlbnQp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckNvbnNv
bGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsKKyAgICBXb3JrZXJDb25zb2xlQWdl
bnQoV29ya2VyQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyQ29uc29sZUFnZW50
KCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4ZDFiOTViZmQwMmYxZGU3NmU3YjJhMGFmZTM3NDc2NjVl
MDYwYzQ5Li4wNjQ0YzA1YjIyNzlmMTQxNzIyYTY0YjMzYzk0YWVmYjVmNjA0MTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC04
MSwyMSArODEsMjEgQEAgcHJpdmF0ZToKIAogY29uc3QgY2hhciogV29ya2VyRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJUYXNrTW9kZSA9ICJkZWJ1Z2dlciI7CiAKLVdvcmtlckRlYnVnZ2VyQWdlbnQ6
OldvcmtlckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdvcmtl
ckdsb2JhbFNjb3BlKiBpbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkKLSAgICA6IFdlYkRlYnVn
Z2VyQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAg
ICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihpbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSwgV29ya2Vy
RGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSkKLSAgICAsIG1faW5zcGVjdGVkV29ya2Vy
R2xvYmFsU2NvcGUoaW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKKyAg
ICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKKyAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIo
Y29udGV4dC53b3JrZXJHbG9iYWxTY29wZSwgV29ya2VyRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJU
YXNrTW9kZSkKKyAgICAsIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3Jr
ZXJHbG9iYWxTY29wZSkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayh3
b3JrZXJEZWJ1Z2dlckFnZW50c011dGV4KTsKLSAgICB3b3JrZXJEZWJ1Z2dlckFnZW50cygpLnNl
dCgmaW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLCB0aGlzKTsKKyAgICB3b3Jr
ZXJEZWJ1Z2dlckFnZW50cygpLnNldCgmY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS50aHJlYWQo
KSwgdGhpcyk7CiB9CiAKIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50
KCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayh3b3JrZXJEZWJ1Z2dl
ckFnZW50c011dGV4KTsKIAotICAgIEFTU0VSVCh3b3JrZXJEZWJ1Z2dlckFnZW50cygpLmNvbnRh
aW5zKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKSkpOwotICAgIHdvcmtl
ckRlYnVnZ2VyQWdlbnRzKCkucmVtb3ZlKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLT50
aHJlYWQoKSk7CisgICAgQVNTRVJUKHdvcmtlckRlYnVnZ2VyQWdlbnRzKCkuY29udGFpbnMoJm1f
aW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkpKTsKKyAgICB3b3JrZXJEZWJ1Z2dl
ckFnZW50cygpLnJlbW92ZSgmbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKSk7
CiB9CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW50ZXJydXB0QW5kRGlzcGF0Y2hJbnNw
ZWN0b3JDb21tYW5kcyhXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29t
bWFuZHMoV29ya2VyVGhyZWFkKiB0aAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBs
b2NrKHdvcmtlckRlYnVnZ2VyQWdlbnRzTXV0ZXgpOwogCiAgICAgaWYgKFdvcmtlckRlYnVnZ2Vy
QWdlbnQqIGFnZW50ID0gd29ya2VyRGVidWdnZXJBZ2VudHMoKS5nZXQodGhyZWFkKSkKLSAgICAg
ICAgYWdlbnQtPm1fc2NyaXB0RGVidWdTZXJ2ZXIuaW50ZXJydXB0QW5kUnVuVGFzayhzdGQ6Om1h
a2VfdW5pcXVlPFJ1bkluc3BlY3RvckNvbW1hbmRzVGFzaz4odGhyZWFkLCBhZ2VudC0+bV9pbnNw
ZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkpOworICAgICAgICBhZ2VudC0+bV9zY3JpcHREZWJ1Z1Nl
cnZlci5pbnRlcnJ1cHRBbmRSdW5UYXNrKHN0ZDo6bWFrZV91bmlxdWU8UnVuSW5zcGVjdG9yQ29t
bWFuZHNUYXNrPih0aHJlYWQsICZhZ2VudC0+bV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkp
OwogfQogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVi
dWdTZXJ2ZXIoKQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6
c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIAog
dm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdGVkV29ya2VyR2xv
YmFsU2NvcGUtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkxvZywgbWVzc2FnZSk7CisgICAgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3Nh
Z2UpOwogfQogCiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciYgV29ya2VyRGVidWdnZXJBZ2VudDo6
c2NyaXB0RGVidWdTZXJ2ZXIoKQpAQCAtMTMzLDcgKzEzMyw3IEBAIEluamVjdGVkU2NyaXB0IFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJy
b3IsIGNvCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpT
Qzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoJm1faW5zcGVjdGVkV29y
a2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDk2MWRiZTE4NjJmYmE4ZGY5NjQ2YWM2
ZWMwNTU2ZjY2YWZmM2Q1YzcuLjNlMTc2ODE5NWJmNjUzMjJmODI4MzA3OGUxZGQ5ZTE2Yzc1MWZi
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXb3JrZXJEZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVi
bGljIFdlYkRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckRl
YnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFdvcmtlckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKKyAgICBXb3JrZXJEZWJ1
Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfldvcmtlckRlYnVn
Z2VyQWdlbnQoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z2dlclRhc2tNb2RlOwpA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV9p
bnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSB7IG51bGxwdHIgfTsKKyAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBiMTQxM2I4NmQ2OTJmMTMwMjJiODJmOTJlNjhjMDNi
NjJmYmNiODNiLi4yZTU0YjcwYzQ2ZTNlNjE5MzY5MzZiZDU0MzM5YzA0OTI2M2JjYTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC04NSwxOSArODUsMzYgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKICAg
ICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0
ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyUnVudGltZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsICZ3b3JrZXJH
bG9iYWxTY29wZSk7CisgICAgQWdlbnRDb250ZXh0IGJhc2VDb250ZXh0ID0geworICAgICAgICAq
dGhpcywKKyAgICAgICAgKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLAorICAgICAgICBtX2Zyb250
ZW5kUm91dGVyLmdldCgpLAorICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpCisgICAg
fTsKKworICAgIFdlYkFnZW50Q29udGV4dCB3ZWJDb250ZXh0ID0geworICAgICAgICBiYXNlQ29u
dGV4dCwKKyAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpCisgICAgfTsKKworICAg
IFdvcmtlckFnZW50Q29udGV4dCB3b3JrZXJDb250ZXh0ID0geworICAgICAgICB3ZWJDb250ZXh0
LAorICAgICAgICB3b3JrZXJHbG9iYWxTY29wZSwKKyAgICB9OworCisgICAgYXV0byBydW50aW1l
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4
dCk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnQuZ2V0KCk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRXb3JrZXJSdW50aW1lQWdlbnQobV9ydW50aW1lQWdlbnQpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUocnVudGltZUFnZW50KSk7CiAKLSAgICBhdXRv
IGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50PigqbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAK
LSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2Vy
QWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCAmd29ya2VyR2xvYmFsU2NvcGUpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCk7CiAgICAgbV9y
dW50aW1lQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVyKCZkZWJ1Z2dlckFnZW50LT5zY3JpcHRE
ZWJ1Z1NlcnZlcigpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRlYnVnZ2VyQWdl
bnQpKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbnVsbHB0ciwgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6V29ya2VySW5zcGVjdG9yLCBudWxscHRyKSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4od29ya2Vy
Q29udGV4dCwgbnVsbHB0ciwgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6V29ya2VySW5zcGVjdG9y
LCBudWxscHRyKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShjb25zb2xlQWdlbnQp
KTsKIAogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBjY2Q4ZmVh
Y2VkOTE2YzQ3ZTcxNGZmMTM2OGQ0MWM1NTUxYzljZjI0Li41MzAzMGVhZGZiYTdhYTVhODU3OTli
ODNmNDM4NGIwMGVlYzJiNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmNwcApAQCAtNDcsMjEgKzQ3LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV29ya2VyUnVudGltZUFnZW50OjpX
b3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKLSAgICA6IEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3dvcmtlckds
b2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJS
dW50aW1lQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9y
UnVudGltZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCisgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xv
YmFsU2NvcGUpCiB7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3JrZXJSdW50aW1lQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNv
bikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQogICAgIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIH0K
IApAQCAtNzIsNyArNzAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3IsIGNvbgogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtl
ckdsb2JhbFNjb3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggOTZkOWEw
YjFjZDllYTQzODAyNWMxYjhhMmQyMGVkZDZiNmU4NGM5ZC4uZjgyY2NhZjE5M2MxYzRlNmM3NzI4
MmQ0MGY0ZmFiNTAwYmViMzJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmbmRlZiBXb3JrZXJSdW50aW1l
QWdlbnRfaAogI2RlZmluZSBXb3JrZXJSdW50aW1lQWdlbnRfaAogCisjaW5jbHVkZSAiSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArNDIsNyBAQCB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgV29ya2VyUnVudGltZUFnZW50IGZp
bmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoK
LSAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIm
LCBXb3JrZXJHbG9iYWxTY29wZSopOworICAgIFdvcmtlclJ1bnRpbWVBZ2VudChXb3JrZXJBZ2Vu
dENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAg
LTU2LDkgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwor
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3Bl
OwogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2NvcGUgeyBudWxscHRy
IH07CiAgICAgYm9vbCBtX3BhdXNlZCB7IGZhbHNlIH07CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260692</attachid>
            <date>2015-09-05 10:30:21 -0700</date>
            <delta_ts>2015-09-05 11:52:25 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-148625-20150905103017.patch</filename>
            <type>text/plain</type>
            <size>140069</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjJkMDJiOTY1MGUwODVkMDYxODY3MDVkNjEzNWYwMjlhMTQ2N2ExLi40NTY1YjBlZTczYTcxNjli
Y2IyOTIzYWJlNDA5MjdhYWNlNDFlZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0wOS0wNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgQWdlbnQtb3du
ZWQgb2JqZWN0cywgYW5kIGluaXRpYWxpemUgYWdlbnRzIHVzaW5nIGNvbnRleHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgQWxsIGFnZW50cyBvd24g
dGhlaXIgZG9tYWluLXNwZWNpZmljIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXJzLiBD
aGFuZ2Ugc28gdGhhdAorICAgICAgICB0aGV5IGFyZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3Rv
cnMgcmF0aGVyIHRoYW4gd2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLgor
ICAgICAgICBUaGlzIG1heSBjYXVzZSBhZGRpdGlvbmFsIG1lbW9yeSB1c2UsIGJ1dCB0aGlzIGNh
biBiZSBjb3VudGVyYWN0ZWQgYnkgbGF6aWx5IGNyZWF0aW5nCisgICAgICAgIHNvbWUgYWdlbnRz
IHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3Igb3RoZXIgYWdlbnRzIHRvIGZ1bmN0aW9uIChpLmUu
LCBydW50aW1lIGFuZCBwYWdlIGFnZW50cykuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIGZy
b250ZW5kL2JhY2tlbmQgZGlzcGF0Y2hlciBhcmd1bWVudHMgdG8gZXZlcnkgc2luZ2xlIGFnZW50
IGNvbnN0cnVjdG9yLAorICAgICAgICBjaGFuZ2UgYWdlbnQgY29uc3RydWN0aW9uIHRvIHRha2Ug
YSBBZ2VudENvbnRleHQgb3IgYSBzdWJjbGFzcyBvZiBpdC4gVGhpcyBwcm92aWRlcyBhZ2VudHMg
d2l0aAorICAgICAgICByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGhlIG93bmluZyBJbnNwZWN0
b3JFbnZpcm9ubWVudCBzdWJjbGFzcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvCisgICAgICAgIG91
dGxpdmUgYWxsIGFnZW50cy4gQWdlbnRDb250ZXh0IGFuZCBpdHMgc3ViY2xhc3NlcyBmb2xsb3cg
dGhlIGV4aXN0aW5nIEFnZW50IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNBZ2VudENvbnRl
eHQ6OkpTQWdlbnRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNw
ZWN0b3JBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaDogQWx0ZXJuYXRlIGFnZW50cyBzaG91bGQKKyAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gZnJv
bnRlbmQgcm91dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgYXQgY29uc3RydWN0aW9uIHRpbWUu
CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAg
ICAgKENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9ldmVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisKIDIwMTUt
MDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1lc3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIg
aW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGViZDkzZjcyMWU0ZjJk
MGNhY2YwZThiNTk1MzA5ZGIwMzY2ZjNkLi5iNjgzZjRjYTcxYmFiMzg1NmQ0NGIxZGNkZTE4Y2Yz
MzRlZmYwYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDE1LTA5LTA1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpZ2h0
ZW4gdXAgbGlmZXRpbWVzIGZvciBBZ2VudC1vd25lZCBvYmplY3RzLCBhbmQgaW5pdGlhbGl6ZSBh
Z2VudHMgdXNpbmcgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KKworICAgICAgICBBbGwgYWdlbnRzIG93biB0aGVpciBkb21haW4tc3BlY2lmaWMgZnJvbnRl
bmQgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlcnMuIENoYW5nZSBzbyB0aGF0CisgICAgICAgIHRoZXkg
YXJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9ycyByYXRoZXIgdGhhbiB3aGVuIGEgZnJvbnRl
bmQgY29ubmVjdHMgb3IgZGlzY29ubmVjdHMuCisgICAgICAgIFRoaXMgbWF5IGNhdXNlIGFkZGl0
aW9uYWwgbWVtb3J5IHVzZSwgYnV0IHRoaXMgY2FuIGJlIGNvdW50ZXJhY3RlZCBieSBsYXppbHkg
Y3JlYXRpbmcKKyAgICAgICAgc29tZSBhZ2VudHMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBv
dGhlciBhZ2VudHMgdG8gZnVuY3Rpb24gKGkuZS4sIHJ1bnRpbWUgYW5kIHBhZ2UgYWdlbnRzKS4K
KworICAgICAgICBUbyBhdm9pZCBhZGRpbmcgZnJvbnRlbmQvYmFja2VuZCBkaXNwYXRjaGVyIGFy
Z3VtZW50cyB0byBldmVyeSBzaW5nbGUgYWdlbnQgY29uc3RydWN0b3IsCisgICAgICAgIGNoYW5n
ZSBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8gdGFrZSBhIEFnZW50Q29udGV4dCBvciBhIHN1YmNsYXNz
IG9mIGl0LiBUaGlzIHByb3ZpZGVzIGFnZW50cyB3aXRoCisgICAgICAgIHJlZmVyZW5jZXMgdG8g
b2JqZWN0cyBpbiB0aGUgb3duaW5nIEluc3BlY3RvckVudmlyb25tZW50IHN1YmNsYXNzIHRoYXQg
YXJlIGd1YXJhbnRlZWQgdG8KKyAgICAgICAgb3V0bGl2ZSBhbGwgYWdlbnRzLiBBZ2VudENvbnRl
eHQgYW5kIGl0cyBzdWJjbGFzc2VzIGZvbGxvdyB0aGUgZXhpc3RpbmcgQWdlbnQgY2xhc3MgaGll
cmFyY2h5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92
ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2Fi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRP
YmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
cGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJBZ2Vu
dENvbnRleHQ6OldlYkFnZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQWdlbnRD
b250ZXh0OjpQYWdlQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFnZW50
Q29udGV4dDo6V29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50QmFzZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZv
clNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29u
dGV4dENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2Vi
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpX
ZWJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRl
YnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlv
bkxvZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50Lmg6CisKIDIwMTUtMDktMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWdlbnRzIHNob3VsZCBzZW5kIG1l
c3NhZ2VzIHRocm91Z2ggRnJvbnRlbmRSb3V0ZXIgaW5zdGVhZCBvZiBGcm9udGVuZENoYW5uZWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCmluZGV4IGY0YWViMDdlOTgyZTgzYzkwZDJmOTYyMmYxZDljZTg1NjI1ZjU5OWQuLjYx
YzY5M2Q0ZWM4MGVjNDg3Y2IyZDJkMjE4YjFjMTY4NGU5MTQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApAQCAtMjks
MTAgKzI5LDMzIEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Citj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CitjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVudDsK
Kworc3RydWN0IEFnZW50Q29udGV4dCB7CisgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmly
b25tZW50OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OworICAgIEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcjsKKyAgICBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXI7Cit9OworCitzdHJ1Y3QgSlNBZ2VudENvbnRleHQgOiBw
dWJsaWMgQWdlbnRDb250ZXh0IHsKKyAgICBKU0FnZW50Q29udGV4dChBZ2VudENvbnRleHQmIGNv
bnRleHQsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBBZ2Vu
dENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3Q7Cit9OwogCiBlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb24gewogICAg
IEluc3BlY3RlZFRhcmdldERlc3Ryb3llZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCBkYmQyZTc2YzZhMTYxNmVjNDBiOTgyMzZjYTY5ZjBlZmM4ZDRjMjMw
Li45ODlkMmE2ZTlmYWNjOTcwMzZhMWQ5ZjgzMGI4Y2UzNzE4ZTlkNmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02MiwxNiArNjIsMzAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkK
KyAgICA6IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQorI2VuZGlmCiB7Ci0gICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCp0aGlzKTsKLSAgICBhdXRvIHJ1bnRpbWVBZ2Vu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KCptX2luamVj
dGVkU2NyaXB0TWFuYWdlciwgbV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY29uc29sZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudD4oKm1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKTsKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCBtX2dsb2JhbE9iamVjdCwgY29uc29sZUFnZW50LmdldCgpKTsKKyAgICBBZ2VudENvbnRleHQg
YmFzZUNvbnRleHQgPSB7CisgICAgICAgICp0aGlzLAorICAgICAgICAqbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIsCisgICAgICAgIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksCisgICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAgICB9OworCisgICAgSlNBZ2VudENvbnRleHQgY29udGV4
dCA9IHsKKyAgICAgICAgYmFzZUNvbnRleHQsCisgICAgICAgIGdsb2JhbE9iamVjdAorICAgIH07
CisKKyAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
Z2VudD4oY29udGV4dCk7CisgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBjb25zb2xlQWdlbnQuZ2V0KCkpOwogCiAgICAg
bV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CkBAIC0xMTEsNyArMTI1LDggQEAgdm9pZCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGZyb250ZW4KICAgICBpZiAoIWNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9m
cm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIC8v
IEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhhcyBj
b25uZWN0ZWQgKGJ5IGlkKS4KKyAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQobnVsbHB0ciwgbnVsbHB0cik7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyht
X2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMjUsNiArMTQwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGZyb24KIHsKICAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRD
aGFubmVsKTsKIAorICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRzIHdo
aWNoIGZyb250ZW5kIGhhcyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0
cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CkBAIC0xNDMsNiArMTU5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb24K
IAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxG
cm9udGVuZHMoKQogeworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0byBub3RpZnkgYWdlbnRz
IHdoaWNoIGZyb250ZW5kIGhhcyBkaXNjb25uZWN0ZWQgKGJ5IGlkKS4KICAgICBtX2FnZW50cy53
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRU
YXJnZXREZXN0cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZy
b250ZW5kcygpOwpAQCAtMjcxLDcgKzI4OCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiB7
CiAgICAgU3RyaW5nIGRvbWFpbk5hbWUgPSBhZ2VudC0+ZG9tYWluTmFtZSgpOwogCi0gICAgYWdl
bnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwg
Jm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyB0
byBub3RpZnkgYWdlbnRzIHdoaWNoIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQgKGJ5IGlkKS4KKyAg
ICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG51bGxwdHIsIG51bGxwdHIpOwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZTExMzA4NWQ1Y2M5OGRiODUy
Zjg1ZDNkNmFkMzlhZGIxOTQ0NDFiNy4uZmI4YzdhNWI0NzEzNTg1YTBkNDBmNTNiYWFlMWJjODgy
NTRhNmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDMs
MTMgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2F1Z21lbnRpbmdDbGllbnQgPSBjbGllbnQ7IH0KIAog
ICAgIHZpcnR1YWwgY29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZFJvdXRlci5nZXQoKTsgfQorICAgIHZpcnR1YWwg
QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRy
YUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSBvdmVycmlkZTsKICNl
bmRpZgogCiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrKTsKIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2Jq
ZWN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhl
Y3V0aW9uU3RvcHdhdGNoOwpAQCAtMTI1LDYgKzEyNSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnMgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24geyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAg
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogbV9hdWdtZW50aW5nQ2xpZW50
IHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggNTdmZTVhYWZkY2Ix
M2FmNTczNDFjNmQxNjViNTJlOWZkOGY2MmM2Yi4uZGEwM2I3ZjIzY2EyYWIyMDI1ZjRiOTQwMzBi
Njk4MmYwNDJlMTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMzgsOSArMzgsMTEgQEAKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChJ
bnNwZWN0b3JFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCitJbnNwZWN0b3JBZ2VudDo6SW5zcGVj
dG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yIikpCi0gICAgLCBtX2Vudmlyb25tZW50KGVudmlyb25t
ZW50KQorICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogewogfQogCkBAIC00OCwxNyArNTAsMTIgQEAgSW5zcGVjdG9yQWdlbnQ6
On5JbnNwZWN0b3JBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRj
aGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLQog
ICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7CiAKICAgICBFcnJvclN0
cmluZyB1bnVzZWQ7CkBAIC03NywxMiArNzQsOCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjplbmFi
bGUoRXJyb3JTdHJpbmcmKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWN0aXZhdGVF
eHRyYURvbWFpbnMobV9wZW5kaW5nRXh0cmFEb21haW5zRGF0YSk7CiAjZW5kaWYKIAotICAgIGZv
ciAoYXV0byYgdGVzdENvbW1hbmQgOiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kcykgewot
ICAgICAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQotICAgICAgICAgICAgYnJlYWs7Ci0K
KyAgICBmb3IgKGF1dG8mIHRlc3RDb21tYW5kIDogbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFu
ZHMpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKHRlc3RDb21tYW5kKTsKLSAgICB9CiAKICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21t
YW5kcy5jbGVhcigpOwogfQpAQCAtOTksNyArOTIsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpp
bml0aWFsaXplZChFcnJvclN0cmluZyYpCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3Qo
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiYgb2JqZWN0VG9JbnNwZWN0
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGhpbnRzKQogewotICAgIGlmIChtX2VuYWJsZWQg
JiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKKyAgICBpZiAobV9lbmFibGVkKSB7CiAgICAgICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwgaGludHMpOwog
ICAgICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5maXJzdCA9IG51bGxwdHI7CiAgICAgICAgIG1f
cGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCA9IG51bGxwdHI7CkBAIC0xMTIsNyArMTA1LDcgQEAg
dm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mJiBvYmplY3RUb0kKIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBpZiAobV9lbmFi
bGVkICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHNjcmlwdCk7
CiAgICAgZWxzZQogICAgICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kcy5hcHBlbmQo
c2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IDFlOGZiNjkwZWI1NWZmYmNlNDVkMDExOGI5NWM0
NGRiNjA3MTA5ZmUuLmVkYTc0NDkwMTQ5YWZhZWM2OTNlYjE5OGVmZWEyZmYwZDc5YjE0MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bnNwZWN0b3JBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JBZ2VudChJbnNwZWN0b3JFbnZp
cm9ubWVudCYpOworICAgIEluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1
YWwgfkluc3BlY3RvckFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JFbnZp
cm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworCiAgICAgVmVjdG9y
PFN0cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNjQ5
YzAyOWE0ZDcwZDUyNWQwOGNkZTgwY2ZhNzIzMjAxMDMyYTQ2MC4uNzAxNjA2YzQzZGIzZjVmY2E0
MmQxY2RkYzNkNWU2M2ExNTQ5OTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CkBAIC00Myw5ICs0MywxMSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAwMDsKIHN0YXRpYyBjb25zdCBpbnQg
ZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIAotSW5zcGVjdG9yQ29uc29sZUFnZW50
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIpCitJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJDb25zb2xlIikpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0Lmlu
amVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQogCkBAIC01Mywx
NyArNTUsMTIgQEAgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+SW5zcGVjdG9yQ29uc29sZUFnZW50
KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hl
ciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0K
ICAgICBTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgZGlzYWJsZShlcnJvclN0cmluZyk7CiB9CkBA
IC0xMDEsNyArOTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdl
cyhFcnJvclN0cmluZyYpCiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNlT2Jq
ZWN0R3JvdXAoQVNDSUlMaXRlcmFsKCJjb25zb2xlIikpOwogCi0gICAgaWYgKG1fZnJvbnRlbmRE
aXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkKQogICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZXNDbGVhcmVkKCk7CiB9CiAKQEAgLTIwMywxNiArMjAw
LDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IGNvCiAKICAgICBpZiAobV9wcmV2aW91c01lc3Nh
Z2UgJiYgIWlzR3JvdXBNZXNzYWdlKG1fcHJldmlvdXNNZXNzYWdlLT50eXBlKCkpICYmIG1fcHJl
dmlvdXNNZXNzYWdlLT5pc0VxdWFsKGNvbnNvbGVNZXNzYWdlLmdldCgpKSkgewogICAgICAgICBt
X3ByZXZpb3VzTWVzc2FnZS0+aW5jcmVtZW50Q291bnQoKTsKLSAgICAgICAgaWYgKG1fZnJvbnRl
bmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAg
ICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSgqbV9m
cm9udGVuZERpc3BhdGNoZXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNz
YWdlID0gY29uc29sZU1lc3NhZ2UuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFw
cGVuZChXVEY6Om1vdmUoY29uc29sZU1lc3NhZ2UpKTsKLSAgICAgICAgaWYgKG1fZnJvbnRlbmRE
aXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAg
ICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKCptX2Zyb250ZW5kRGlzcGF0Y2hl
ciwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHRydWUpOwogICAgIH0KIAotICAgIGlmICghbV9m
cm9udGVuZERpc3BhdGNoZXIgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGltdW1D
b25zb2xlTWVzc2FnZXMpIHsKKyAgICBpZiAobV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1h
eGltdW1Db25zb2xlTWVzc2FnZXMpIHsKICAgICAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VD
b3VudCArPSBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwOwogICAgICAgICBtX2NvbnNvbGVNZXNz
YWdlcy5yZW1vdmUoMCwgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBkMTIxNDdlMjZmMDEzNTE0NzFlYmY1NzM4ZjU5NWFj
ZDQ4MWIwNmM3Li5iOTcxODY5ZDYzNDUzY2U1MGRjMTE3OGFmNzBjMDNiZTcwMjQ2OGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRC
YXNlLCBwdWJsaQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOworICAgIEluc3BlY3RvckNvbnNv
bGVBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb25zb2xlQWdl
bnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtODMsNiArODMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPENvbnNvbGVCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZp
b3VzTWVzc2FnZSB7IG51bGxwdHIgfTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnNv
bGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CiAgICAgaW50IG1fZXhwaXJlZENvbnNvbGVN
ZXNzYWdlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDY4NTM2NzBhN2EwZmFkNDVkYmUyZTNhNjRhZTAyY2FlYzI1ZTJiZDAuLmVjMjdiMTFiNjU5ODE3
NmZhYjQ5NzRlMjY0MmI0NjMzNTcyOGUyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC01Niw5ICs1NiwxMSBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJl
YWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3RpbwogICAgIHJl
dHVybiBtYWtlU3RyaW5nKG9iamVjdEdyb3VwLCBTdHJpbmc6Om51bWJlcihhY3Rpb24uaWRlbnRp
ZmllcikpOwogfQogCi1JbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIp
KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQor
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVh
a3BvaW50SUQoSlNDOjpub0JyZWFrcG9pbnRJRCkKIHsKICAgICAvLyBGSVhNRTogbWFrZSBicmVh
a1JlYXNvbiBvcHRpb25hbCBzbyB0aGF0IHRoZXJlIHdhcyBubyBuZWVkIHRvIGluaXQgaXQgd2l0
aCAib3RoZXIiLgpAQCAtNjksMTcgKzcxLDEyIEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6On5J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5k
Um91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJv
dXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91
dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBib29sIHNraXBSZWNvbXBpbGUg
PSByZWFzb24gPT0gRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOwog
ICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CiB9CkBAIC03OTksOCArNzk2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhckdsb2JhbE9iamVjdCgpCiAgICAgLy8gcGFn
ZXMgaGF2ZSB3aGF0IGJyZWFrcG9pbnRzLCBhcyB0aGUgbWFwcGluZyBpcyBvbmx5IHNlbnQgdG8g
RGVidWdnZXJBZ2VudCBvbmNlLgogICAgIGNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUoKTsK
IAotICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmdsb2JhbE9iamVjdENsZWFyZWQoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Z2xvYmFsT2JqZWN0Q2xlYXJlZCgpOwogfQogCiBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmFzc2VydFBhdXNlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKaW5kZXggOGQxOTQyNTFmMTUwODMyNzkxMzliYzM3Yzk2N2RjMjgyYjkwMGNh
Mi4uYWZhMjg2YzQ3ODcwNDM3MTBlZmY5NDg0ZTgyOTdkZjQ4YTk2NGQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmKTsKIAogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBhZGRmZWJj
MTkwYjgwZWM3ZjZmNjQ4MzA2ZjczNzI0OTA2OTNhYWMzLi5mMTVkNThkNDQ2OGUxZTMwNWRjNGQ5
NDY3NDllM2I3ZWE1MjgyMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTU3LDkgKzU3LDkgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiAg
ICAgcmV0dXJuIGIgPyAqYiA6IGZhbHNlOwogfQogCi1JbnNwZWN0b3JSdW50aW1lQWdlbnQ6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKK0luc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIlJ1bnRpbWUiKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4
IDJlMmQ3OTQxMmRmM2MyMWFhODhhMWI3ODRjZjAwZGMxNTY3NTc5MWMuLjc3MGU0MDc4YzdiMmQ0
NmY2NmM2MTUwYWE1YjM5MmFiODhjMDE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsKKyAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoQWdl
bnRDb250ZXh0Jik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcigpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcAppbmRleCA5NmUxYTQ5YWRmMmY3OWFmZjJk
YWJlNWE0ZGIxZDVlMzhiZWM0ZDI2Li4wMjE3ZGM2ZGM1NWEwZmYxYjdiNmEwMTA5MDE1ODE5ZTBk
ZjI4YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCkBAIC0y
OCw4ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudDo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0Q29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3Bl
Y3RvckNvbnNvbGVBZ2VudChjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RD
b25zb2xlQWdlbnQuaAppbmRleCA5YzI4NWUyZWZmMjM2ZWFlZGVhOWQ3MTg2NTBlMTkwOTE2ODI1
NTU3Li5hNmYxZTBlZGE0ZWRiMDczZDY0NmI0MGY2ZDY4MTI1YWUxOTQ0MjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUFn
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CisgICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIC8vIEZJWE1FOiBYSFJzIGFuZCBOb2RlcyBv
bmx5IG1ha2VzIHNlbnNlIGRlYnVnZ2luZyBhIFdlYiBjb250ZXh0LiBDYW4gdGhpcyBiZSBtb3Zl
ZCB0byBhIGRpZmZlcmVudCBhZ2VudD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDRkMzgzMDc2NWIxOGNkNWVhYjUwZWNmYTljOWI5Zjg4NGFjMDdmZDku
LmY2OTEyYTZhMDUyNWIyMmIxOWVjYWQzM2Y5MGQ4YjhmMTgyYjRjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCi0gICAgOiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fc2NyaXB0
RGVidWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KQorICAgIDogSW5zcGVjdG9yRGVidWdnZXJB
Z2VudChjb250ZXh0KQorICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0Lmluc3BlY3Rl
ZEdsb2JhbE9iamVjdCkKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2VudCkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggZDIxZWZhMGY1Zjcx
YjBjYTFmZTg1YWU3ODA1NjU3NDU0M2RmZTZkMi4uMWRkNGEyMDM1YzY4ZWJhZmM5NTliZDc3Zjc3
Yzc1NzBiYWU1Y2ZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQqKTsKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmLCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdERlYnVn
U2VydmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
MGUwNDVmNDBmMzBhZmY1MGIxNzQxYTIxYjdjZDZmZWFiMDU5ZTQwZS4uZWFjM2Q1YmRmM2VlODFk
Nzg4NTUxZjliN2Q3OTIxOWUyYWRiYWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcApAQCAtMzQsMjQgKzM0LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgOiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQorSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9y
UnVudGltZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKKyAgICAsIG1fZ2xvYmFs
T2JqZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewogfQogCi12b2lkIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gUnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwotCi0gICAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogfQogCiBWTSYgSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6Omdsb2JhbFZNKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5oCmluZGV4IDkxN2ZkZWI5NWQ4YTBlMTNhZTgzMTBkZGQ4MmY0MDRlNzBjODBkNTMuLjVk
Yzg3YjIwOTVlN2FiNTRhNDJkNTg0YmIwMjJlNzJiNjg0NGQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKLSAgICBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Cisg
ICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVn
bWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaAppbmRleCBjYTQ2ZjEyNWFlMzFl
NTRjNDU5YjBiODE2MTc4ZWRmZjFmNGE1NDhhLi45NzkxYzI5NTU2MjA2MDIzNWQ1MTgyZDE1MDAz
MWM4Y2Q5NzczZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudC5oCkBAIC0zOSwyMyArMzksMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVEJhY2tlbmREaXNw
YXRjaGVyLCB0eXBlbmFtZSBUQWx0ZXJuYXRlRGlzcGF0Y2hlcj4KIGNsYXNzIEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VEFsdGVy
bmF0ZURpc3BhdGNoZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCisgICAgQWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQoY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBBdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIHN0ZDo6dW5pcXVlX3B0cjxUQWx0ZXJuYXRlRGlzcGF0
Y2hlcj4gYWx0ZXJuYXRlRGlzcGF0Y2hlcikKICAgICAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
ZG9tYWluTmFtZSkKICAgICAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIoV1RGOjptb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKQorICAgICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVEJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoY29udHJvbGxlci5iYWNrZW5kRGlzcGF0Y2hlcigpLCBudWxs
cHRyKSkKICAgICB7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURp
c3BhdGNoZXIobV9hbHRlcm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKKyAgICAgICAgbV9hbHRlcm5h
dGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcigmY29udHJvbGxlci5iYWNrZW5kRGlz
cGF0Y2hlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKSBvdmVycmlkZQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
KCkKKyAgICB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3Bh
dGNoZXIobnVsbHB0cik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBUQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5hdGVEaXNwYXRjaGVy
LmdldCgpKTsKLSAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAg
ewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCBiMGQyNWIwYjY3MmEyOTY3Y2FmZjU3OGJmNGY1ODg4ZTllOTU0Zjc5Li4z
NDhjNzU0NWNjOGI1OTFlNTUzNjlkZTE0ZDNlOWUwYWJjNTQyZTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVn
bWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCopID0gMDsKIAogICAgIHZpcnR1YWwgY29uc3Qg
RnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+
KSA9IDA7CiAKICAgICBib29sIGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZyb250ZW5kUm91
dGVyKCkuaGFzRnJvbnRlbmRzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggOWFmOWRkYWY4NGRmMjFlNmVmNzI2NzAxOTM5ZjQzNThh
N2FlZWNiNC4uNjFiMGJhMTgzMjhjNzc3NmQ2NWQwMjI3ZWQzNzBmMGYzYWI5MzQxYyAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3Bw
X2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5E
aXNwYXRjaGVyRGVjbGFyYXRpb24gPSAoCiAgICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8JHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCAke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgc3RhdGljIFJlZjwke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciYsICR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogJHtjb21tYW5kRGVjbGFyYXRpb25zfQogcHJpdmF0
ZToKQEAgLTE2OCw5ICsxNjgsOSBAQCAke2Rpc3BhdGNoQ2FzZXN9CiB9IiIiKQogCiAgICAgQmFj
a2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0cnVjdG9yID0gKAotICAgICIi
IlJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+ICR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwg
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgIiIiUmVm
PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNw
YXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAogJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIo
QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKQEAgLTIwNCwxMCArMjA0LDEwIEBAICR7b3V0UGFy
YW1ldGVyQXNzaWdubWVudHN9CiAgICAgRnJvbnRlbmREaXNwYXRjaGVyRG9tYWluRGlzcGF0Y2hl
ckRlY2xhcmF0aW9uID0gKAogIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2RvbWFpbk5hbWV9
RnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICAke2RvbWFpbk5hbWV9RnJvbnRlbmRE
aXNwYXRjaGVyKEZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlcikgOiBtX2Zyb250ZW5kUm91
dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRj
aGVyKEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcikgOiBtX2Zyb250ZW5kUm91dGVyKGZy
b250ZW5kUm91dGVyKSB7IH0KICR7ZXZlbnREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgotICAgIEZy
b250ZW5kUm91dGVyKiBtX2Zyb250ZW5kUm91dGVyOworICAgIEZyb250ZW5kUm91dGVyJiBtX2Zy
b250ZW5kUm91dGVyOwogfTsiIiIpCiAKICAgICBQcm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJh
dGlvblByZWx1ZGUgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBs
ZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
CmluZGV4IGRlNDRmOWExYjhiNWJmY2ExZjkwNjhjODRlYmJiOTU3ZDc0YTFiYzkuLjY2YWUwMzU1
YTVmYjZmYmE1MjIzMTAxMmJhNGRlNTE2OGEzZmJmNmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVu
ZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMTksNiArMTE5LDYgQEAgY2xhc3MgQ3BwRnJvbnRl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOycpCiAKICAgICAgICAgbGluZXMu
YXBwZW5kKCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kUm91dGVyLT5z
ZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+dG9KU09O
U3RyaW5nKCkpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAi
XG4iLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90
ZW1wbGF0ZXMucHkKaW5kZXggYTI4YTllZjEwNTFmMzg5OTlkNmI1MzAyZDJlMjNiMDBlNzI4ZmVl
YS4uMTQ4NDUyNzZiMzQwMTAyOGU1Y2IyYTRjMGNjZDJiMTNmNTgxMGM3MiAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDcgKzEz
OCw3IEBAICR7aW52b2NhdGlvbn0KICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+
KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCIk
e2RvbWFpbk5hbWV9IiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIiR7ZG9tYWluTmFtZX0iKSwgKl9j
b250cm9sbGVyLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9s
bGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggZGNlMmEzMTkwNTQxZmNhNDhlYmNkOTgzNjFhMTllODk2MDdjYjlhNy4u
ODhiMzI4Yzg3MWJlYjM0MjgyOTRhNmNiNzFhYjA5ODVhMjAwYjk0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcihXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlKQotICAg
IDogU2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC0+c2NyaXB0KCktPnZtKCksIHRydWUpCitXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFs
U2NvcGUmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6IFNjcmlwdERlYnVnU2Vy
dmVyKGNvbnRleHQuc2NyaXB0KCktPnZtKCksIHRydWUpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQpCiAgICAgLCBtX2RlYnVnZ2VyVGFza01vZGUobW9kZSkKIHsKQEAgLTYwLDcg
KzYwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsK
IAogICAgIGlmICh3YXNFbXB0eSkgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT5zY3Jp
cHQoKS0+YXR0YWNoRGVidWdnZXIodGhpcyk7CisgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUu
c2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOwogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpOwogICAgIH0KIH0KQEAgLTczLDggKzczLDggQEAgdm9pZCBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIs
IGJvb2wKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogCiAgICAgaWYgKG1fbGlz
dGVuZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+c2Ny
aXB0KCkpCi0gICAgICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT5zY3JpcHQoKS0+ZGV0YWNo
RGVidWdnZXIodGhpcyk7CisgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgp
KQorICAgICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdn
ZXIodGhpcyk7CiAgICAgICAgIGlmICghc2tpcFJlY29tcGlsZSkKICAgICAgICAgICAgIHJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgfQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdvcmtl
clNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAKICAgICBNZXNz
YWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJlc3VsdCA9IG1f
d29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1bkxvb3AoKS5ydW5Jbk1vZGUobV93b3JrZXJH
bG9iYWxTY29wZSwgbV9kZWJ1Z2dlclRhc2tNb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gbV93b3Jr
ZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5Nb2RlKCZtX3dvcmtlckdsb2Jh
bFNjb3BlLCBtX2RlYnVnZ2VyVGFza01vZGUpOwogICAgIC8vIEtlZXAgd2FpdGluZyB1bnRpbCBl
eGVjdXRpb24gaXMgcmVzdW1lZC4KICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCAmJiAhbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5o
CmluZGV4IDc4ODFmNjFiMDk0NDIwODY4ODczZjE0NDcyYzRlNjQ0YWRjMGY2NjcuLjgwZWQ5ZDM4
NWFjMDIxYWI0NzAyMjNjNmQ0NTc4NmU5YTY2ZWFhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFdvcmtlclNjcmlwdERlYnVnU2Vy
dmVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclNjcmlwdERlYnVnU2VydmVyKTsKIHB1YmxpYzoKLSAg
ICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmlu
ZyYpOworICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2JhbFNjb3BlJiwgY29u
c3QgU3RyaW5nJik7CiAgICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKQEAgLTU4LDcg
KzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6
RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFeGNlcHRpb24qKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNj
b3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAgIExp
c3RlbmVyU2V0IG1fbGlzdGVuZXJzOwogICAgIFN0cmluZyBtX2RlYnVnZ2VyVGFza01vZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhODQxYzMyMmM5NjRhMWE5MWRjY2YyNjNlZTNm
NmNjNWFmYTY2ZmRiLi44MDk4OTEyZjgyY2ZiNWM0ZWI0MmIwYjY1ZGQ1M2RhYjQ3YTczMDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKQEAgLTQzLDIzICs0NCwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJ
SUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgY29udGV4dCkKKyAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciogZnJvbnRlbmRS
b3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOwogfQogCkBAIC05
NSw3ICs5Myw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFt
ZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyCiB7CiAgICAgcmVzdWx0ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlQWdl
bnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMjQ4ZDNmODQxYmQ3
ZjJjMGMxZDA5MWFlOTE1OTYzZWVmYTVhZTkxNi4uNjU5ZmY0NzMyMzQyZTA5MDRjNDFkODExY2Fm
OTY3NTI2MDRhYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNDEsNyArNDEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50
OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCkBAIC01MCw3ICs0OSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMm
LCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MjA3NzFjMTk2NmU2MGNj
NjIzZjVhNjk1MGE5MGRhOTFlNTA4NGQwLi5iNmEzMTEzZWY3ZDY3OTk0MDVlYWEzMTQzMDYzZjhi
YmFkZWEwMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTM0MSw4ICszNDEsMTAgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NB
Z2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKICAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTU3R5bGVSdWxlPigmcnVsZSk7CiB9CiAKLUluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JD
U1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRl
cmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckNTU0FnZW50OjpJbnNw
ZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIp
LCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxD
U1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKIHsKICAg
ICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlzKTsKQEAgLTM1NCwxNyArMzU2LDEyIEBA
IEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcios
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91
dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJl
YXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICByZXNldE5vblBlcnNpc3RlbnREYXRhKCk7
CiB9CiAKQEAgLTExNzksOCArMTE3Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1v
ZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c3R5bGVTaGVldENoYW5nZWQoSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5bGVTaGVldCkKIHsKLSAg
ICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIpCi0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5zdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0LT5pZCgpKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+c3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldC0+aWQoKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0UHNldWRvU3RhdGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMDBiMDM3OTc2ZmIwNGYxMGRmNTc0
NDJiY2YxNmNkMzZlNGFlOTVhNC4uY2UwNTcwNzZkYWZlOTY3ZDJiMTM1Y2FkNzhmMGNmMTM3NDEw
M2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTUxLDcgKzUxLDYgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5vZGU7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIFN0
eWxlUmVzb2x2ZXI7CkBAIC04Miw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICB9OwogCi0gICAgSW5z
cGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvckRPTUFnZW50Kik7
CisgICAgSW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdl
bnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAgICAgc3RhdGljIENT
U1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGRhNzk0YjU0Zjg3ZDYz
YWQ0OTI1YTk4NTgxY2Q5ODkzZDMyYmIzMWYuLmNmOGNiMDI4YjVlODVhMDVlMjZhYjQ2ZDVlMTli
MGEwNzlmZGYxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTk1LDY3ICs5NSw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
QwogewogICAgIEFTU0VSVF9BUkcoaW5zcGVjdG9yQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOwog
Ci0gICAgYXV0byBpbnNwZWN0b3JBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
QWdlbnQ+KCp0aGlzKTsKKyAgICBBZ2VudENvbnRleHQgYmFzZUNvbnRleHQgPSB7CisgICAgICAg
ICp0aGlzLAorICAgICAgICAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsCisgICAgICAgIG1fZnJv
bnRlbmRSb3V0ZXIuZ2V0KCksCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkKKyAg
ICB9OworCisgICAgV2ViQWdlbnRDb250ZXh0IHdlYkNvbnRleHQgPSB7CisgICAgICAgIGJhc2VD
b250ZXh0LAorICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkKKyAgICB9OworCisg
ICAgUGFnZUFnZW50Q29udGV4dCBwYWdlQ29udGV4dCA9IHsKKyAgICAgICAgd2ViQ29udGV4dCwK
KyAgICAgICAgbV9wYWdlCisgICAgfTsKKworICAgIGF1dG8gaW5zcGVjdG9yQWdlbnRQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnNw
ZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURjo6bW92ZShpbnNwZWN0b3JBZ2VudFB0cikpOwogCi0gICAgYXV0byBwYWdl
QWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4obV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCAmcGFnZSwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0
KCkpOworICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQ
YWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBpbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7
CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7
CiAgICAgbV9wYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURjo6bW92ZShwYWdlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcnVudGltZUFnZW50UHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIsICZwYWdlLCBwYWdlQWdlbnQpOworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KTsK
ICAgICBQYWdlUnVudGltZUFnZW50KiBydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnRQdHIuZ2V0
KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KHJ1bnRp
bWVBZ2VudCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShydW50aW1lQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gZG9tQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgKm1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gZG9tQWdlbnRQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFn
ZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudFB0ci5nZXQo
KTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRvbUFnZW50UHRyKSk7CiAKLSAgICBt
X2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4obV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFn
ZW50KSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CisgICAg
YXV0byBkYXRhYmFzZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGF0YWJh
c2VBZ2VudCA9IGRhdGFiYXNlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rjo6bW92ZShkYXRhYmFzZUFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVk
REJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAqbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIsIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclJlcGxheUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvclJlcGxheUFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIGRv
bVN0b3JhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fcGFnZUFnZW50KTsKKyAgICBhdXRv
IGRvbVN0b3JhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50PihwYWdlQ29udGV4dCwgbV9wYWdlQWdlbnQpOwogICAgIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudCogZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50UHRyLmdldCgpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoZG9tU3RvcmFnZUFnZW50UHRyKSk7CiAKLSAgICBh
dXRvIHRpbWVsaW5lQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLCBpbnNwZWN0b3JDbGllbnQpOworICAgIGF1dG8g
dGltZWxpbmVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6UGFnZUlu
c3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBtX3RpbWVsaW5lQWdlbnQgPSB0aW1lbGlu
ZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUodGltZWxpbmVB
Z2VudFB0cikpOwogCi0gICAgYXV0byByZXNvdXJjZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBh
Z2VBZ2VudCwgaW5zcGVjdG9yQ2xpZW50KTsKKyAgICBhdXRvIHJlc291cmNlQWdlbnRQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlc291cmNlQWdlbnQ+KHBhZ2VDb250ZXh0LCBwYWdl
QWdlbnQsIGluc3BlY3RvckNsaWVudCk7CiAgICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VB
Z2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlQWdl
bnRQdHIpKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ29uc29sZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQpOwor
ICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFn
ZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2VudCk7CiAgICAgV2ViQ29uc29sZUFnZW50KiBjb25z
b2xlQWdlbnQgPSBjb25zb2xlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50UHRyLmdldCgpKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNvbnNvbGVBZ2VudFB0cikpOwogCi0gICAgYXV0byBkZWJ1
Z2dlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4oKm1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2Vu
dCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50LCBtX292
ZXJsYXkuZ2V0KCkpOwogICAgIG1fZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0
KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CiAK
LSAgICBhdXRvIGRvbURlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2Vu
dCwgbV9kZWJ1Z2dlckFnZW50KTsKKyAgICBhdXRvIGRvbURlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2Rv
bUFnZW50LCBtX2RlYnVnZ2VyQWdlbnQpOwogICAgIG1fZG9tRGVidWdnZXJBZ2VudCA9IGRvbURl
YnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkb21E
ZWJ1Z2dlckFnZW50UHRyKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgcGFnZUFnZW50KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yV29ya2VyQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50
PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0
LCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAog
ICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkp
OwogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTdmOTcxODhmY2E1
MGVjYjBjMTI1MzU4YWExMTk0MWMxMGUyOWRiOC4uNThiMmMzYjg3Y2NlY2VkYzNiYmFkNzQ1ZTc5
NGM2MGFiZDNlMmZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOb2Rl
RmluZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC0yMDEsOSArMjAyLDExIEBAIFN0cmluZyBJbnNwZWN0b3JET01B
Z2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4g
IiI7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3Bl
Y3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRl
cmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0
b3JET01BZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQorICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X292ZXJsYXkob3ZlcmxheSkKIHsKQEAgLTIxNSwxNiArMjE4LDEzIEBAIEluc3BlY3RvckRPTUFn
ZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2Rl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
cjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
Ci0KICAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7
CiAgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5
LmdldCgpKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2Vu
dCh0aGlzKTsKLSAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpOworICAgIG1fZG9jdW1lbnQgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKTsKIAogICAgIGlmIChtX25vZGVUb0ZvY3VzKQogICAgICAgICBmb2N1c05vZGUoKTsKQEAg
LTIzMiw5ICsyMzIsNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZgogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgbV9oaXN0b3J5LnJlc2V0KCk7
CiAgICAgbV9kb21FZGl0b3IucmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA4ZTliMTA2MjA4ZjFjNTVlODA2ZjMwMDI3NzIzM2E3
OWM1YmFiY2Q2Li45ZjZhZWIxODdkZDkzMTM4Y2Y4ZGU2NDI4NzNlYjI0NTFjNGY1OGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzEsNyAr
MzEsNiBAQAogI2RlZmluZSBJbnNwZWN0b3JET01BZ2VudF9oCiAKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCkBAIC02Nyw3ICs2Niw2IEBAIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSFRNTEVsZW1l
bnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFz
cyBOb2RlOwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKQEAgLTEwNCw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVs
ZW1lbnQqKSA9IDA7CiAgICAgfTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TWFuYWdlciYsIEluc3BlY3Rvck92ZXJsYXkqKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9F
cnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJik7CkBAIC0yNDcsOSArMjQ1LDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dFF1YWQ+LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcyk7CiAKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAg
ICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKIAog
ICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBmODNlZDdhMTBlMWZiM2E3ZTg2M2EyNTNjNzc2ZGY0ZTBjMDk4ZDRhLi5iMjdiMWVlYzI3
YzE3MTZiZjAzMDRiM2UwM2I4YWU0YWI4ZDJkNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2
MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2Vu
dCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCkKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGNvbnRleHQpCisg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fZGVidWdnZXJBZ2VudChkZWJ1Z2dlckFnZW50
KQogewpAQCAtMTAxLDE1ICsxMDIsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NRGVidWdnZXJC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IG51bGxwdHI7Ci0KICAgICBkaXNhYmxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGJmNDMx
OTEzODBjMTUzZWU0ODVhZDJkNjg0MWE4MmEwMWMwOWZjNjguLjU2YmY2NTAwNTc0ZTcxNzg1MzM4
MDE1MDYxZTkzOTYwOWE3OGU4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsK
LWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKQEAgLTU2LDcgKzU1LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWMK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KCk7CiAKICAgICAvLyBET01EZWJ1Z2dlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggYjJkZTky
YmMwYTU3NDU4YTZhNDNlYjI1MDZiNzQ5ZjMzMDE0NjRlYS4uNjgxMmU0MWJlNzMzNDM1ZTZhODBi
YmJlOGExYTUzYzUwMThkMzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU0LDggKzU0LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQp
Ci0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCitJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9N
U3RvcmFnZSIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRP
TVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQodGhpcyk7CkBAIC02Niwx
NyArNjgsMTIgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250
ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JT
dHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KQEAgLTE2NCw3ICsxNjEsNyBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0bwogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3Jh
Z2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQogewotICAgIGlm
ICghbV9mcm9udGVuZERpc3BhdGNoZXIgfHwgIW1fZW5hYmxlZCkKKyAgICBpZiAoIW1fZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TVN0b3JhZ2U6OlN0b3JhZ2VJZD4gaWQgPSBzdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3Jh
Z2VUeXBlID09IExvY2FsU3RvcmFnZSk7CkBAIC0xOTksOCArMTk2LDggQEAgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0
cmluZyYgZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICBy
ZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
dGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIHJldHVybiBt
X3BhZ2VBZ2VudC0+cGFnZSgpLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3Jh
Z2VBcmVhKCp0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIHJldHVybiBtX3BhZ2VB
Z2VudC0+cGFnZSgpLnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKHRhcmdldEZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBh
Z2UoKS5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCp0YXJnZXRG
cmFtZS0+ZG9jdW1lbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRl
eCA1OWM2ODA4N2E5YjkzODY2MWNiYjU2MTdhOGQ4OThlZDMxMDE3MDhkLi42NjI5YWU3ZmNiYWIw
N2ZlOTk0OTViYTNjMDA4MmUyZDE0Mjk0OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC00NSw3ICs0NSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZTsKQEAgLTU1LDcgKzU0LDcgQEAgdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01TdG9yYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IEluc3BlY3RvclBhZ2VBZ2VudCopOworICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiM2IyNzlmOWQ1MGJiODYzNmIxODM0
MjQxMTc1NWQwY2JhMjgyMjg1Li5lMGQ4ZDBiMDc2MTM2Y2U1NTFmNWY5YTM0NDVjMGFiYjM1ZTU0
MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaWRPcGVuRGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIGNvbnMK
ICAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lv
bik7CiAgICAgbV9yZXNvdXJjZXMuc2V0KHJlc291cmNlLT5pZCgpLCByZXNvdXJjZSk7CiAgICAg
Ly8gUmVzb3VyY2VzIGFyZSBvbmx5IGJvdW5kIHdoaWxlIHZpc2libGUuCi0gICAgaWYgKG1fZnJv
bnRlbmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkKQogICAgICAg
ICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKQEAgLTIx
Miw4ICsyMTIsMTAgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVhclJlc291cmNl
cygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJh
c2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgY29udGV4dCkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwogfQpAQCAtMjIzLDE3ICsy
MjUsMTIgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQo
KQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KG51
bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwg
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJl
YXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAg
ZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggMGYxZjkyNzlkZmJiZWEyYTA4ZjY0ODAxMjJhYTYy
NWIzZWRkN2FiOS4uNmM5ZDIyNzUxYmJhOGIwMjA3M2I1YTI5OGIzYzY3N2I3NzkyMWVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
CkBAIC00NCwxNCArNDQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFz
ZTsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7Ci1jbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJ
bnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFi
YXNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGEwODY5NzlhMzhjZmY2MzdhMmExNTAwMDEyZTk5
ZjNlMDg5NTIwNjIuLjVjYjlhZGE5YWQ0YTk3MzAwMDJmYTU3ZWU4Y2UxZjgxNDZmNjEzNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcApAQCAtNTY2LDkgKzU2NiwxMCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlCiAK
LUluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIm
IGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0g
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKK0luc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJB
Z2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiks
IGNvbnRleHQpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVk
U2NyaXB0TWFuYWdlcikKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJbmRl
eGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQpAQCAtNTc3LDE1ICs1
NzgsMTIgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBFcnJv
clN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCA4NGE5OGZk
YzQ4YmQwMDkxM2YzNTMwOTE4ZjI0ODAzNzRkN2NmY2U1Li5iNDQ3ODEwY2M5OTkxYWM0YWFkNTQ0
NWU2MDg1MDU5YmZmOTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAg
ICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAt
NjYsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJp
bmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9yZU5hbWUsIFJl
ZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQq
IG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhOGM1YmFkOGIz
YTQxZGFlZTFmMjIyMjRhNGEyOWM3OTA0NTI0NGE0Li5kYmQyNDdmYmExMDMzNTc5MmMxNWQ3ZGZl
ZGViYTMzYmZmYTA5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKElu
c3RydW1lbnRpbmdBZ2VuCiAgICAgaWYgKHBhZ2VBZ2VudCkKICAgICAgICAgcGFnZUFnZW50LT5k
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoJmZyYW1lLCB3b3JsZCk7CiAgICAgaWYgKFBhZ2VE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVi
dWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgIGlmIChwYWdlQWdlbnQgJiYgJndvcmxkID09ICZtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSAmJiAmZnJhbWUgPT0gcGFnZUFnZW50LT5tYWluRnJhbWUoKSkK
KyAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpICYmICZmcmFtZSA9PSAmcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAgICAgICAgICAgIGRl
YnVnZ2VyQWdlbnQtPmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAgfQogICAg
IGlmIChQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5wYWdlUnVudGltZUFnZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDdmYmRmYTQ2YmYwYjRjZjQy
ODY4NWIxOWI1NzMxMWI0OTRiYjZhMzIuLjY0MTVhZmQ5YTcxOTQ5MWY1NDY1ODQ5MDdkMzExYjIy
YWZhYWNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDYsOCArNDYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVy
VHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBjb250ZXh0KQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVy
VHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KIApAQCAtNTYs
MTcgKzU4LDEyIEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBm
cm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCiB2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotCiAgICAgRXJyb3JT
dHJpbmcgdW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggZmEyNDAxNTg0
N2JmMTRjZGU3YTEwMTI2ZWM5NDhmOWFjMmY3NDc2NS4uMTBkZWRmMjE5NWU1ZmRjODFiZmVlMmI1
ZmE5MGQ4ZjNlZjQzMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTQwLDE0ICs0MCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci0KIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYpOworICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVj
NTJmNDc3Nzg0MWIxNGE1Y2QwYTA1ZDQ1NjE3MDMyNzdkZTdlYjEuLmRiNGUxNWU2YTA0OTRmZWE4
MThmYjAzOWI2YzVhOGM4ZDU4NTYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMjYsMjUgKzMyNiwyMiBAQCBJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRS
ZXNvdXJjZVR5cGVKcwogICAgIHJldHVybiByZXNvdXJjZVR5cGVKc29uKGNhY2hlZFJlc291cmNl
VHlwZShjYWNoZWRSZXNvdXJjZSkpOwogfQogCi1JbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3Rv
clBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdl
KiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3Zlcmxh
eSkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKLSAgICAsIG1fcGFnZShwYWdlKQorSW5zcGVjdG9yUGFnZUFnZW50OjpJ
bnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xp
ZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCiB7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwg
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlBh
Z2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBF
cnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCkBAIC0zNjYsOCArMzYzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyYpCiAgICAgc3RvcHdhdGNoLT5yZXNldCgpOwogICAgIHN0b3B3YXRj
aC0+c3RhcnQoKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkKLSAgICAg
ICAgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkID0gIWZyYW1lLT5zZXR0aW5ncygp
LmlzU2NyaXB0RW5hYmxlZCgpOworICAgIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxl
ZCA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpOwogfQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC00MDksMTMgKzQw
NSwxMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNo
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCiB7CiAgICAg
bV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZh
bHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogIiI7Ci0gICAg
bV9wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNoZSA/
ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOworICAgIG1fcGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNoZSA/ICpvcHRpb25hbElnbm9yZUNhY2hl
IDogZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBp
bmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UubWFp
bkZyYW1lKCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KGZyYW1lLmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVS
ZXF1ZXN0KGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVz
dCwgIl9zZWxmIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5
YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1l
T3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
OjpSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTUwMyw3ICs0OTksNyBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcgogICAgIC8vIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdHJ1ZS9mYWxzZSB2YWx1
ZS4KICAgICBib29sIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGZhbHNlOwogCi0gICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgICAgIGZvciAoYXV0
byYgdXJsIDogYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKSkgewpAQCAtNTM1LDEzICs1
MzEsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNv
bnN0IFN0cmluZyYgdXJsKQogewogICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRv
Y3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmplY3QpCiB7Ci0gICAgb2JqZWN0
ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIG9i
amVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKCZtX3BhZ2UubWFpbkZyYW1lKCkpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwg
U3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQpAQCAtNjE3LDcgKzYxMyw3IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwogICAgIEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVz
OjpjcmVhdGVTZWFyY2hSZWdleCh0ZXh0LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKIAotICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnQ7CiAKICAgICAgICAgZm9yIChhdXRv
KiBjYWNoZWRSZXNvdXJjZSA6IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKSkgewpAQCAt
NjY1LDExICs2NjEsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0
aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQYWdlQgogewogICAgIGJvb2wgZGlz
YWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKICAgICBib29sIGRpc2FibGVkSW5TZXR0
aW5ncyA9IGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIGlmIChm
cmFtZSkgewotICAgICAgICBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9ICFmcmFtZS0+c2Ny
aXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpOwotICAgICAg
ICBkaXNhYmxlZEluU2V0dGluZ3MgPSAhZnJhbWUtPnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVk
KCk7Ci0gICAgfQorICAgIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gbWFpbkZyYW1lKCku
c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpOworICAg
IGRpc2FibGVkSW5TZXR0aW5ncyA9ICFtYWluRnJhbWUoKS5zZXR0aW5ncygpLmlzU2NyaXB0RW5h
YmxlZCgpOwogCiAgICAgaWYgKCFkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlcikgewogICAgICAg
ICAqc3RhdHVzID0gSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1
bHQ6OkFsbG93ZWQ7CkBAIC02ODQsMTEgKzY3Nyw4IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlBhZ2VC
CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChF
cnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCiB7Ci0gICAgaWYgKCFtYWluRnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlvbiA9IHRy
dWU7Ci0gICAgbWFpbkZyYW1lKCktPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCghdmFsdWUp
OworICAgIG1haW5GcmFtZSgpLnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCghdmFsdWUpOwog
ICAgIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb24gPSBmYWxzZTsKIH0KIApAQCAt
Njk3LDkgKzY4Nyw2IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29yCiAgICAgaWYgKCZ3b3JsZCAh
PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9mcm9udGVuZERpc3BhdGNoZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX3Njcmlw
dHNUb0V2YWx1YXRlT25Mb2FkKSB7CiAgICAgICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDog
Km1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpIHsKICAgICAgICAgICAgIFN0cmluZyBzY3JpcHRU
ZXh0OwpAQCAtNzQyLDEwICs3MjksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVE
ZXRhY2hlZChGcmFtZSYgZnJhbWUpCiAgICAgfQogfQogCi1GcmFtZSogSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluRnJhbWUoKQorTWFpbkZyYW1lJiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5GcmFt
ZSgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIEZyYW1lJgotICAgIHJl
dHVybiAmbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgp
OwogfQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCkKQEAgLTc4NSw3ICs3NzEsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50
Ojpsb2FkZXJJZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiBGcmFtZSogSW5zcGVjdG9yUGFn
ZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgICAgIGlmIChkb2N1bWVudE9yaWdpbi0+dG9SYXdTdHJpbmcoKSA9PSBvcmlnaW5SYXdT
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CkBAIC05MDgsNiArODk0LDggQEAgdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogCiBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6
YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CisgICAgQVNTRVJUX0FSRyhmcmFt
ZSwgZnJhbWUpOworCiAgICAgYXV0byBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoZnJhbWVJZChmcmFtZSkpCiAg
ICAgICAgIC5zZXRMb2FkZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSkpCkBAIC05MjksNiArOTE3LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnIKIAogUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsKKyAgICBB
U1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CisKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CiAg
ICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3Jl
YXRlKCkKQEAgLTk2Niw4ICs5NTYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplYwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVG91Y2hF
dmVudEVtdWxhdGlvbkluUGFnZShib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1haW5GcmFtZSgp
KQotICAgICAgICBtYWluRnJhbWUoKS0+c2V0dGluZ3MoKS5zZXRUb3VjaEV2ZW50RW11bGF0aW9u
RW5hYmxlZChlbmFibGVkKTsKKyAgICBtYWluRnJhbWUoKS5zZXR0aW5ncygpLnNldFRvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkKGVuYWJsZWQpOwogfQogI2VuZGlmCiAKQEAgLTk4OCw3ICs5Nzcs
NyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZW11bGF0
ZWRNZWRpYSA9IG1lZGlhOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgICAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CkBAIC0xMDAzLDE5ICs5OTIsMTggQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYShTdHJpbmcmIG1lZGlhKQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0
cmluZyYsIGJvb2wqIG91dFBhcmFtKQogewotICAgICpvdXRQYXJhbSA9IG1fcGFnZS0+c2V0dGlu
Z3MoKS5zaG93RGVidWdCb3JkZXJzKCkgfHwgbV9wYWdlLT5zZXR0aW5ncygpLnNob3dSZXBhaW50
Q291bnRlcigpOworICAgICpvdXRQYXJhbSA9IG1fcGFnZS5zZXR0aW5ncygpLnNob3dEZWJ1Z0Jv
cmRlcnMoKSB8fCBtX3BhZ2Uuc2V0dGluZ3MoKS5zaG93UmVwYWludENvdW50ZXIoKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJy
b3JTdHJpbmcmLCBib29sIHZpc2libGUpCiB7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNo
b3dEZWJ1Z0JvcmRlcnModmlzaWJsZSk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNob3dS
ZXBhaW50Q291bnRlcih2aXNpYmxlKTsKKyAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXRTaG93RGVi
dWdCb3JkZXJzKHZpc2libGUpOworICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldFNob3dSZXBhaW50
Q291bnRlcih2aXNpYmxlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFN0cmluZyogb3V0RGF0
YVVSTCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBBU1NFUlQoZnJh
bWUpOworICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwogCiAgICAgSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCk7CiAgICAgQVNTRVJUKGRvbUFnZW50KTsKQEAgLTEwMjMsNyArMTAxMSw3IEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBTdHJpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gV2ViQ29yZTo6c25hcHNob3RO
b2RlKCpmcmFtZSwgKm5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdE5vZGUoZnJhbWUsICpub2RlKTsKICAgICBpZiAoIXNu
YXBzaG90KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qg
Y2FwdHVyZSBzbmFwc2hvdCIpOwogICAgICAgICByZXR1cm47CkBAIC0xMDM0LDE1ICsxMDIyLDE0
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
bmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtLCBTdHJpbmcq
IG91dERhdGFVUkwpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgQVNT
RVJUKGZyYW1lKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKIAogICAgIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZTsKICAgICBpZiAoY29vcmRp
bmF0ZVN5c3RlbSA9PSAiVmlld3BvcnQiKQogICAgICAgICBvcHRpb25zIHw9IFNuYXBzaG90T3B0
aW9uc0luVmlld0Nvb3JkaW5hdGVzOwogCiAgICAgSW50UmVjdCByZWN0YW5nbGUoeCwgeSwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9
IHNuYXBzaG90RnJhbWVSZWN0KCpmcmFtZSwgcmVjdGFuZ2xlLCBvcHRpb25zKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RGcmFtZVJlY3QoZnJh
bWUsIHJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoIXNuYXBzaG90KSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCIp
OwpAQCAtMTA2MCwxNCArMTA0Nyw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpoYW5kbGVK
YXZhU2NyaXB0RGlhbG9nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBhCiAKIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3Ry
aW5nKiBkYXRhKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIGlmICgh
ZnJhbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIG1haW4gZnJh
bWUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkg
JiYgVVNFKENGKQotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGZyYW1lKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUo
KTsKKyAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZSgmZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2ZSBmb3IgbWFp
biBmcmFtZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZTlhZDg2NmJhZWMwNDEyNTI2YTBhZGM2YWI1MGIz
NmI1YWZmNWRhMy4uMDVlZWZhZjJlMzEwMjZmNWU5MTk4OWZjNGViZTYzMWIzZTgwNWNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNTYs
NyArNTYsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9y
Q2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CitjbGFzcyBNYWluRnJhbWU7CiBjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVu
ZGVyT2JqZWN0OwpAQCAtNjksNyArNjksNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYQogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMmLCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yT3ZlcmxheSop
OworICAgIEluc3BlY3RvclBhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yQ2xp
ZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOwogCiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewogICAg
ICAgICBEb2N1bWVudFJlc291cmNlLApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKLSAgICBQ
YWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgRnJhbWUqIG1haW5GcmFtZSgpOwor
ICAgIFBhZ2UmIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KKyAgICBNYWluRnJhbWUmIG1haW5G
cmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1l
Rm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
ZnJhbWVJZChGcmFtZSopOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogCi0gICAgUGFnZSogbV9wYWdlIHsgbnVsbHB0ciB9OworICAg
IFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXgg
MzQ5MGU3NWMyMjBlYzc3YmQxNmNkZTZhOWYyZTE5ODdmNTY1ODg2ZC4uOGJkYTA5ZGYwYmQ2ZTRk
YjliYjk1NzZlZDNiNjlmMTRmYTQ5MTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCkBAIC0xNTYsOSArMTU2LDExIEBAIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3JTCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLUluc3BlY3RvclJl
cGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlJlcGxheSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQotICAgICwgbV9wYWdlKCpwYWdlQWdlbnQtPnBhZ2UoKSkKK0luc3BlY3RvclJlcGxheUFn
ZW50OjpJbnNwZWN0b3JSZXBsYXlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUmVwbGF5IiksIGNvbnRleHQpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UmVw
bGF5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV9wYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KIApAQCAtMTczLDExICsxNzUsOCBAQCBXZWJDb3JlOjpT
ZXNzaW9uU3RhdGUgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lvblN0YXRlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmcm9udGVuZFJvdXRlciwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlcGxheUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3I6OlJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwotCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlcGxheUFnZW50
KHRoaXMpOwogICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBXZWJDb3JlOjpTZXNzaW9uU3Rh
dGU6OkluYWN0aXZlKTsKIApAQCAtMTkyLDkgKzE5MSw2IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyCiAKIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0K
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQobnVsbHB0
cik7CiAKICAgICAvLyBEcm9wIHJlZmVyZW5jZXMgdG8gYWxsIHNlc3Npb25zIGFuZCBzZWdtZW50
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgK
aW5kZXggZjdiZWE2ZmRhNTViNjBkODhlMDNlOTM3NTAxZmJkNjMyYWM4ZWY4Yi4uODMzZWVjZTAx
MWM1ZjkyMTAyNDg4MDcxODBkYWY4Nzg4NWZkOGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVj
dG9yUGFnZUFnZW50OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBj
bGFzcyBSZXBsYXlTZXNzaW9uOwogY2xhc3MgUmVwbGF5U2Vzc2lvblNlZ21lbnQ7CkBAIC02Miw3
ICs2MSw3IEBAIGNsYXNzIEluc3BlY3RvclJlcGxheUFnZW50IGZpbmFsCiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUmVwbGF5
QWdlbnQpOwogcHVibGljOgotICAgIEluc3BlY3RvclJlcGxheUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JSZXBsYXlBZ2VudChQ
YWdlQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5QWdlbnQoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcAppbmRleCBlMjU1MWEyY2JhMzZjNDk5NTM0YTFhNjAzMmVlYzBiMTJkZjcwNDEzLi4y
MTAzZTkxYzc5ZmM4N2JjYjdmZTQ4MzNlMTIyODg4Yzc1ZjNmYTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xNjIs
MjUgKzE2MiwyMiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi1JbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
Ik5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvclJlc291cmNlQWdlbnQ6
Okluc3BlY3RvclJlc291cmNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGNvbnRleHQpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29y
a0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEo
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcios
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKLQogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CkBA
IC02MDIsOCArNTk5LDYgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJy
b3JTdHJpbmcmKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZSgpCiB7Ci0g
ICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgcmV0dXJuOwogICAgIG1fZW5h
YmxlZCA9IHRydWU7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlc291
cmNlQWdlbnQodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaAppbmRleCBmMDgyNGUyOGEyZmNmMzFiODIzNTcxNDdmYTc0MDE2
MzRlOGY0NGM5Li5kMjVhN2MwMjg0MjExYzE2NzZlMDlmZTFhNTUwMGY4MjA4ZGYxMTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgK
QEAgLTU1LDcgKzU1LDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwotY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CkBAIC03Niw3ICs3NSw3IEBAIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3Rv
clBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCopOworICAgIEluc3BlY3RvclJlc291cmNlQWdl
bnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50
Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4
IGIwOWMxMTU5YjY0MTA4OTI3MTJhZWMzZGU2ZWM2MzcxYjE5MTlhMWQuLmE5ZTE5OGIzNmU0ZDY2
MjY5Yjc5Y2ZkZDViNzk1ZGZhZTk4MmUxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTkwLDExICs5MCw4IEBAIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRSb3V0ZXIsIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKLQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVy
KQpAQCAtMTAzLDkgKzEwMCw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0CiAKIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IG51bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
bnVsbHB0cik7CiAKICAgICBpZiAocmVhc29uICE9IEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKSB7CkBAIC0xODUsOCArMTc5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0
YWNrRGVwdGgpCiAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsID0gMTsKICNlbmRpZgogCi0gICAg
aWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
cmVjb3JkaW5nU3RhcnRlZCh0aW1lc3RhbXAoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlY29yZGluZ1N0YXJ0ZWQodGltZXN0YW1wKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCkBAIC0yMTQsOCArMjA3LDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwog
ICAgIG1fc3RhcnRlZENvbXBvc2l0ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJvbnRlbmREaXNw
YXRjaGVyKQotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVjb3JkaW5nU3RvcHBlZCh0
aW1lc3RhbXAoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlY29yZGluZ1N0b3BwZWQo
dGltZXN0YW1wKCkpOwogfQogCiBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0
YW1wKCkKQEAgLTczMCw4ICs3MjIsMTAgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiAgICAgfQog
fQogCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQot
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGNvbnRleHQpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGlt
ZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faW5zcGVjdG9y
VHlwZSh0eXBlKQpAQCAtNzQ4LDkgKzc0Miw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6YXBwZW5kUmVjb3JkKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSwgVGltZWxpCiAK
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2VuZEV2ZW50KFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiYgZXZlbnQpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgLy8gRklYTUU6IHJ1bnRpbWVDYXN0IGlzIGEgaGFjay4gV2UgZG8g
aXQgYmVjYXVzZSB3ZSBjYW4ndCBidWlsZCBUaW1lbGluZUV2ZW50IGRpcmVjdGx5IG5vdy4KICAg
ICBhdXRvIHJlY29yZENoZWNrZWQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNhc3QoV1RGOjptb3ZlKGV2ZW50KSk7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV2ZW50UmVjb3JkZWQoV1RGOjptb3ZlKHJlY29y
ZENoZWNrZWQpKTsKQEAgLTc4NCw5ICs3NzUsNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdAog
ICAgIHF1YWQtPnNldFA0KGZyYW1lVmlldy5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBv
aW50KGFic29sdXRlLnA0KCkpKSk7CiB9CiAKLVBhZ2UqIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnBhZ2UoKQotewotICAgIHJldHVybiBtX3BhZ2VBZ2VudCA/IG1fcGFnZUFnZW50LT5wYWdlKCkg
OiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA1YTkwYjM3MGJm
M2U1MTNmYmRmYjVkM2QzMjAxYzQ3ZjUwYWI5MDMxLi4xY2JjZTU1ZjhlZDhjZDRkNDlhMDA5ZGUy
ZTBmMDdlNTdjN2Y1OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRmxvYXRRdWFkOwog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdl
QWdlbnQ7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IFVSTDsKIGNsYXNzIFBhZ2U7CkBAIC0xMTgsNyArMTE3LDcgQEAgY2xhc3MgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCBmaW5hbAogcHVibGljOgogICAgIGVudW0gSW5zcGVjdG9yVHlwZSB7IFBhZ2VJ
bnNwZWN0b3IsIFdvcmtlckluc3BlY3RvciB9OwogCi0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlw
ZSwgSW5zcGVjdG9yQ2xpZW50Kik7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChXZWJBZ2Vu
dENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNwZWN0b3JD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC0y
MzAsNyArMjI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAog
ICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91
dFJlY3QmLCBGbG9hdFF1YWQqKTsKLSAgICBQYWdlKiBwYWdlKCk7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaAppbmRleCA0Y2UwYzdiYTQ3Njg2M2U0ZDYzYWY0MzI2MTZi
MmQ2NDliMTE2NDNmLi43NDM0MjkzNDAyOTJlNWJmMDM3N2EyYTlkYmMyN2UzYjAwYWQ3ZDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CkBAIC0zMywxMiArMzMsNDUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKK2NsYXNzIFBhZ2U7CitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKKwor
Ly8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNwZWN0b3IgbmFtZXNwYWNlIHdoZW4gcmVtYWluaW5n
IGFnZW50cyBtb3ZlLgorc3RydWN0IFdlYkFnZW50Q29udGV4dCA6IHB1YmxpYyBJbnNwZWN0b3I6
OkFnZW50Q29udGV4dCB7CisgICAgV2ViQWdlbnRDb250ZXh0KEFnZW50Q29udGV4dCYgY29udGV4
dCwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAgOiBB
Z2VudENvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBpbnN0cnVtZW50aW5nQWdlbnRzKGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgeworICAgIH0KKworICAgIEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHM7Cit9OworCitzdHJ1Y3QgUGFnZUFnZW50Q29udGV4dCA6IHB1
YmxpYyBXZWJBZ2VudENvbnRleHQgeworICAgIFBhZ2VBZ2VudENvbnRleHQoV2ViQWdlbnRDb250
ZXh0JiBjb250ZXh0LCBQYWdlJiBpbnNwZWN0ZWRQYWdlKQorICAgICAgICA6IFdlYkFnZW50Q29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIGluc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKKyAg
ICB7CisgICAgfQorCisgICAgUGFnZSYgaW5zcGVjdGVkUGFnZTsKK307CisKK3N0cnVjdCBXb3Jr
ZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKKyAgICBXb3JrZXJBZ2Vu
dENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCisgICAgICAgIDogV2ViQWdlbnRDb250ZXh0KGNvbnRleHQpCisgICAg
ICAgICwgd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCisgICAgeworICAgIH0K
KworICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZTsKK307CiAKIGNsYXNz
IEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFz
ZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICBJbnNwZWN0
b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgICAgIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UobmFtZSkKLSAgICAgICAg
LCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAgLCBt
X2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IGUwOGI3YTdjODVmNDY1MTlkYTMyMGE0M2E2Y2JiNWNkNDg3NDQ1OWQu
LjA1MWNhYzRlMWRjYTE4NDgyY2IzMmUwYjdmYmI5MWViYjAzYjI2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTAxLDgg
KzEwMSwxMCBAQCBwcml2YXRlOgogCiBpbnQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZy
b250ZW5kQ2hhbm5lbDo6c19uZXh0SWQgPSAxOwogCi1JbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5z
cGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cykKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFn
ZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIldvcmtlciIpLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9y
V29ya2VyQWdlbnQodGhpcyk7CiB9CkBAIC0xMTIsMTAgKzExNCw4IEBAIEluc3BlY3Rvcldvcmtl
ckFnZW50Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJv
dXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6V29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKQEAgLTEyMywxNiArMTIzLDExIEBAIHZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlCiAgICAgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQgPSBm
YWxzZTsKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwotCi0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUoRXJy
b3JTdHJpbmcmKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgaWYgKCFtX2Zyb250ZW5k
RGlzcGF0Y2hlcikKLSAgICAgICAgcmV0dXJuOwogCiAgICAgY3JlYXRlV29ya2VyRnJvbnRlbmRD
aGFubmVsc0ZvckV4aXN0aW5nV29ya2VycygpOwogfQpAQCAtMTQwLDggKzEzNSw2IEBAIHZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB2b2lkIEluc3BlY3Rv
cldvcmtlckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQgPSBm
YWxzZTsKLSAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQotICAgICAgICByZXR1cm47CiAK
ICAgICBkZXN0cm95V29ya2VyRnJvbnRlbmRDaGFubmVscygpOwogfQpAQCAtMTkxLDcgKzE4NCw3
IEBAIGJvb2wgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2Vy
T25TdGFydCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRTdGFydFdvcmtl
ckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJv
eHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fZGVkaWNhdGVkV29ya2Vycy5zZXQod29ya2Vy
R2xvYmFsU2NvcGVQcm94eSwgdXJsLnN0cmluZygpKTsKLSAgICBpZiAobV9mcm9udGVuZERpc3Bh
dGNoZXIgJiYgbV9lbmFibGVkKQorICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAgIGNyZWF0ZVdv
cmtlckZyb250ZW5kQ2hhbm5lbCh3b3JrZXJHbG9iYWxTY29wZVByb3h5LCB1cmwuc3RyaW5nKCkp
OwogfQogCkBAIC0yMjgsNyArMjIxLDYgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3Jl
YXRlV29ya2VyRnJvbnRlbmRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHcKICAgICBX
b3JrZXJGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwgPSBuZXcgV29ya2VyRnJvbnRlbmRDaGFubmVs
KG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZVByb3h5KTsKICAg
ICBtX2lkVG9DaGFubmVsLnNldChjaGFubmVsLT5pZCgpLCBjaGFubmVsKTsKIAotICAgIEFTU0VS
VChtX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAgICAgaWYgKG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRX
b3JrZXJPblN0YXJ0KQogICAgICAgICBjaGFubmVsLT5jb25uZWN0VG9Xb3JrZXJHbG9iYWxTY29w
ZSgpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53b3JrZXJDcmVhdGVkKGNoYW5uZWwtPmlk
KCksIHVybCwgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCBmY2JlZTBk
MWE0NTQwMzkwYzBmZjA3YWJkNjY1MTg5MWJhZTIyZjgwLi5kMmY1Y2U3MDAyYmY4ODg2YjY1MTIx
YWU1ZGNlN2JhODM0MjUyZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBXb3JrZXJGcm9udGVu
ZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiBjbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OwogCkBA
IC01Miw3ICs1MSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVj
dG9yV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JXb3JrZXJB
Z2VudChXZWJBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JXb3JrZXJBZ2Vu
dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3Bw
CmluZGV4IDY3MTk3NDczMTIwODJhNzBjNjRjNmEyZTI4MmQ1MzZmYWVmZWIwZTcuLmYyNGM2NDg3
NWViOWM5NzgyZDM2NGYyZDc2YTg4Y2NkZWFlMDVhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQxLDggKzQxLDggQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29uc29sZUFn
ZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBXZWJDb25z
b2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorUGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNv
bnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCkKKyAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnNwZWN0
b3JET01BZ2VudChkb21BZ2VudCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oCmluZGV4IGIxMzU0MDRhZTRmN2EyNTM1MmEwNDhhMWM1ZDVhNjdmNDM1
YjRmNjkuLjRjNzU4ZjBjOWRjNjM1NjliYjI5MTA3ZDQ5YzA5MmYyMzU2YTRkODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtMzIsNiArMzIsNyBA
QAogI2lmbmRlZiBQYWdlQ29uc29sZUFnZW50X2gKICNkZWZpbmUgUGFnZUNvbnNvbGVBZ2VudF9o
CiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJXZWJDb25z
b2xlQWdlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArNDMsNyBAQCBjbGFz
cyBQYWdlQ29uc29sZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkNvbnNvbGVBZ2VudCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXImLCBJbnNwZWN0b3JET01BZ2VudCopOworICAgIFBhZ2VDb25zb2xlQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdl
Q29uc29sZUFnZW50KCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhZTNiMTQ1YzM0NjUzOTA2M2Q3MjQxNGJk
Y2I5ZGEwZjI1ZmY4YmY1Li4xODkyYWUzNzdkYWJlOTc3MjkwOGM0MmU3ZjlhM2I0NjgwYTg4ZjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
YWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgpA
QCAtNTAsMTEgKzUxLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluamVj
dGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
SW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKLSAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorUGFnZURlYnVnZ2VyQWdlbnQ6
OlBhZ2VEZWJ1Z2dlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQorICAgIDogV2Vi
RGVidWdnZXJBZ2VudChjb250ZXh0KQorICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFn
ZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5
KQotICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcigqcGFnZUFnZW50LT5wYWdlKCkpCisgICAgLCBt
X3NjcmlwdERlYnVnU2VydmVyKG1fcGFnZSkKIHsKIH0KIApAQCAtNzYsNyArNzgsNyBAQCBTdHJp
bmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQm
IHNjcmlwdCkKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3Vy
Y2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkp
OwogCiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewotICAgICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2UobV9wYWdlQWdlbnQt
Pm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CisgICAgICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSgm
bV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CiAg
ICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgU3RyaW5nIHNvdXJjZU1hcEhlYWRl
ciA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3VyY2VNYXBIVFRQSGVh
ZGVyKTsKICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlzRW1wdHkoKSkKQEAgLTEx
OCwxMyArMTIwLDEzIEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQog
CiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlQWdlbnQtPnBh
Z2UoKS0+Y29uc29sZSgpLmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgU2NyaXB0Q2FsbFN0
YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgbV9wYWdlQWdlbnQtPnBhZ2Uo
KS5jb25zb2xlKCkuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpM
b2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgUGFnZURl
YnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmICghZXhlY3V0aW9u
Q29udGV4dElkKSB7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5X
b3JsZEV4ZWNTdGF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOworICAgICAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1fcGFnZUFnZW50LT5t
YWluRnJhbWUoKSk7CiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IDc1YWYyOGU0OWY3OWViNzA4YzA0NDM3
NmM4OWZlN2JiM2M4YmZlYjUuLmJhZWUyYmFhOTMzNDE4ZWZmY2YxMGRmNTk2YmM0YTgxNmY2MjU0
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBA
IC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yT3Zl
cmxheTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyOwogCkBAIC00Nyw3
ICs0Niw3IEBAIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIFdlYkRlYnVn
Z2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlRGVidWdnZXJB
Z2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYsIEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgUGFnZURl
YnVnZ2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYsIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3Bl
Y3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVidWdnZXJBZ2VudCgpIHsgfQogCiAg
ICAgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwpAQCAtNzEsOCArNzAsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJ
ZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CiAKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQq
IG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OworICAgIFBhZ2UmIG1fcGFnZTsKIAorICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVy
bGF5IHsgbnVsbHB0ciB9OwogICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVn
U2VydmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50
LmNwcAppbmRleCA5YWVkNzEwMGQzMDkxYmU1NjMyYzM4NWEwOWRjZTg2ZDkwMTI4NjVjLi4zMGUx
YTFlOWVmN2NmOThmMWM3NDZmZjc3ZGZiZjlkNjVmOWVlODE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01MywyNCArNTMsMjEgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlUnVu
dGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCkKLSAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitQ
YWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRl
eHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIDogSW5zcGVjdG9yUnVudGlt
ZUFnZW50KGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UnVudGltZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UocGFn
ZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CiB9CiAK
LXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZFJvdXRlcik7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwot
CiAgICAgU3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiAKQEAgLTEwNiw3ICsx
MDMsNiBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQo
RnJhbWUmIGZyYW1lKQogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogICAgIFN0cmluZyBmcmFtZUlkID0gbV9w
YWdlQWdlbnQtPmZyYW1lSWQoJmZyYW1lKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJmZyYW1lKTsKICAgICBub3RpZnlDb250ZXh0Q3JlYXRl
ZChmcmFtZUlkLCBzY3JpcHRTdGF0ZSwgbnVsbHB0ciwgdHJ1ZSk7CkBAIC0xMjAsNyArMTE2LDcg
QEAgSlNDOjpWTSYgUGFnZVJ1bnRpbWVBZ2VudDo6Z2xvYmFsVk0oKQogSW5qZWN0ZWRTY3JpcHQg
UGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVj
dXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0g
bWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2lu
c3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQg
PSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7
CiAgICAgICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBj
b250ZXh0IG5vdCBmb3VuZC4iKTsKQEAgLTE0Niw3ICsxNDIsNyBAQCB2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogdm9pZCBQYWdlUnVudGltZUFnZW50OjpyZXBvcnRFeGVj
dXRpb25Db250ZXh0Q3JlYXRpb24oKQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVj
U3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiBpc29sYXRlZENvbnRleHRzOwotICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggM2U0
YmVkZjdiN2ZjOWE0YWUxZjEzOGRmODJhMmYzYzljMDA2M2MzNC4uYjc5MGU3MDEwMWRlMTIxODlk
YjVmYjEzMDRhZjFmYmU2NDgxNjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaWZuZGVmIFBhZ2VSdW50aW1lQWdl
bnRfaAogI2RlZmluZSBQYWdlUnVudGltZUFnZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3Bh
dGNoZXJzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaD4KIApAQCAtNTQsNyArNTUsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNs
YXNzIFBhZ2VSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JS
dW50aW1lQWdlbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBQYWdl
KiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgUGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRD
b250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVB
Z2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwpAQCAtNzcsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogCi0gICAgUGFnZSogbV9pbnNwZWN0
ZWRQYWdlOworICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKIAogICAgIGJvb2wgbV9tYWluV29y
bGRDb250ZXh0Q3JlYXRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA5YjAwZjJmZGVhM2ZiOTU3OTM2YzJlMjMzNzAz
NzZlZTk4NmZjNDA0Li41ZWNmZDdmOGUwOGU5OTYxNGNhZGRlZTNhMTJlZmUyNmI1M2QyZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNDEs
OCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdlYkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0
TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQ29uc29sZUFn
ZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1dlYkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFn
ZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvckNvbnNvbGVBZ2VudChj
b250ZXh0KQogewogfQogCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50Ojpk
aWRGaW5pc2hYSFJMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
CiAgICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgp
LmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
ZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQpIHsKKyAgICBpZiAo
bV9tb25pdG9yaW5nWEhSRW5hYmxlZCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJYSFIg
ZmluaXNoZWQgbG9hZGluZzogXCIiICsgdXJsICsgIlwiLiI7CiAgICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwg
c2VuZFVSTCwgc2VuZExpbmVOdW1iZXIsIHNlbmRDb2x1bW5OdW1iZXIsIG51bGxwdHIsIHJlcXVl
c3RJZGVudGlmaWVyKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNv
bGVBZ2VudC5oCmluZGV4IDI5MmY5ZDQzMzE2NWViYjg3MzQ1NzFlYTkwOTVhY2IyODc4OGQyYTUu
LjE4NzgwMzM1OWEzZmQ0ZTQ5MDE3NGQ4MDg2ZmMwYzYzOWFkZjliYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKQEAgLTMzLDE0ICszMywxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYp
OworICAgIFdlYkNvbnNvbGVBZ2VudChJbnNwZWN0b3I6OkFnZW50Q29udGV4dCYpOwogICAgIHZp
cnR1YWwgfldlYkNvbnNvbGVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldE1vbml0
b3JpbmdYSFJFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCA0YjZhZmY4ZDgwOTdiYmJiNzg4MDc2N2VmNTBlMjU5YTQxMDM2NGI0Li5lNjY0OGU3NTdlY2I1
M2RkNDEyOWVkOGYwMjhmMzA0NWRjNzM3MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMiw5ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViRGVidWdnZXJBZ2VudDo6
V2ViRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCitXZWJEZWJ1Z2dlckFnZW50OjpX
ZWJEZWJ1Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoY29udGV4dCkKKyAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250
ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV2ViRGVidWdnZXJBZ2VudC5oCmluZGV4IGNjMGJiZGM3YmNlMTBmZGJjY2M2YjI2YTdlNTZk
YmM3OTFkM2MwZDIuLjIzMDE3NGQ5NWZiYTRjNmYwOTZiYmJlOWMzZWU0MWJlNTZhYTY2ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBXZWJEZWJ1Z2dlckFnZW50X2gKICNkZWZpbmUgV2ViRGVidWdnZXJB
Z2VudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDxp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzcsNyArMzgsNyBAQCBjbGFzcyBXZWJEZWJ1Z2dlckFnZW50IDogcHVibGlj
IEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgV2ViRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFu
YWdlciYsIEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBXZWJEZWJ1Z2dlckFnZW50KFdlYkFn
ZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfldlYkRlYnVnZ2VyQWdlbnQoKSB7IH0KIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNv
bGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50
LmNwcAppbmRleCA0YTdjODdiNWQzMmQyZGNlN2FlM2E2NTY2NTZmNzg3YmQ4MTIyYzYyLi4yNzE5
NDg2OGQ3NTZlZjA2OWU3Y2VkMTA4ZGY5MzdhMDE0YWZhNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtl
ckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogV2ViQ29uc29sZUFnZW50KGluamVjdGVk
U2NyaXB0TWFuYWdlcikKK1dvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdv
cmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29u
c29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50
LmgKaW5kZXggMjJmMjZkNzcyMmEzOTczZjhjNzEyMWQ3NDRiMjMzMjBmMDQ4ODcyZi4uYjI0ZTgz
MDhhMzJkNjlkM2VkMjYwZjIxY2M1MjNkYTRmZDY0OGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmbmRl
ZiBXb3JrZXJDb25zb2xlQWdlbnRfaAogI2RlZmluZSBXb3JrZXJDb25zb2xlQWdlbnRfaAogCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFn
ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDcgKzQxLDcgQEAgY2xhc3MgV29y
a2VyQ29uc29sZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkNvbnNvbGVBZ2VudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV29ya2VyQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyJik7CisgICAgV29ya2VyQ29uc29sZUFnZW50KFdvcmtlckFnZW50Q29udGV4
dCYpOwogICAgIHZpcnR1YWwgfldvcmtlckNvbnNvbGVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVh
bCBib29sIGlzV29ya2VyQWdlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggOGQxYjk1YmZkMDJmMWRlNzZlN2IyYTBhZmUzNzQ3NjY1ZTA2MGM0OS4uMDY0NGMwNWIyMjc5
ZjE0MTcyMmE2NGIzM2M5NGFlZmI1ZjYwNDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtODEsMjEgKzgxLDIxIEBAIHByaXZh
dGU6CiAKIGNvbnN0IGNoYXIqIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUg
PSAiZGVidWdnZXIiOwogCi1Xb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50
KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZSogaW5zcGVj
dGVkV29ya2VyR2xvYmFsU2NvcGUpCi0gICAgOiBXZWJEZWJ1Z2dlckFnZW50KGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2NyaXB0RGVidWdTZXJ2
ZXIoaW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUsIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVn
Z2VyVGFza01vZGUpCi0gICAgLCBtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKGluc3BlY3Rl
ZFdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJB
Z2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBXZWJEZWJ1Z2dlckFnZW50
KGNvbnRleHQpCisgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQud29ya2VyR2xvYmFs
U2NvcGUsIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpCisgICAgLCBtX2lu
c3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCiB7CiAg
ICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2sod29ya2VyRGVidWdnZXJBZ2VudHNN
dXRleCk7Ci0gICAgd29ya2VyRGVidWdnZXJBZ2VudHMoKS5zZXQoJmluc3BlY3RlZFdvcmtlckds
b2JhbFNjb3BlLT50aHJlYWQoKSwgdGhpcyk7CisgICAgd29ya2VyRGVidWdnZXJBZ2VudHMoKS5z
ZXQoJmNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCksIHRoaXMpOwogfQogCiBXb3Jr
ZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY0xvY2s+IGxvY2sod29ya2VyRGVidWdnZXJBZ2VudHNNdXRleCk7CiAKLSAg
ICBBU1NFUlQod29ya2VyRGVidWdnZXJBZ2VudHMoKS5jb250YWlucygmbV9pbnNwZWN0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkpKTsKLSAgICB3b3JrZXJEZWJ1Z2dlckFnZW50cygpLnJl
bW92ZSgmbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkpOworICAgIEFTU0VS
VCh3b3JrZXJEZWJ1Z2dlckFnZW50cygpLmNvbnRhaW5zKCZtX2luc3BlY3RlZFdvcmtlckdsb2Jh
bFNjb3BlLnRocmVhZCgpKSk7CisgICAgd29ya2VyRGVidWdnZXJBZ2VudHMoKS5yZW1vdmUoJm1f
aW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkpOwogfQogCiB2b2lkIFdvcmtlckRl
YnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMoV29ya2Vy
VGhyZWFkKiB0aHJlYWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFn
ZW50OjppbnRlcnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKFdvcmtlclRocmVhZCog
dGgKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayh3b3JrZXJEZWJ1Z2dlckFn
ZW50c011dGV4KTsKIAogICAgIGlmIChXb3JrZXJEZWJ1Z2dlckFnZW50KiBhZ2VudCA9IHdvcmtl
ckRlYnVnZ2VyQWdlbnRzKCkuZ2V0KHRocmVhZCkpCi0gICAgICAgIGFnZW50LT5tX3NjcmlwdERl
YnVnU2VydmVyLmludGVycnVwdEFuZFJ1blRhc2soc3RkOjptYWtlX3VuaXF1ZTxSdW5JbnNwZWN0
b3JDb21tYW5kc1Rhc2s+KHRocmVhZCwgYWdlbnQtPm1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2Nv
cGUpKTsKKyAgICAgICAgYWdlbnQtPm1fc2NyaXB0RGVidWdTZXJ2ZXIuaW50ZXJydXB0QW5kUnVu
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFJ1bkluc3BlY3RvckNvbW1hbmRzVGFzaz4odGhyZWFkLCAm
YWdlbnQtPm1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUpKTsKIH0KIAogdm9pZCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIHZvaWQgV29ya2VyRGVidWdnZXJB
Z2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UpOwor
ICAgIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlKTsKIH0KIAogV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXImIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkK
QEAgLTEzMyw3ICsxMzMsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojpp
bmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yLCBjbwogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV9pbnNwZWN0ZWRXb3JrZXJH
bG9iYWxTY29wZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKCZtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuaAppbmRleCA5NjFkYmUxODYyZmJhOGRmOTY0NmFjNmVjMDU1NmY2NmFmZjNkNWM3Li4z
ZTE3NjgxOTViZjY1MzIyZjgyODMwNzhlMWRkOWUxNmM3NTFmYjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgV29ya2VyRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJEZWJ1Z2dlckFnZW50
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgV29ya2VyRGVidWdnZXJBZ2VudChXb3JrZXJBZ2Vu
dENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCk7CiAKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVidWdnZXJUYXNrTW9kZTsKQEAgLTYxLDcgKzYxLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVi
dWdTZXJ2ZXI7Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFs
U2NvcGUgeyBudWxscHRyIH07CisgICAgV29ya2VyR2xvYmFsU2NvcGUmIG1faW5zcGVjdGVkV29y
a2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggYjE0MTNiODZkNjkyZjEzMDIyYjgyZjkyZTY4YzAzYjYyZmJjYjgzYi4uMmU1NGI3MGM0
NmUzZTYxOTM2OTM2YmQ1NDMzOWMwNDkyNjNiY2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODUsMTkg
Kzg1LDM2IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgICAgLCBtX2Zyb250ZW5kUm91dGVy
KEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7Ci0g
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2Vu
dD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEFn
ZW50Q29udGV4dCBiYXNlQ29udGV4dCA9IHsKKyAgICAgICAgKnRoaXMsCisgICAgICAgICptX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwKKyAgICAgICAgbV9mcm9udGVuZFJvdXRlci5nZXQoKSwKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKQorICAgIH07CisKKyAgICBXZWJBZ2VudENv
bnRleHQgd2ViQ29udGV4dCA9IHsKKyAgICAgICAgYmFzZUNvbnRleHQsCisgICAgICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKQorICAgIH07CisKKyAgICBXb3JrZXJBZ2VudENvbnRleHQg
d29ya2VyQ29udGV4dCA9IHsKKyAgICAgICAgd2ViQ29udGV4dCwKKyAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGUsCisgICAgfTsKKworICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1fcnVudGltZUFn
ZW50ID0gcnVudGltZUFnZW50LmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
V29ya2VyUnVudGltZUFnZW50KG1fcnVudGltZUFnZW50KTsKICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGOjptb3ZlKHJ1bnRpbWVBZ2VudCkpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29s
ZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdl
YkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50PigqbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIsIG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJndvcmtlckdsb2JhbFNj
b3BlKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRl
YnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1fcnVudGltZUFnZW50LT5zZXRTY3Jp
cHREZWJ1Z1NlcnZlcigmZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG51bGxwdHIsIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldv
cmtlckluc3BlY3RvciwgbnVsbHB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHdvcmtlckNvbnRleHQsIG51bGxwdHIsIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3BlY3RvciwgbnVsbHB0cikpOwogICAgIG1f
YWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoY29uc29sZUFnZW50KSk7CiAKICAgICBpZiAoQ29tbWFu
ZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+Y29tbWFuZExpbmVBUElIb3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggY2NkOGZlYWNlZDkxNmM0N2U3MTRmZjEzNjhk
NDFjNTU1MWM5Y2YyNC4uNTMwMzBlYWRmYmE3YWE1YTg1Nzk5YjgzZjQzODRiMDBlZWMyYjc2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
QEAgLTQ3LDIxICs0NywxOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KElu
amVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9iYWxT
Y29wZSogd29ya2VyR2xvYmFsU2NvcGUpCi0gICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSkKK1dvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFn
ZW50Q29udGV4dCYgY29udGV4dCkKKyAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0
KQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwg
bV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQogewogfQogCi12
b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1
bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KIAogdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0KICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKQEAgLTcyLDcgKzcwLDcgQEAg
SW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVycm9yLCBjb24KICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7
CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3Jr
ZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVj
dGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDk2ZDlhMGIxY2Q5ZWE0MzgwMjVjMWI4YTJk
MjBlZGQ2YjZlODRjOWQuLmY4MmNjYWYxOTNjMWM0ZTZjNzcyODJkNDBmNGZhYjUwMGJlYjMyYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpZm5kZWYgV29ya2VyUnVudGltZUFnZW50X2gKICNkZWZpbmUgV29y
a2VyUnVudGltZUFnZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgog
I2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQyLDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiBwdWJsaWM6Ci0gICAgV29ya2VyUnVudGltZUFn
ZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgV29ya2VyR2xvYmFsU2NvcGUq
KTsKKyAgICBXb3JrZXJSdW50aW1lQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0Jik7CiAgICAgdmly
dHVhbCB+V29ya2VyUnVudGltZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC01Niw5ICs1NywxMCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKKwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBX
b3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIAotICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9wYXVz
ZWQgeyBmYWxzZSB9OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>