<?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>123534</bug_id>
          
          <creation_ts>2013-10-30 15:25:29 -0700</creation_ts>
          <short_desc>Web Inspector: Remove basic uses of InspectorState from agents</short_desc>
          <delta_ts>2013-10-30 17:24:27 -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>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945202</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-30 15:25:29 -0700</bug_when>
    <thetext>All InspectorAgents are given an InspectorState object, but we don&apos;t use the restore functionality. So we should remove the added complexity.

However, many of the agent&apos;s store legitimate state on m_state. Convert all plain data type / String InspectorState uses to member variables.

Next step will be handling the few remaining InspectorObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945203</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-30 15:26:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/15356682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945216</commentid>
    <comment_count>2</comment_count>
      <attachid>215569</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-30 16:12:30 -0700</bug_when>
    <thetext>Created attachment 215569
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945245</commentid>
    <comment_count>3</comment_count>
      <attachid>215569</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-30 16:59:15 -0700</bug_when>
    <thetext>Comment on attachment 215569
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:70
&gt;  namespace DOMDebuggerAgentState {
&gt;  static const char eventListenerBreakpoints[] = &quot;eventListenerBreakpoints&quot;;
&gt; -static const char pauseOnAllXHRs[] = &quot;pauseOnAllXHRs&quot;;
&gt;  static const char xhrBreakpoints[] = &quot;xhrBreakpoints&quot;;
&gt;  }

Why can&apos;t the rest be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945257</commentid>
    <comment_count>4</comment_count>
      <attachid>215569</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-30 17:24:26 -0700</bug_when>
    <thetext>Comment on attachment 215569
[PATCH] Proposed Fix

Clearing flags on attachment: 215569

Committed r158331: &lt;http://trac.webkit.org/changeset/158331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945258</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-30 17:24:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215569</attachid>
            <date>2013-10-30 16:12:30 -0700</date>
            <delta_ts>2013-10-30 17:24:26 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>rm7.patch</filename>
            <type>text/plain</type>
            <size>69266</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTRjY2M4Yi4uN2M3NTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5
MyBAQAogMjAxMy0xMC0zMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBiYXNpYyB1c2VzIG9mIEluc3BlY3RvclN0
YXRlIGZyb20gYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6
SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OmVuYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdCk6CisgICAgICAgIEluc3Bl
Y3RvckFnZW50U3RhdGU6Omluc3BlY3RvckFnZW50RW5hYmxlZCAtPiBtX2VuYWJsZWQuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxlKToK
KyAgICAgICAgUmVtb3ZlIHVudXNlZCBzdGF0ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaXNhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmls
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclBy
b2ZpbGVySW1wbCk6CisgICAgICAgIFJlbW92ZSB1bnVzZWQgc3RhdGVzLiBNYWtlIENTU0FnZW50
U3RhdGU6OmlzU2VsZWN0b3JQcm9maWxpbmcgY2hlY2sgcHJvZmlsZSBvYmplY3QgZXhpc3RzIG9y
IG5vdC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgUmVtb3Zl
IHVudXNlZCBzdGF0ZSwgbWVtYmVyIHZhcmlhYmxlIGFscmVhZHkgZXhpc3RlZC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQpOgor
ICAgICAgICBDb25zb2xlQWdlbnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCBhbHJlYWR5
IGhhZCBtX2VuYWJsZWQuCisgICAgICAgIENvbnNvbGVBZ2VudFN0YXRlOjptb25pdG9yaW5nWEhS
IC0+IG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQuCisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9y
RE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExv
YWRlZCk6CisgICAgICAgIERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkIC0+IG1fZG9j
dW1lbnRSZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVYSFJCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgor
ICAgICAgICBET01EZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25BbGxYSFJzIC0+IG1fcGF1c2VP
bkFsbFhIUnNFbmFibGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICBET01TdG9yYWdlQWdlbnRT
dGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCAtPiBtX2VuYWJsZWQuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIFJlbW92ZSB1bnVzZWQgc3RhdGUs
IG1fZW5hYmxlZCBhbHJlYWR5IGV4aXN0ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVh
ckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dFBhdXNlT25FeGNlcHRpb25zSW1wbCk6CisgICAgICAgIERlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSByZW1vdmVkLCBuZXZlciByZWFkLgorICAgICAgICBEZWJ1Z2dl
ckFnZW50U3RhdGU6OmRlYnVnZ2VyRW5hYmxlZCAtPiBtX2VuYWJsZWQuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5k
UHJvZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgSGVhcFByb2ZpbGVyQWdlbnRTdGF0
ZTo6cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQgLT4gbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZC4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgUmVt
b3ZlIHVudXNlZCBzdGF0ZSwgbmV2ZXIgcmVhZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBzdGF0ZSwgZGlkIG5vdCBu
ZWVkIHRvIGJlIHJlYWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndlYlZpZXdSZXNpemVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldERldmljZU1ldHJpY3NPdmVycmlkZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRldmljZU1ldHJpY3NDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RGVidWdCb3JkZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb250aW51b3VzUGFpbnRp
bmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2Ny
aXB0RXhlY3V0aW9uRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjphcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjphcHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpkaWRMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50Ojp1cGRhdGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0VG91Y2hFbXVsYXRpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYSk6
CisgICAgICAgIFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlIC0+
IG1fc2NyZWVuV2lkdGhPdmVycmlkZS4KKyAgICAgICAgUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2Vu
dFNjcmVlbkhlaWdodE92ZXJyaWRlIC0+IG1fc2NyZWVuSGVpZ2h0T3ZlcnJpZGUuCisgICAgICAg
IFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSAtPiBtX2Zv
bnRTY2FsZUZhY3Rvck92ZXJyaWRlLgorICAgICAgICBQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50
Rml0V2luZG93IC0+IG1fZml0V2luZG93T3ZlcnJpZGUuCisgICAgICAgIFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTaG93UGFpbnRSZWN0cyAtPiBtX3Nob3dQYWludFJlY3RzLgorICAgICAgICBQ
YWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW11bGF0ZWRNZWRpYSAtPiBtX2VtdWxhdGVkTWVkaWEu
CisgICAgICAgIFJlbW92ZSBvdGhlciB1bnVzZWQgc3RhdGVzLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6ZW5hYmxlZCk6CisgICAgICAgIFByb2ZpbGVyQWdlbnRTdGF0ZTo6cHJvZmls
ZUhlYWRlcnNSZXF1ZXN0ZWQgLT4gbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZC4KKyAgICAgICAg
UmVtb3ZlIG90aGVyIHVudXNlZCBzdGF0ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6On5J
bnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjphcHBseVVzZXJBZ2VudE92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldENhY2hlRGlzYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdl
bnQpOgorICAgICAgICBSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkIC0+
IG1fZW5hYmxlZC4KKyAgICAgICAgUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkIC0+
IG1fY2FjaGVEaXNhYmxlZC4KKyAgICAgICAgUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2VyQWdlbnRP
dmVycmlkZSAtPiBtX3VzZXJBZ2VudE92ZXJyaWRlICh0aGlzIGFscmVhZHkgZXhpc3RlZCBhbmQg
d2FzIHVudXNlZCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RE9NQ291bnRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6Cisg
ICAgICAgIFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQgLT4gbV9lbmFi
bGVkLgorICAgICAgICBUaW1lbGluZUFnZW50U3RhdGU6OmluY2x1ZGVEb21Db3VudGVycyAtPiBt
X2luY2x1ZGVET01Db3VudGVycy4KKyAgICAgICAgUmVtb3ZlIG90aGVyIHVudXNlZCBzdGF0ZXMu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6OnNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZFN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6
OmNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbCk6CisgICAgICAgIFdvcmtlckFnZW50U3RhdGU6
Ondvcmtlckluc3BlY3Rpb25FbmFibGVkIC0+IG1fZW5hYmxlZC4KKyAgICAgICAgV29ya2VyQWdl
bnRTdGF0ZTo6YXV0b2Nvbm5lY3RUb1dvcmtlcnMgLT4gbV9zaG91bGRQYXVzZURlZGljYXRlZFdv
cmtlck9uU3RhcnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIFJlbW92ZSB1bnVz
ZWQgc3RhdGUsIG5vdCByZWFkLgorCisyMDEzLTEwLTMwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIEluc3BlY3Rv
ckFnZW50OjpyZXN0b3JlIGZ1bmN0aW9uYWxpdHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUyNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50LmNwcAppbmRleCA2ZTk4ZTgyLi4wNjE2ZmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTU4LDE1ICs1OCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3JBZ2VudFN0YXRlIHsK
LXN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3RvckFnZW50RW5hYmxlZFtdID0gImluc3BlY3RvckFn
ZW50RW5hYmxlZCI7Ci19Ci0KIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBw
YWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ29tcG9zaXRlU3Rh
dGUqIHN0YXRlKQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50PigiSW5z
cGVjdG9yIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCiAgICAgLCBtX2luc3BlY3RlZFBh
Z2UocGFnZSkKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKICAg
ICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yQWdlbnQodGhpcyk7CkBAIC0xMTksNyArMTE2LDcgQEAgdm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlkQ29tbWl0TG9hZCgpCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRl
OjppbnNwZWN0b3JBZ2VudEVuYWJsZWQsIHRydWUpOworICAgIG1fZW5hYmxlZCA9IHRydWU7CiAK
ICAgICBpZiAobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QpCiAgICAgICAgIGluc3BlY3QobV9w
ZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QsIG1fcGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCk7CkBA
IC0xMzEsNyArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
KikKIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0b3JBZ2VudEVu
YWJsZWQsIGZhbHNlKTsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQpAQCAtMTQxLDcgKzEzOCw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCkKIAogdm9p
ZCBJbnNwZWN0b3JBZ2VudDo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5z
cGVjdG9yQWdlbnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSkKKyAgICBpZiAobV9lbmFi
bGVkICYmIG1fZnJvbnRlbmQpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5ldmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oY2FsbElkKSwgc2NyaXB0KTsK
ICAgICBlbHNlCiAgICAgICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmFwcGVuZChw
YWlyPGxvbmcsIFN0cmluZz4oY2FsbElkLCBzY3JpcHQpKTsKQEAgLTE1NCw3ICsxNTEsNyBAQCB2
b2lkIEluc3BlY3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNw
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7Ci0gICAgaWYgKG1fc3Rh
dGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVk
KSAmJiBtX2Zyb250ZW5kKSB7CisgICAgaWYgKG1fZW5hYmxlZCAmJiBtX2Zyb250ZW5kKSB7CiAg
ICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwg
aGludHMpOwogICAgICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5maXJzdCA9IDA7CiAgICAgICAg
IG1fcGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IGI4YTM1NjcuLjU1YzM0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC05OSw2ICs5OSw4IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29t
bWFuZHM7CiAgICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luOworCisgICAg
Ym9vbCBtX2VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwCmluZGV4IGQ3ZTlkZTkuLjk0YzkzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
CkBAIC00NSwxMCArNDUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBB
cHBsaWNhdGlvbkNhY2hlQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBhcHBsaWNhdGlv
bkNhY2hlQWdlbnRFbmFibGVkW10gPSAiYXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxlZCI7Ci19
Ci0KIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvckNvbXBvc2l0ZVN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQp
CiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
PihBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cywg
c3RhdGUpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCkBAIC02OSw3ICs2NSw2IEBAIHZv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9p
ZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7
Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hlQWdlbnRTdGF0ZTo6YXBw
bGljYXRpb25DYWNoZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhpcyk7CiAKICAgICAvLyBX
ZSBuZWVkIHRvIHBhc3MgaW5pdGlhbCBuYXZpZ2F0b3Iub25PbmxpbmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA1ZmIzYTQwLi41ZTJh
OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTY2LDExICs2Niw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKLW5hbWVzcGFjZSBDU1NBZ2Vu
dFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNzc0FnZW50RW5hYmxlZFtdID0gImNzc0FnZW50
RW5hYmxlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciBpc1NlbGVjdG9yUHJvZmlsaW5nW10gPSAiaXNT
ZWxlY3RvclByb2ZpbGluZyI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBGb3Jj
ZVBzZXVkb0NsYXNzRmxhZ3MgewpAQCAtNjc4LDE0ICs2NzMsMTIgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6cmVzZXROb25QZXJzaXN0ZW50RGF0YSgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDU1NB
Z2VudFN0YXRlOjpjc3NBZ2VudEVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDU1NB
Z2VudFN0YXRlOjpjc3NBZ2VudEVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQpAQCAtMTA4OCw3ICsxMDgxLDYgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBkb2MKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2Vs
ZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCiB7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlID0gYWRvcHRQdHIobmV3IFNlbGVjdG9yUHJvZmlsZSgpKTsKLSAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKENTU0FnZW50U3RhdGU6OmlzU2VsZWN0b3JQcm9maWxpbmcsIHRydWUpOwogfQogCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+JiBy
ZXN1bHQpCkBAIC0xMDk4LDkgKzEwOTAsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9w
U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxUeQogCiBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NT
QWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFBy
b2ZpbGUpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKENTU0FnZW50U3RhdGU6Omlz
U2VsZWN0b3JQcm9maWxpbmcpKQorICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENTU0FnZW50U3RhdGU6
OmlzU2VsZWN0b3JQcm9maWxpbmcsIGZhbHNlKTsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQ7CiAgICAgaWYgKG1fZnJvbnRlbmQgJiYgbmVlZFBy
b2ZpbGUpCiAgICAgICAgIHJlc3VsdCA9IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+dG9JbnNw
ZWN0b3JPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IDIxZjE0ZDguLjE1ZGY5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNjIsMTAgKzYy
LDYgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIENhbnZhc0FnZW50U3RhdGUgewotc3RhdGlj
IGNvbnN0IGNoYXIgY2FudmFzQWdlbnRFbmFibGVkW10gPSAiY2FudmFzQWdlbnRFbmFibGVkIjsK
LX07Ci0KIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0
ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JDYW52YXNBZ2VudD4oIkNhbnZhcyIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
KQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQpAQCAtOTYsNyArOTIsNiBAQCB2b2lkIElu
c3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogICAgIGlmIChtX2VuYWJs
ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwotICAgIG1fc3RhdGUt
PnNldEJvb2xlYW4oQ2FudmFzQWdlbnRTdGF0ZTo6Y2FudmFzQWdlbnRFbmFibGVkLCBtX2VuYWJs
ZWQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQo
dGhpcyk7CiAgICAgZmluZEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzKCk7CiB9CkBA
IC0xMDQsNyArOTksNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoRXJyb3JT
dHJpbmcqKQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiB7CiAgICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDYW52
YXNBZ2VudFN0YXRlOjpjYW52YXNBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDYW52YXNBZ2VudCgwKTsKICAgICBtX2ZyYW1l
c1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzLmNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDk2M2MwNzUu
LjM5MDJmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwCkBAIC01NiwxMSArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0
aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLW5hbWVzcGFj
ZSBDb25zb2xlQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBtb25pdG9yaW5nWEhSW10g
PSAibW9uaXRvcmluZ1hIUiI7Ci1zdGF0aWMgY29uc3QgY2hhciBjb25zb2xlTWVzc2FnZXNFbmFi
bGVkW10gPSAiY29uc29sZU1lc3NhZ2VzRW5hYmxlZCI7Ci19Ci0KIGludCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50Q291bnQgPSAwOwogCiBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtNzAsNiArNjUsNyBAQCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKICAgICAsIG1fZXhw
aXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKKyAgICAs
IG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JDb25zb2xlQWdlbnQodGhpcyk7CiB9CkBAIC03OCw3ICs3NCw2IEBA
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCgpCiB7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDb25zb2xlQWdlbnQoMCk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzID0gMDsKLSAgICBtX3N0YXRlID0gMDsKICAgICBtX2luamVj
dGVkU2NyaXB0TWFuYWdlciA9IDA7CiB9CiAKQEAgLTkxLDggKzg2LDYgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgICAgIFNjcmlwdENvbnRy
b2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7CiAg
ICAgKytzX2VuYWJsZWRBZ2VudENvdW50OwogCi0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDb25z
b2xlQWdlbnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgdHJ1ZSk7Ci0KICAgICBpZiAo
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkgewogICAgICAgICBDb25zb2xlTWVzc2FnZSBl
eHBpcmVkTWVzc2FnZSghaXNXb3JrZXJBZ2VudCgpLCBPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiJWQgY29uc29s
ZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQp
KTsKICAgICAgICAgZXhwaXJlZE1lc3NhZ2UuYWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwgZmFsc2UpOwpAQCAtMTEwLDcgKzEwMyw2IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQg
PSBmYWxzZTsKICAgICBpZiAoISgtLXNfZW5hYmxlZEFnZW50Q291bnQpKQogICAgICAgICBTY3Jp
cHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGZh
bHNlKTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xl
TWVzc2FnZXNFbmFibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50
OjpjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nKikKQEAgLTI1Nyw3ICsyNDksNyBAQCB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkRmluaXNoWEhSTG9hZGluZyh1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyLAogewogICAgIGlmICghZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVh
bihDb25zb2xlQWdlbnRTdGF0ZTo6bW9uaXRvcmluZ1hIUikpIHsKKyAgICBpZiAobV9mcm9udGVu
ZCAmJiBtX21vbml0b3JpbmdYSFJFbmFibGVkKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g
IlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIjsKICAgICAgICAgLy8gRklY
TUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNDMxNj4gSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpk
aWRGaW5pc2hYSFJMb2FkaW5nIENvbnNvbGVNZXNzYWdlIHNob3VsZCBpbmNsdWRlIGEgY29sdW1u
IG51bWJlcgogICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKE5ldHdvcmtNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRGVidWdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHNlbmRVUkwsIHNl
bmRMaW5lTnVtYmVyLCAwLCAwLCByZXF1ZXN0SWRlbnRpZmllcik7CkBAIC0yOTIsNyArMjg0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnMKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnNldE1vbml0b3JpbmdYSFJFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQogewot
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ29uc29sZUFnZW50U3RhdGU6Om1vbml0b3JpbmdYSFIs
IGVuYWJsZWQpOworICAgIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQgPSBlbmFibGVkOwogfQogCiBz
dGF0aWMgYm9vbCBpc0dyb3VwTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDM4Y2RmZWQu
LmZmYzBjOTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFw
PFN0cmluZywgdW5zaWduZWQ+IG1fY291bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+
IG1fdGltZXM7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX21vbml0b3JpbmdYSFJF
bmFibGVkOwogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHNfZW5hYmxlZEFnZW50Q291bnQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggZmY2YzMwOS4uMTYwZmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDcsMTAgKzEwNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotbmFtZXNwYWNlIERPTUFnZW50U3Rh
dGUgewotc3RhdGljIGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1ZXN0ZWRbXSA9ICJkb2N1bWVudFJl
cXVlc3RlZCI7Ci19OwotCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFRleHRTaXplID0gMTAwMDA7
CiBzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKIApA
QCAtMjI3LDYgKzIyMyw3IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJCiAgICAgLCBtX2xhc3RC
YWNrZW5kTm9kZUlkKC0xKQogICAgICwgbV9zZWFyY2hpbmdGb3JOb2RlKGZhbHNlKQogICAgICwg
bV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlmaWVkRXZlbnQoZmFsc2UpCisgICAgLCBtX2RvY3VtZW50
UmVxdWVzdGVkKGZhbHNlKQogewogfQogCkBAIC0yNjMsNyArMjYwLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKICAgICBtX2Zyb250ZW5kID0gMDsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTUFnZW50KDApOwotICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oRE9NQWdlbnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQsIGZhbHNlKTsK
KyAgICBtX2RvY3VtZW50UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgcmVzZXQoKTsKIH0KIApAQCAt
MzA0LDcgKzMwMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KERvY3Vt
ZW50KiBkb2MpCiAKICAgICBtX2RvY3VtZW50ID0gZG9jOwogCi0gICAgaWYgKCFtX3N0YXRlLT5n
ZXRCb29sZWFuKERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkKSkKKyAgICBpZiAoIW1f
ZG9jdW1lbnRSZXF1ZXN0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEltbWVkaWF0ZWx5
IGNvbW11bmljYXRlIDAgZG9jdW1lbnQgb3IgZG9jdW1lbnQgdGhhdCBoYXMgZmluaXNoZWQgbG9h
ZGluZy4KQEAgLTQyNyw3ICs0MjQsNyBAQCBFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNz
ZXJ0RWRpdGFibGVFbGVtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KQogewotICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oRE9NQWdlbnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQsIHRydWUpOworICAgIG1f
ZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KSB7CiAgICAg
ICAgICplcnJvclN0cmluZyA9ICJEb2N1bWVudCBpcyBub3QgYXZhaWxhYmxlIjsKQEAgLTE1Nzgs
NyArMTU3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1haW5GcmFtZURPTUNvbnRlbnRM
b2FkZWQoKQogewogICAgIC8vIFJlLXB1c2ggZG9jdW1lbnQgb25jZSBpdCBpcyBsb2FkZWQuCiAg
ICAgZGlzY2FyZEJpbmRpbmdzKCk7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oRE9NQWdl
bnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQpKQorICAgIGlmIChtX2RvY3VtZW50UmVxdWVzdGVk
KQogICAgICAgICBtX2Zyb250ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhNWJlNDQwLi5jODcz
MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApA
QCAtMjY5LDYgKzI2OSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+
IG1faGlzdG9yeTsKICAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKICAgICBib29s
IG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50OworICAgIGJvb2wgbV9kb2N1bWVudFJl
cXVlc3RlZDsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDBlMjA4ZmQuLmRiOGNjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRE9NRGVidWdnZXJBZ2VudFN0YXRlIHsKIHN0
YXRpYyBjb25zdCBjaGFyIGV2ZW50TGlzdGVuZXJCcmVha3BvaW50c1tdID0gImV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYXVzZU9uQWxsWEhSc1tdID0gInBh
dXNlT25BbGxYSFJzIjsKIHN0YXRpYyBjb25zdCBjaGFyIHhockJyZWFrcG9pbnRzW10gPSAieGhy
QnJlYWtwb2ludHMiOwogfQogCkBAIC04MCw2ICs3OSw3IEBAIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1CiAgICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dlckFnZW50KGRl
YnVnZ2VyQWdlbnQpCiAgICAgLCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lcihmYWxzZSkKKyAg
ICAsIG1fcGF1c2VPbkFsbFhIUnNFbmFibGVkKGZhbHNlKQogewogICAgIG1fZGVidWdnZXJBZ2Vu
dC0+c2V0TGlzdGVuZXIodGhpcyk7CiB9CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9N
RXZlbnQsIGNvbnMKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtw
b2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICh1cmwuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRE9NRGVidWdnZXJBZ2VudFN0
YXRlOjpwYXVzZU9uQWxsWEhScywgdHJ1ZSk7CisgICAgICAgIG1fcGF1c2VPbkFsbFhIUnNFbmFi
bGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAwLDcgKzQwMCw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdXJsCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkgewotICAgICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERP
TURlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VPbkFsbFhIUnMsIGZhbHNlKTsKKyAgICAgICAgbV9w
YXVzZU9uQWxsWEhSc0VuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3Zl
WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYKIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBTdHJpbmcgYnJlYWtwb2ludFVSTDsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9v
bGVhbihET01EZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25BbGxYSFJzKSkKKyAgICBpZiAobV9w
YXVzZU9uQWxsWEhSc0VuYWJsZWQpCiAgICAgICAgIGJyZWFrcG9pbnRVUkwgPSAiIjsKICAgICBl
bHNlIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4geGhyQnJlYWtwb2ludHMgPSBt
X3N0YXRlLT5nZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaAppbmRleCA0NTE4NTNjLi4xZGFhMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTEwNyw2ICsxMDcs
NyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2Vu
dDsKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVha3BvaW50czsKICAgICBi
b29sIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVyOworICAgIGJvb2wgbV9wYXVzZU9uQWxsWEhS
c0VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDE5
MzBmM2YuLjM2YTVjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01NiwxNCArNTYsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRE9NU3RvcmFnZUFnZW50U3RhdGUgewotc3RhdGlj
IGNvbnN0IGNoYXIgZG9tU3RvcmFnZUFnZW50RW5hYmxlZFtdID0gImRvbVN0b3JhZ2VBZ2VudEVu
YWJsZWQiOwotfTsKLQogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBzdGF0ZSkK
ICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KCJET01T
dG9yYWdlIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiAgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
dGhpcyk7CiB9CkBAIC04NSwxOSArODIsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmNsZWFyRnJvbnRlbmQoKQogICAgIGRpc2FibGUoMCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Ojppc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRl
LT5nZXRCb29sZWFuKERPTVN0b3JhZ2VBZ2VudFN0YXRlOjpkb21TdG9yYWdlQWdlbnRFbmFibGVk
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmlu
ZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9t
U3RvcmFnZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewot
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmRvbVN0b3JhZ2VB
Z2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRl
bXMpCkBAIC0xNzMsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFn
ZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2UKIAogdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luLCBQYWdlKikKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmQgfHwgIWlzRW5hYmxlZCgpKQorICAg
IGlmICghbV9mcm9udGVuZCB8fCAhbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gaWQgPSBzdG9yYWdlSWQo
c2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXgg
M2M4ZjAwYi4uYzAzNmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNzksMTEgKzc5LDExIEBAIHByaXZhdGU6CiAK
ICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKik7CiAKLSAgICBib29sIGlz
RW5hYmxlZCgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdl
QXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiwgRnJhbWUq
Jik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3Rv
ckZyb250ZW5kKiBtX2Zyb250ZW5kOworICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IDZiN2UwMzUuLmJiNmFlZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAg
LTU3LDEwICs1Nyw2IEBAIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXI6OkV4ZWN1dGVTUUxDCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotbmFtZXNwYWNlIERhdGFiYXNlQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hh
ciBkYXRhYmFzZUFnZW50RW5hYmxlZFtdID0gImRhdGFiYXNlQWdlbnRFbmFibGVkIjsKLX07Ci0K
IG5hbWVzcGFjZSB7CiAKIHZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhlY3V0ZVNRTENh
bGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yKiBlcnJvcikKQEAgLTI0Miw3ICsyMzgs
NiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAg
ICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7
Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmRhdGFiYXNlQWdl
bnRFbmFibGVkLCBtX2VuYWJsZWQpOwogCiAgICAgRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJh
dG9yIGRhdGFiYXNlc0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRGF0YWJhc2VS
ZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZGF0
YWJhc2VzRW5kOyArK2l0KQpAQCAtMjU0LDcgKzI0OSw2IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29s
ZWFuKERhdGFiYXNlQWdlbnRTdGF0ZTo6ZGF0YWJhc2VBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVz
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhMjgxMzdmLi40NWM1
N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCkBAIC01NCw5ICs1NCw3IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBEZWJ1Z2dlckFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZGVidWdnZXJFbmFibGVk
W10gPSAiZGVidWdnZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGphdmFTY3JpcHRCcmVh
a3BvaW50c1tdID0gImphdmFTY3JpcHRCcmVha29waW50cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBw
YXVzZU9uRXhjZXB0aW9uc1N0YXRlW10gPSAicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSI7CiB9Owog
CiBjb25zdCBjaGFyKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91
cCA9ICJiYWNrdHJhY2UiOwpAQCAtNzEsNyArNjksNiBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bgogewogICAgIC8vIEZJWE1FOiBtYWtlIGJyZWFrUmVhc29uIG9wdGlvbmFsIHNvIHRoYXQgdGhl
cmUgd2FzIG5vIG5lZWQgdG8gaW5pdCBpdCB3aXRoICJvdGhlciIuCiAgICAgY2xlYXJCcmVha0Rl
dGFpbHMoKTsKLSAgICBtX3N0YXRlLT5zZXRMb25nKERlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
cyk7CiB9CiAKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KCkKQEAgLTg5LDEyICs4NiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJs
ZSgpCiAKICAgICBpZiAobV9saXN0ZW5lcikKICAgICAgICAgbV9saXN0ZW5lci0+ZGVidWdnZXJX
YXNFbmFibGVkKCk7CisKKyAgICBtX2VuYWJsZWQgPSB0cnVlOwogfQogCiB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewogICAgIG1fc3RhdGUtPnNldE9iamVjdChEZWJ1
Z2dlckFnZW50U3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50cywgSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7Ci0gICAgbV9zdGF0ZS0+c2V0TG9uZyhEZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNl
T25FeGNlcHRpb25zU3RhdGUsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlv
bnMpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCgwKTsKIAogICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOwpAQCAtMTA1LDEx
ICsxMDMsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKIAogICAg
IGlmIChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVyLT5kZWJ1Z2dlcldhc0Rpc2FibGVk
KCk7CisKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjplbmFibGVkKCkKIHsKLSAgICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihEZWJ1
Z2dlckFnZW50U3RhdGU6OmRlYnVnZ2VyRW5hYmxlZCk7CisgICAgcmV0dXJuIG1fZW5hYmxlZDsK
IH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYXVzZXNSZWNvbXBpbGF0aW9uKEVy
cm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQpAQCAtMTMzLDcgKzEzMyw2IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZW5hYmxlKCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihEZWJ1Z2dlckFnZW50U3Rh
dGU6OmRlYnVnZ2VyRW5hYmxlZCwgdHJ1ZSk7CiAKICAgICBBU1NFUlQobV9mcm9udGVuZCk7CiB9
CkBAIC0xNDQsNyArMTQzLDYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nKikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZGlzYWJsZSgpOwotICAgIG1f
c3RhdGUtPnNldEJvb2xlYW4oRGVidWdnZXJBZ2VudFN0YXRlOjpkZWJ1Z2dlckVuYWJsZWQsIGZh
bHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkBAIC0xNjAsMTEgKzE1OCw2IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGRpc2FibGUoKTsKLQotICAgIC8vIEZJWE1FOiBkdWUgdG8gbV9zdGF0ZS0+bXV0ZSgpIGhhY2sg
aW4gSW5zcGVjdG9yQ29udHJvbGxlciwgZGVidWdnZXJFbmFibGVkIGlzIGFjdHVhbGx5IHNldCB0
byBmYWxzZSBvbmx5Ci0gICAgLy8gaW4gSW5zcGVjdG9yU3RhdGUsIGJ1dCBub3QgaW4gY29va2ll
LiBUaGF0J3Mgd2h5IGFmdGVyIG5hdmlnYXRpb24gZGVidWdnZXJFbmFibGVkIHdpbGwgYmUgdHJ1
ZSwKLSAgICAvLyBidXQgYWZ0ZXIgZnJvbnQtZW5kIHJlLW9wZW4gaXQgd2lsbCBzdGlsbCBiZSBm
YWxzZS4KLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERlYnVnZ2VyQWdlbnRTdGF0ZTo6ZGVidWdn
ZXJFbmFibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSkKQEAgLTU2MCw4ICs1
NTMsNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25z
SW1wbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5z
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRpY19jYXN0PFNjcmlwdERlYnVnU2VydmVyOjpQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7CiAgICAgaWYgKHNjcmlwdERlYnVn
U2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IHBhdXNlU3RhdGUpCiAgICAgICAg
ICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVzZSBv
biBleGNlcHRpb25zIHN0YXRlIjsKLSAgICBlbHNlCi0gICAgICAgIG1fc3RhdGUtPnNldExvbmco
RGVidWdnZXJBZ2VudFN0YXRlOjpwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCBwYXVzZVN0YXRlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25z
dCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0
dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggYTcxNDc3ZS4uZjhmNDNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC0xNzQs
NiArMTc0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9jb250aW51ZVRvTG9jYXRpb25CcmVh
a3BvaW50SWQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0g
bV9icmVha1JlYXNvbjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0
YTsKKyAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU0
ZGFiYmUuLmYxYzVmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtNDIsMTAgKzQyLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgSGVhcFByb2ZpbGVyQWdlbnRTdGF0ZSB7Ci1z
dGF0aWMgY29uc3QgY2hhciBwcm9maWxlSGVhZGVyc1JlcXVlc3RlZFtdID0gInByb2ZpbGVIZWFk
ZXJzUmVxdWVzdGVkIjsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZUhlYXAgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7
CiAKIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTU4LDYgKzU0LDcgQEAgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3QKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVj
dGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fbmV4dFVzZXJJ
bml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIoMSkKKyAgICAsIG1fcHJvZmlsZUhlYWRlcnNSZXF1
ZXN0ZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudCh0aGlzKTsKIH0KQEAgLTc5LDcgKzc2LDcgQEAgdm9pZCBJbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKIHsKICAgICBpZiAo
IW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xl
YW4oSGVhcFByb2ZpbGVyQWdlbnRTdGF0ZTo6cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQpKQorICAg
IGlmICghbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
IChtX3NuYXBzaG90cy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0UHJvZmls
ZXMoKTsKQEAgLTkyLDcgKzg5LDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogCiB2b2lkIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKLSAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKEhlYXBQcm9maWxlckFnZW50U3RhdGU6OnByb2ZpbGVIZWFkZXJzUmVxdWVzdGVkLCBm
YWxzZSk7CisgICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgIG1fZnJv
bnRlbmQgPSAwOwogfQogCkBAIC0xMTcsNyArMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudDo6aGFzSGVhcFByb2ZpbGVyKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQog
CiB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJv
clN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oSGVhcFByb2ZpbGVyQWdlbnRTdGF0ZTo6cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQsIHRydWUp
OworICAgIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIGhlYWRlcnMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj46OmNyZWF0ZSgpOwogCiAgICAgSWRUb0hlYXBTbmFwc2hvdE1hcDo6aXRlcmF0b3Igc25hcHNo
b3RzRW5kID0gbV9zbmFwc2hvdHMuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCmluZGV4IDk2OTU0MDAuLjA1Zjg0
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudC5oCkBAIC04Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RnJvbnRlbmQ6OkhlYXBQcm9maWxlciogbV9mcm9udGVuZDsKICAgICB1bnNpZ25lZCBtX25leHRV
c2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyOwogICAgIElkVG9IZWFwU25hcHNob3RNYXAg
bV9zbmFwc2hvdHM7CisgICAgYm9vbCBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggMTEyMjhjMC4uNGY1ODk2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCkBAIC04NSwxMCArODUsNiBAQCB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlcjo6Q2xlYXJPYmplYwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBJbmRleGVkREJBZ2VudFN0YXRlIHsKLXN0YXRp
YyBjb25zdCBjaGFyIGluZGV4ZWREQkFnZW50RW5hYmxlZFtdID0gImluZGV4ZWREQkFnZW50RW5h
YmxlZCI7Ci19OwotCiBuYW1lc3BhY2UgewogCiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJh
Y2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CkBAIC01NzksMTIgKzU3NSwxMCBAQCB2b2lkIElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6OmluZGV4ZWREQkFnZW50RW5hYmxlZCwgdHJ1ZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcq
KQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhl
ZERCQWdlbnRFbmFibGVkLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9j
dW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRl
eCAxNjg4MjRjLi42ZWNjNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTQ5LDEwICs0OSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIExheWVyVHJlZUFnZW50U3RhdGUgewotc3RhdGlj
IGNvbnN0IGNoYXIgbGF5ZXJUcmVlQWdlbnRFbmFibGVkW10gPSAibGF5ZXJUcmVlQWdlbnRFbmFi
bGVkIjsKLX07Ci0KIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZSogc3RhdGUpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ+KCJMYXllclRyZWUiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkK
ICAgICAsIG1fZnJvbnRlbmQoMCkKQEAgLTg1LDE1ICs4MSwxMSBAQCB2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXllclRyZWVB
Z2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAgIGlm
ICghbV9zdGF0ZS0+Z2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2Vu
dEVuYWJsZWQpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXll
clRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIGZhbHNlKTsKICAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KDApOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IGJlYTU3M2YuLmZiMmJlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC05MSwyMSArOTEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgUGFnZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFn
ZW50RW5hYmxlZFtdID0gInBhZ2VBZ2VudEVuYWJsZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFn
ZUFnZW50U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWRbXSA9ICJwYWdlQWdlbnRTY3JpcHRFeGVjdXRp
b25EaXNhYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0
ZU9uTG9hZFtdID0gInBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkIjsKLXN0YXRpYyBj
b25zdCBjaGFyIHBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRTY3Jl
ZW5XaWR0aE92ZXJyaWRlIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNjcmVlbkhlaWdo
dE92ZXJyaWRlW10gPSAicGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUiOwotc3RhdGljIGNv
bnN0IGNoYXIgcGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRG
b250U2NhbGVGYWN0b3JPdmVycmlkZSI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRGaXRX
aW5kb3dbXSA9ICJwYWdlQWdlbnRGaXRXaW5kb3ciOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFn
ZW50U2hvd0ZQU0NvdW50ZXJbXSA9ICJwYWdlQWdlbnRTaG93RlBTQ291bnRlciI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBwYWdlQWdlbnRDb250aW51b3VzUGFpbnRpbmdFbmFibGVkW10gPSAicGFnZUFn
ZW50Q29udGludW91c1BhaW50aW5nRW5hYmxlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdl
bnRTaG93UGFpbnRSZWN0c1tdID0gInBhZ2VBZ2VudFNob3dQYWludFJlY3RzIjsKLXN0YXRpYyBj
b25zdCBjaGFyIHBhZ2VBZ2VudFNob3dEZWJ1Z0JvcmRlcnNbXSA9ICJwYWdlQWdlbnRTaG93RGVi
dWdCb3JkZXJzIjsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGNvbnN0IGNoYXIg
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWRbXSA9ICJ0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCI7Ci0jZW5kaWYKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEVtdWxhdGVkTWVkaWFbXSA9
ICJwYWdlQWdlbnRFbXVsYXRlZE1lZGlhIjsKIH0KIAogc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVy
KGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTM3NSwxMSArMzYxLDE2IEBAIEluc3BlY3Rv
clBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsCiAgICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX292ZXJsYXkob3Zl
cmxheSkKICAgICAsIG1fbGFzdFNjcmlwdElkZW50aWZpZXIoMCkKKyAgICAsIG1fc2NyZWVuV2lk
dGhPdmVycmlkZSgwKQorICAgICwgbV9zY3JlZW5IZWlnaHRPdmVycmlkZSgwKQorICAgICwgbV9m
b250U2NhbGVGYWN0b3JPdmVycmlkZSgxKQorICAgICwgbV9maXRXaW5kb3dPdmVycmlkZShmYWxz
ZSkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNGaXJzdExheW91dEFmdGVyT25M
b2FkKGZhbHNlKQogICAgICwgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKGZhbHNl
KQogICAgICwgbV9nZW9sb2NhdGlvbk92ZXJyaWRkZW4oZmFsc2UpCiAgICAgLCBtX2lnbm9yZVNj
cmlwdHNFbmFibGVkTm90aWZpY2F0aW9uKGZhbHNlKQorICAgICwgbV9zaG93UGFpbnRSZWN0cyhm
YWxzZSkKIHsKIH0KIApAQCAtNDAwLDE0ICszOTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2ViVmlld1Jl
c2l6ZWQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpbnQgY3VycmVudFdpZHRoID0gc3Rh
dGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRT
Y3JlZW5XaWR0aE92ZXJyaWRlKSk7Ci0gICAgbV9vdmVybGF5LT5yZXNpemUoY3VycmVudFdpZHRo
ID8gc2l6ZSA6IEludFNpemUoKSk7CisgICAgbV9vdmVybGF5LT5yZXNpemUobV9zY3JlZW5XaWR0
aE92ZXJyaWRlID8gc2l6ZSA6IEludFNpemUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW5hYmxlZCwgdHJ1
ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhp
cyk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpCkBAIC00MTcsNyArNDA2
LDYgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9lbmFi
bGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFn
ZUFnZW50RW5hYmxlZCwgZmFsc2UpOwogICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0
ZTo6cGFnZUFnZW50U2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOwogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yUGFnZUFnZW50KDApOwogCkBAIC00MzMsMTAgKzQyMSwxMCBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAKICAgICAv
LyBXaGVuIGRpc2FibGluZyB0aGUgYWdlbnQsIHJlc2V0IHRoZSBvdmVycmlkZSB2YWx1ZXMgaWYg
bmVjZXNzYXJ5LgogICAgIHVwZGF0ZVZpZXdNZXRyaWNzKDAsIDAsIDEsIGZhbHNlKTsKLSAgICBt
X3N0YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJy
aWRlLCAwKTsKLSAgICBtX3N0YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRT
Y3JlZW5IZWlnaHRPdmVycmlkZSwgMCk7Ci0gICAgbV9zdGF0ZS0+c2V0RG91YmxlKFBhZ2VBZ2Vu
dFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSwgMSk7Ci0gICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rml0V2luZG93LCBmYWxzZSk7
CisgICAgbV9zY3JlZW5XaWR0aE92ZXJyaWRlID0gMDsKKyAgICBtX3NjcmVlbkhlaWdodE92ZXJy
aWRlID0gMDsKKyAgICBtX2ZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlID0gMTsKKyAgICBtX2ZpdFdp
bmRvd092ZXJyaWRlID0gZmFsc2U7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphZGRT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2Us
IFN0cmluZyogaWRlbnRpZmllcikKQEAgLTczOCwyOCArNzI2LDIyIEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpzZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQKICAgICBpZiAoIWRldmljZU1ldHJpY3NDaGFuZ2VkKHdpZHRoLCBoZWlnaHQsIGZv
bnRTY2FsZUZhY3RvciwgZml0V2luZG93KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zdGF0
ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSwg
d2lkdGgpOwotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNj
cmVlbkhlaWdodE92ZXJyaWRlLCBoZWlnaHQpOwotICAgIG1fc3RhdGUtPnNldERvdWJsZShQYWdl
QWdlbnRTdGF0ZTo6cGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUsIGZvbnRTY2FsZUZh
Y3Rvcik7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50
Rml0V2luZG93LCBmaXRXaW5kb3cpOworICAgIG1fc2NyZWVuV2lkdGhPdmVycmlkZSA9IHdpZHRo
OworICAgIG1fc2NyZWVuSGVpZ2h0T3ZlcnJpZGUgPSBoZWlnaHQ7CisgICAgbV9mb250U2NhbGVG
YWN0b3JPdmVycmlkZSA9IGZvbnRTY2FsZUZhY3RvcjsKKyAgICBtX2ZpdFdpbmRvd092ZXJyaWRl
ID0gZml0V2luZG93OwogCiAgICAgdXBkYXRlVmlld01ldHJpY3Mod2lkdGgsIGhlaWdodCwgZm9u
dFNjYWxlRmFjdG9yLCBmaXRXaW5kb3cpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGV2aWNlTWV0cmljc0NoYW5nZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgZm9udFNj
YWxlRmFjdG9yLCBib29sIGZpdFdpbmRvdykKIHsKLSAgICAvLyBUaGVzZSB0d28gYWx3YXlzIGZp
dCBhbiBpbnQuCi0gICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0
ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSkp
OwotICAgIGludCBjdXJyZW50SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRM
b25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZSkpOwotICAg
IGRvdWJsZSBjdXJyZW50Rm9udFNjYWxlRmFjdG9yID0gbV9zdGF0ZS0+Z2V0RG91YmxlKFBhZ2VB
Z2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSk7Ci0gICAgYm9vbCBj
dXJyZW50Rml0V2luZG93ID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFn
ZUFnZW50Rml0V2luZG93KTsKLQotICAgIHJldHVybiB3aWR0aCAhPSBjdXJyZW50V2lkdGggfHwg
aGVpZ2h0ICE9IGN1cnJlbnRIZWlnaHQgfHwgZm9udFNjYWxlRmFjdG9yICE9IGN1cnJlbnRGb250
U2NhbGVGYWN0b3IgfHwgZml0V2luZG93ICE9IGN1cnJlbnRGaXRXaW5kb3c7CisgICAgcmV0dXJu
IHdpZHRoICE9IG1fc2NyZWVuV2lkdGhPdmVycmlkZSB8fCBoZWlnaHQgIT0gbV9zY3JlZW5IZWln
aHRPdmVycmlkZSB8fCBmb250U2NhbGVGYWN0b3IgIT0gbV9mb250U2NhbGVGYWN0b3JPdmVycmlk
ZSB8fCBmaXRXaW5kb3cgIT0gbV9maXRXaW5kb3dPdmVycmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQog
ewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNob3dQ
YWludFJlY3RzLCBzaG93KTsKKyAgICBtX3Nob3dQYWludFJlY3RzID0gc2hvdzsKICAgICBtX2Ns
aWVudC0+c2V0U2hvd1BhaW50UmVjdHMoc2hvdyk7CiAKICAgICBpZiAoIXNob3cgJiYgbWFpbkZy
YW1lKCkgJiYgbWFpbkZyYW1lKCktPnZpZXcoKSkKQEAgLTc3Myw3ICs3NTUsNiBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0RlYnVnQm9yZGVycyhFcnJvclN0cmluZyosIGJvb2wq
IG91dFBhcmFtKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0RlYnVnQm9yZGVy
cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBh
Z2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTaG93RGVidWdCb3JkZXJzLCBzaG93KTsKICAgICBtX2Ns
aWVudC0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93KTsKICAgICBpZiAobWFpbkZyYW1lKCkgJiYg
bWFpbkZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxp
ZGF0ZSgpOwpAQCAtNzg2LDcgKzc2Nyw2IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjYW5T
aG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQogCiB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sIHNob3cp
CiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hv
d0ZQU0NvdW50ZXIsIHNob3cpOwogICAgIG1fY2xpZW50LT5zZXRTaG93RlBTQ291bnRlcihzaG93
KTsKIAogICAgIGlmIChtYWluRnJhbWUoKSAmJiBtYWluRnJhbWUoKS0+dmlldygpKQpAQCAtODAw
LDcgKzc4MCw2IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjYW5Db250aW51b3VzbHlQYWlu
dChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2V0Q29udGludW91c1BhaW50aW5nRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxl
ZCkKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRD
b250aW51b3VzUGFpbnRpbmdFbmFibGVkLCBlbmFibGVkKTsKICAgICBtX2NsaWVudC0+c2V0Q29u
dGludW91c1BhaW50aW5nRW5hYmxlZChlbmFibGVkKTsKIAogICAgIGlmICghZW5hYmxlZCAmJiBt
YWluRnJhbWUoKSAmJiBtYWluRnJhbWUoKS0+dmlldygpKQpAQCAtODMwLDcgKzgwOSw2IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJp
bmcqLCBQYWdlQ29tbWFuZEhhbmRsCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyaXB0RXhlY3V0aW9u
RGlzYWJsZWQsIHZhbHVlKTsKICAgICBpZiAoIW1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTEwMDMsMjEgKzk4MSwxOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUnVu
SmF2YVNjcmlwdERpYWxvZygpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcHBseVNjcmVl
bldpZHRoT3ZlcnJpZGUobG9uZyogd2lkdGgpCiB7Ci0gICAgbG9uZyB3aWR0aE92ZXJyaWRlID0g
bV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVy
cmlkZSk7Ci0gICAgaWYgKHdpZHRoT3ZlcnJpZGUpCi0gICAgICAgICp3aWR0aCA9IHdpZHRoT3Zl
cnJpZGU7CisgICAgaWYgKG1fc2NyZWVuV2lkdGhPdmVycmlkZSkKKyAgICAgICAgKndpZHRoID0g
bV9zY3JlZW5XaWR0aE92ZXJyaWRlOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXBw
bHlTY3JlZW5IZWlnaHRPdmVycmlkZShsb25nKiBoZWlnaHQpCiB7Ci0gICAgbG9uZyBoZWlnaHRP
dmVycmlkZSA9IG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVl
bkhlaWdodE92ZXJyaWRlKTsKLSAgICBpZiAoaGVpZ2h0T3ZlcnJpZGUpCi0gICAgICAgICpoZWln
aHQgPSBoZWlnaHRPdmVycmlkZTsKKyAgICBpZiAobV9zY3JlZW5IZWlnaHRPdmVycmlkZSkKKyAg
ICAgICAgKmhlaWdodCA9IG1fc2NyZWVuSGVpZ2h0T3ZlcnJpZGU7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpkaWRQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgbV9jbGllbnQtPm92ZXJy
aWRlc1Nob3dQYWludFJlY3RzKCkgfHwgIW1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNob3dQYWludFJlY3RzKSkKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCBtX2Ns
aWVudC0+b3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSB8fCAhbV9zaG93UGFpbnRSZWN0cykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc3RhdGljIGludCBjb2xvclNlbGVjdG9yID0gMDsKQEAgLTEw
NDIsMTAgKzEwMTgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkTGF5b3V0KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzRmlyc3RMYXlvdXQpIHsKLSAgICAgICAgaW50IGN1
cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRT
dGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSkpOwotICAgICAgICBpbnQgY3VycmVu
dEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0
ZTo6cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKLQotICAgICAgICBpZiAoY3VycmVu
dFdpZHRoICYmIGN1cnJlbnRIZWlnaHQpCisgICAgICAgIGlmIChtX3NjcmVlbldpZHRoT3ZlcnJp
ZGUgJiYgbV9zY3JlZW5IZWlnaHRPdmVycmlkZSkKICAgICAgICAgICAgIG1fY2xpZW50LT5hdXRv
Wm9vbVBhZ2VUb0ZpdFdpZHRoKCk7CiAgICAgfQogICAgIG1fb3ZlcmxheS0+dXBkYXRlKCk7CkBA
IC0xMTQxLDcgKzExMTQsNiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVmlld01l
dHJpY3MoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgZm9udFNjYQogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVG91Y2hFdmVudEVt
dWxhdGlvbkluUGFnZShib29sIGVuYWJsZWQpCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQ
YWdlQWdlbnRTdGF0ZTo6dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQsIGVuYWJsZWQpOwogICAg
IGlmIChtYWluRnJhbWUoKSkKICAgICAgICAgbWFpbkZyYW1lKCktPnNldHRpbmdzKCkuc2V0VG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiB9CkBAIC0xMjUwLDggKzEyMjIsNiBA
QCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIEluc3BlY3RvclBhZ2VBZ2VudDo6b3ZlcnJpZGVEZXZp
Y2VPcmllbnRhdGlvbihEZXZpY2VPcmllbgogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFRv
dWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlZCkKIHsK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFBh
Z2VBZ2VudFN0YXRlOjp0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCkgPT0gZW5hYmxlZCkKLSAg
ICAgICAgcmV0dXJuOwogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgdXBkYXRlVG91Y2hF
dmVudEVtdWxhdGlvbkluUGFnZShlbmFibGVkKTsKICNlbHNlCkBAIC0xMjYyLDExICsxMjMyLDEw
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQoRXJy
b3JTdHJpbmcqIGVycm9yLCBib29sIGVuYWJsCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKLSAg
ICBTdHJpbmcgY3VycmVudE1lZGlhID0gbV9zdGF0ZS0+Z2V0U3RyaW5nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRFbXVsYXRlZE1lZGlhKTsKLSAgICBpZiAobWVkaWEgPT0gY3VycmVudE1lZGlh
KQorICAgIGlmIChtZWRpYSA9PSBtX2VtdWxhdGVkTWVkaWEpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW11bGF0ZWRN
ZWRpYSwgbWVkaWEpOworICAgIG1fZW11bGF0ZWRNZWRpYSA9IG1lZGlhOwogICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoZG9j
dW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOwpAQCAtMTI3Niw5ICsxMjQ1LDggQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG1lZGlh
KQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyog
bWVkaWEpCiB7Ci0gICAgU3RyaW5nIGVtdWxhdGVkTWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmco
UGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEpOwotICAgIGlmICghZW11bGF0
ZWRNZWRpYS5pc0VtcHR5KCkpCi0gICAgICAgICptZWRpYSA9IGVtdWxhdGVkTWVkaWE7CisgICAg
aWYgKCFtX2VtdWxhdGVkTWVkaWEuaXNFbXB0eSgpKQorICAgICAgICAqbWVkaWEgPSBtX2VtdWxh
dGVkTWVkaWE7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb21wb3NpdGluZ0Jv
cmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMmIwNGY0NC4uNDgwMWMz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApA
QCAtMjA4LDExICsyMDgsMTcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5n
PiBtX2ZyYW1lVG9JZGVudGlmaWVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBGcmFtZSo+IG1faWRl
bnRpZmllclRvRnJhbWU7CiAgICAgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIFN0cmluZz4gbV9s
b2FkZXJUb0lkZW50aWZpZXI7CisgICAgaW50IG1fc2NyZWVuV2lkdGhPdmVycmlkZTsKKyAgICBp
bnQgbV9zY3JlZW5IZWlnaHRPdmVycmlkZTsKKyAgICBkb3VibGUgbV9mb250U2NhbGVGYWN0b3JP
dmVycmlkZTsKKyAgICBib29sIG1fZml0V2luZG93T3ZlcnJpZGU7CiAgICAgYm9vbCBtX2VuYWJs
ZWQ7CiAgICAgYm9vbCBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZDsKICAgICBib29sIG1fb3Jp
Z2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZDsKICAgICBib29sIG1fZ2VvbG9jYXRpb25PdmVy
cmlkZGVuOwogICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlvbjsKKyAg
ICBib29sIG1fc2hvd1BhaW50UmVjdHM7CisgICAgU3RyaW5nIG1fZW11bGF0ZWRNZWRpYTsKICAg
ICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9nZW9sb2NhdGlvblBvc2l0aW9uOwogICAg
IFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3BsYXRmb3JtR2VvbG9jYXRpb25Qb3NpdGlv
bjsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBtX2RldmljZU9yaWVudGF0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCmluZGV4IGQ0ODhhNjcuLmUyZDNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTU3LDEyICs1Nyw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFByb2ZpbGVyQWdlbnRTdGF0ZSB7
Ci1zdGF0aWMgY29uc3QgY2hhciB1c2VySW5pdGlhdGVkUHJvZmlsaW5nW10gPSAidXNlckluaXRp
YXRlZFByb2ZpbGluZyI7Ci1zdGF0aWMgY29uc3QgY2hhciBwcm9maWxlckVuYWJsZWRbXSA9ICJw
cm9maWxlckVuYWJsZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgcHJvZmlsZUhlYWRlcnNSZXF1ZXN0
ZWRbXSA9ICJwcm9maWxlSGVhZGVyc1JlcXVlc3RlZCI7Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51
c2VyLWluaXRpYXRlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgQ1BVUHJvZmlsZVR5cGUg
PSAiQ1BVIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBIZWFwUHJvZmlsZVR5cGUgPSAiSEVB
UCI7CkBAIC0xMzMsNiArMTI3LDcgQEAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9y
UHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJv
bnRlbmQoMCkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1fcHJvZmlsZUhlYWRlcnNS
ZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX3JlY29yZGluZ0NQVVByb2ZpbGUoZmFsc2UpCiAgICAg
LCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigtMSkKICAgICAsIG1fbmV4dFVz
ZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKDEpCkBAIC0xNTEsNyArMTQ2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJwUHJvZmlsZSwgdW4KIHsKICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBy
cFByb2ZpbGU7CiAgICAgbV9wcm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCksIHByb2ZpbGUpOwot
ICAgIGlmIChtX2Zyb250ZW5kICYmIG1fc3RhdGUtPmdldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0
YXRlOjpwcm9maWxlSGVhZGVyc1JlcXVlc3RlZCkpCisgICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9w
cm9maWxlSGVhZGVyc1JlcXVlc3RlZCkKICAgICAgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZUhl
YWRlcihjcmVhdGVQcm9maWxlSGVhZGVyKCpwcm9maWxlKSk7CiAgICAgYWRkUHJvZmlsZUZpbmlz
aGVkTWVzc2FnZVRvQ29uc29sZShwcm9maWxlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCk7CiB9CkBAIC0yMTUsMTMgKzIxMCwxMSBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgaWYgKGVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRlOjpw
cm9maWxlckVuYWJsZWQsIHRydWUpOwogICAgIGVuYWJsZShmYWxzZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnByb2ZpbGVyRW5hYmxlZCwgZmFsc2Up
OwogICAgIGRpc2FibGUoKTsKIH0KIApAQCAtMjMwLDcgKzIyMyw3IEBAIHZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBy
b2ZpbGVyQWdlbnRTdGF0ZTo6cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQsIGZhbHNlKTsKKyAgICBt
X3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgcmVjb21waWxlU2NyaXB0KCk7
CiB9CiAKQEAgLTI1Myw3ICsyNDYsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudAogCiB2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+PiYgaGVhZGVycykKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2ZpbGVyQWdl
bnRTdGF0ZTo6cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQsIHRydWUpOworICAgIG1fcHJvZmlsZUhl
YWRlcnNSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBQ
cm9maWxlc01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBtX3Byb2ZpbGVzLmVuZCgpOwpAQCAt
MzMyLDcgKzMyNSw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVu
ZFByb2ZpbGVzKCkKIHsKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRlOjpwcm9maWxlSGVh
ZGVyc1JlcXVlc3RlZCkpCisgICAgaWYgKCFtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKG1fcHJvZmlsZXMuaXNFbXB0eSgpICYmIG1fc25hcHNob3Rz
LmlzRW1wdHkoKSkKICAgICAgICAgbV9mcm9udGVuZC0+cmVzZXRQcm9maWxlcygpOwpAQCAtMzY0
LDcgKzM1Nyw2IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RhcnQoRXJyb3JTdHJp
bmcqKQogICAgIHN0YXJ0UHJvZmlsaW5nKHRpdGxlKTsKICAgICBhZGRTdGFydFByb2ZpbGluZ01l
c3NhZ2VUb0NvbnNvbGUodGl0bGUsIDAsIDAsIFN0cmluZygpKTsKICAgICB0b2dnbGVSZWNvcmRC
dXR0b24odHJ1ZSk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6
OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcsIHRydWUpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnN0b3AoRXJyb3JTdHJpbmcqKQpAQCAtMzc3LDcgKzM2OSw2IEBAIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcChFcnJvclN0cmluZyopCiAgICAgaWYgKHByb2ZpbGUp
CiAgICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgMCwgU3RyaW5nKCkpOwogICAgIHRvZ2ds
ZVJlY29yZEJ1dHRvbihmYWxzZSk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFn
ZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcsIGZhbHNlKTsKIH0KIAogbmFtZXNwYWNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCmluZGV4IGY4OTUyMDQuLjQzNWE5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpc2FibGUoKTsKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBp
bGUpOwotICAgIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJy
ZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9
IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcj4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcq
LCBpbnQgdWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOwpA
QCAtMTE5LDYgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIq
IG1fZnJvbnRlbmQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX3Byb2ZpbGVIZWFk
ZXJzUmVxdWVzdGVkOwogICAgIGJvb2wgbV9yZWNvcmRpbmdDUFVQcm9maWxlOwogICAgIGludCBt
X2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsKICAgICB1bnNpZ25lZCBtX25leHRV
c2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAyYWU2NWE5Li45MjE4MDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCkBAIC03OCwxMCArNzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgUmVzb3VyY2VBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHJlc291cmNlQWdlbnRF
bmFibGVkW10gPSAicmVzb3VyY2VBZ2VudEVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgZXh0
cmFSZXF1ZXN0SGVhZGVyc1tdID0gImV4dHJhUmVxdWVzdEhlYWRlcnMiOwotc3RhdGljIGNvbnN0
IGNoYXIgY2FjaGVEaXNhYmxlZFtdID0gImNhY2hlRGlzYWJsZWQiOwotc3RhdGljIGNvbnN0IGNo
YXIgdXNlckFnZW50T3ZlcnJpZGVbXSA9ICJ1c2VyQWdlbnRPdmVycmlkZSI7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQpAQCAtMTc4LDcgKzE3NSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvCiAKIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkKIHsKLSAgICBp
ZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRF
bmFibGVkKSkgeworICAgIGlmIChtX2VuYWJsZWQpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgICAgIGRpc2FibGUoJmVycm9yKTsKICAgICB9CkBAIC0yMTUsNyArMjEyLDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICByZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1pbmco
dHJ1ZSk7CiAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwogCi0gICAgaWYg
KG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkKSkg
eworICAgIGlmIChtX2NhY2hlRGlzYWJsZWQpIHsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoIlByYWdtYSIsICJuby1jYWNoZSIpOwogICAgICAgICByZXF1ZXN0LnNldENhY2hl
UG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKQEAgLTQyNCw5ICs0MjEs
OCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlcwogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmFwcGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpCiB7Ci0gICAgU3Ry
aW5nIHVzZXJBZ2VudE92ZXJyaWRlID0gbV9zdGF0ZS0+Z2V0U3RyaW5nKFJlc291cmNlQWdlbnRT
dGF0ZTo6dXNlckFnZW50T3ZlcnJpZGUpOwotICAgIGlmICghdXNlckFnZW50T3ZlcnJpZGUuaXNF
bXB0eSgpKQotICAgICAgICAqdXNlckFnZW50ID0gdXNlckFnZW50T3ZlcnJpZGU7CisgICAgaWYg
KCFtX3VzZXJBZ2VudE92ZXJyaWRlLmlzTnVsbCgpKQorICAgICAgICAqdXNlckFnZW50ID0gbV91
c2VyQWdlbnRPdmVycmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxs
UmVjYWxjdWxhdGVTdHlsZSgpCkBAIC01NDAsMjEgKzUzNiwyMSBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmVuYWJsZSgpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291
cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCh0aGlzKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVu
YWJsZWQsIGZhbHNlKTsKLSAgICBtX3N0YXRlLT5zZXRTdHJpbmcoUmVzb3VyY2VBZ2VudFN0YXRl
Ojp1c2VyQWdlbnRPdmVycmlkZSwgIiIpOworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1f
dXNlckFnZW50T3ZlcnJpZGUgPSBTdHJpbmcoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvclJlc291cmNlQWdlbnQoMCk7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVh
cigpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJy
aWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgbV9zdGF0
ZS0+c2V0U3RyaW5nKFJlc291cmNlQWdlbnRTdGF0ZTo6dXNlckFnZW50T3ZlcnJpZGUsIHVzZXJB
Z2VudCk7CisgICAgbV91c2VyQWdlbnRPdmVycmlkZSA9IHVzZXJBZ2VudDsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhlYWRlcnMpCkBAIC02NDEsMTQgKzYzNywx
NCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyQnJvd3NlckNvb2tpZXMoRXJy
b3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldENhY2hlRGlzYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGNhY2hlRGlzYWJsZWQpCiB7Ci0gICAgbV9zdGF0ZS0+c2V0
Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQsIGNhY2hlRGlzYWJsZWQp
OworICAgIG1fY2FjaGVEaXNhYmxlZCA9IGNhY2hlRGlzYWJsZWQ7CiAgICAgaWYgKGNhY2hlRGlz
YWJsZWQpCiAgICAgICAgIG1lbW9yeUNhY2hlKCktPmV2aWN0UmVzb3VyY2VzKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2Vu
dFN0YXRlOjpjYWNoZURpc2FibGVkKSkKKyAgICBpZiAobV9jYWNoZURpc2FibGVkKQogICAgICAg
ICBtZW1vcnlDYWNoZSgpLT5ldmljdFJlc291cmNlcygpOwogCiAgICAgbV9yZXNvdXJjZXNEYXRh
LT5jbGVhcihtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSk7CkBAIC02NjAsNiArNjU2LDgg
QEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShhZG9wdFB0cihuZXcgTmV0d29y
a1Jlc291cmNlc0RhdGEoKSkpCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2NhY2hl
RGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5KGZhbHNlKQog
ICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGY2ZmE5MTcuLjcw
NzIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaApAQCAtMTYwLDYgKzE2MCw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJv
bnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50T3ZlcnJp
ZGU7CiAgICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7Cisg
ICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBt
X2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4+IFBlbmRpbmdYSFJSZXBsYXlE
YXRhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCmluZGV4IGRlM2JmMGIuLjc0ZjEwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTU3LDEzICs1
Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFRpbWVsaW5lQWdlbnRT
dGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciB0aW1lbGluZUFnZW50RW5hYmxlZFtdID0gInRpbWVs
aW5lQWdlbnRFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIHRpbWVsaW5lTWF4Q2FsbFN0YWNr
RGVwdGhbXSA9ICJ0aW1lbGluZU1heENhbGxTdGFja0RlcHRoIjsKLXN0YXRpYyBjb25zdCBjaGFy
IGluY2x1ZGVEb21Db3VudGVyc1tdID0gImluY2x1ZGVEb21Db3VudGVycyI7Ci1zdGF0aWMgY29u
c3QgY2hhciBpbmNsdWRlTmF0aXZlTWVtb3J5U3RhdGlzdGljc1tdID0gImluY2x1ZGVOYXRpdmVN
ZW1vcnlTdGF0aXN0aWNzIjsKLX0KLQogdm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0
KCkKIHsKICAgICBtX3N0YXJ0T2Zmc2V0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
LSBjdXJyZW50VGltZSgpOwpAQCAtOTUsMTggKzg4LDIxIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRo
LCBjCiAgICAgICAgIG1fbWF4Q2FsbFN0YWNrRGVwdGggPSAqbWF4Q2FsbFN0YWNrRGVwdGg7CiAg
ICAgZWxzZQogICAgICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKLSAgICBtX3N0YXRlLT5z
ZXRMb25nKFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVNYXhDYWxsU3RhY2tEZXB0aCwgbV9t
YXhDYWxsU3RhY2tEZXB0aCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50
U3RhdGU6OmluY2x1ZGVEb21Db3VudGVycywgaW5jbHVkZURvbUNvdW50ZXJzICYmICppbmNsdWRl
RG9tQ291bnRlcnMpOwotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRl
OjppbmNsdWRlTmF0aXZlTWVtb3J5U3RhdGlzdGljcywgaW5jbHVkZU5hdGl2ZU1lbW9yeVN0YXRp
c3RpY3MgJiYgKmluY2x1ZGVOYXRpdmVNZW1vcnlTdGF0aXN0aWNzKTsKKworICAgIGlmIChpbmNs
dWRlRG9tQ291bnRlcnMpCisgICAgICAgIG1faW5jbHVkZURPTUNvdW50ZXJzID0gKmluY2x1ZGVE
b21Db3VudGVyczsKKworICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlTmF0aXZlTWVtb3J5U3RhdGlz
dGljcyk7CisKICAgICBtX3RpbWVDb252ZXJ0ZXIucmVzZXQoKTsKIAogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKLSAgICBtX3N0YXRl
LT5zZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQsIHRy
dWUpOworICAgIG1fZW5hYmxlZCA9IHRydWU7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RvcChFcnJvclN0cmluZyopCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFu
KFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQpKQorICAgIGlmICghbV9l
bmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3dlYWtGYWN0b3J5LnJldm9rZUFsbCgp
OwpAQCAtMTE0LDcgKzExMCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcChF
cnJvclN0cmluZyopCiAKICAgICBjbGVhclJlY29yZFN0YWNrKCk7CiAKLSAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQsIGZhbHNl
KTsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpjYW5Nb25pdG9yTWFpblRocmVhZChFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKQEAg
LTU0MCw3ICs1MzYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50
ZXJzKFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudAogewogICAgIHJlY29yZC0+
c2V0VXNlZEhlYXBTaXplKHVzZWRIZWFwU2l6ZSgpKTsKIAotICAgIGlmIChtX3N0YXRlLT5nZXRC
b29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6aW5jbHVkZURvbUNvdW50ZXJzKSkgeworICAgIGlm
IChtX2luY2x1ZGVET01Db3VudGVycykgewogICAgICAgICBpbnQgZG9jdW1lbnRDb3VudCA9IDA7
CiAgICAgICAgIGludCBub2RlQ291bnQgPSAwOwogICAgICAgICBpZiAobV9pbnNwZWN0b3JUeXBl
ID09IFBhZ2VJbnNwZWN0b3IpIHsKQEAgLTU5NCw2ICs1OTAsOCBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbgogICAgICwgbV9pbnNwZWN0b3JUeXBlKHR5cGUpCiAgICAgLCBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3dlYWtGYWN0b3J5KHRoaXMpCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX2luY2x1ZGVET01Db3VudGVycyhmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggZTIwZjdlYi4u
NjFhNGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oCkBAIC0yNzEsNiArMjcxLDkgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JU
eXBlIG1faW5zcGVjdG9yVHlwZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAg
IFdlYWtQdHJGYWN0b3J5PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fd2Vha0ZhY3Rvcnk7CisK
KyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1faW5jbHVkZURPTUNvdW50ZXJzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggYTY3MjYzMC4uYTNmY2UyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBA
IC00NiwxMSArNDYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXb3Jr
ZXJBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHdvcmtlckluc3BlY3Rpb25FbmFibGVk
W10gPSAid29ya2VySW5zcGVjdGlvbkVuYWJsZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgYXV0b2Nv
bm5lY3RUb1dvcmtlcnNbXSA9ICJhdXRvY29ubmVjdFRvV29ya2VycyI7Ci19OwotCiBjbGFzcyBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTE1LDYgKzExMCw4IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9y
V29ya2VyQWdlbnQ+IEluc3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0Fn
ZW50CiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUq
IGluc3BlY3RvclN0YXRlKQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvcldvcmtl
ckFnZW50PigiV29ya2VyIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUpCiAg
ICAgLCBtX2luc3BlY3RvckZyb250ZW5kKDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAg
LCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChmYWxzZSkKIHsKICAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvcldvcmtlckFnZW50KHRoaXMpOwogfQpAQCAt
MTMxLDE0ICsxMjgsMTQgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2V0RnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50
OjpjbGVhckZyb250ZW5kKCkKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFdvcmtlckFnZW50
U3RhdGU6OmF1dG9jb25uZWN0VG9Xb3JrZXJzLCBmYWxzZSk7CisgICAgbV9zaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnQgPSBmYWxzZTsKICAgICBkaXNhYmxlKDApOwogICAgIG1faW5z
cGVjdG9yRnJvbnRlbmQgPSAwOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjplbmFi
bGUoRXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oV29ya2VyQWdlbnRT
dGF0ZTo6d29ya2VySW5zcGVjdGlvbkVuYWJsZWQsIHRydWUpOworICAgIG1fZW5hYmxlZCA9IHRy
dWU7CiAgICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5kKQogICAgICAgICByZXR1cm47CiAgICAg
Y3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsc0ZvckV4aXN0aW5nV29ya2VycygpOwpAQCAtMTQ2
LDcgKzE0Myw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmlu
ZyopCiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQog
ewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oV29ya2VyQWdlbnRTdGF0ZTo6d29ya2VySW5zcGVj
dGlvbkVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKICAgICBpZiAoIW1f
aW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKICAgICBkZXN0cm95V29ya2VyRnJv
bnRlbmRDaGFubmVscygpOwpAQCAtMTkwLDE4ICsxODcsMTggQEAgdm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZCwKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2V0QXV0b2Nvbm5lY3RUb1dvcmtl
cnMoRXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4o
V29ya2VyQWdlbnRTdGF0ZTo6YXV0b2Nvbm5lY3RUb1dvcmtlcnMsIHZhbHVlKTsKKyAgICBtX3No
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCA9IHZhbHVlOwogfQogCi1ib29sIEluc3Bl
Y3RvcldvcmtlckFnZW50OjpzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoKQorYm9v
bCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0
YXRlOjphdXRvY29ubmVjdFRvV29ya2Vycyk7CisgICAgcmV0dXJuIG1fc2hvdWxkUGF1c2VEZWRp
Y2F0ZWRXb3JrZXJPblN0YXJ0OwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRT
dGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2Jh
bFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fZGVkaWNhdGVkV29ya2Vycy5z
ZXQod29ya2VyR2xvYmFsU2NvcGVQcm94eSwgdXJsLnN0cmluZygpKTsKLSAgICBpZiAobV9pbnNw
ZWN0b3JGcm9udGVuZCAmJiBtX3N0YXRlLT5nZXRCb29sZWFuKFdvcmtlckFnZW50U3RhdGU6Ondv
cmtlckluc3BlY3Rpb25FbmFibGVkKSkKKyAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZCAmJiBt
X2VuYWJsZWQpCiAgICAgICAgIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbCh3b3JrZXJHbG9i
YWxTY29wZVByb3h5LCB1cmwuc3RyaW5nKCkpOwogfQogCkBAIC0yMzksMTAgKzIzNiw5IEBAIHZv
aWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5KiB3CiAgICAgbV9pZFRvQ2hhbm5lbC5zZXQoY2hhbm5lbC0+aWQo
KSwgY2hhbm5lbCk7CiAKICAgICBBU1NFUlQobV9pbnNwZWN0b3JGcm9udGVuZCk7Ci0gICAgYm9v
bCBhdXRvY29ubmVjdFRvV29ya2VycyA9IG1fc3RhdGUtPmdldEJvb2xlYW4oV29ya2VyQWdlbnRT
dGF0ZTo6YXV0b2Nvbm5lY3RUb1dvcmtlcnMpOwotICAgIGlmIChhdXRvY29ubmVjdFRvV29ya2Vy
cykKKyAgICBpZiAobV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQpCiAgICAgICAg
IGNoYW5uZWwtPmNvbm5lY3RUb1dvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAgbV9pbnNwZWN0b3JG
cm9udGVuZC0+d29ya2VyKCktPndvcmtlckNyZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBhdXRv
Y29ubmVjdFRvV29ya2Vycyk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+d29ya2VyKCktPndv
cmtlckNyZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29y
a2VyT25TdGFydCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggZjc0NTJmZS4uYTFj
MmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZy
b250ZW5kKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24K
LSAgICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpOworICAgIGJvb2wg
c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkgY29uc3Q7CiAgICAgdm9pZCBkaWRT
dGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBVUkwm
KTsKICAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWluYXRlZChXb3JrZXJHbG9iYWxTY29w
ZVByb3h5Kik7CiAKQEAgLTc2LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lX
b3JrZXJGcm9udGVuZENoYW5uZWxzKCk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9pbnNw
ZWN0b3JGcm9udGVuZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fc2hvdWxkUGF1
c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0OwogCiAgICAgY2xhc3MgV29ya2VyRnJvbnRlbmRDaGFu
bmVsOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFdvcmtlckZyb250ZW5kQ2hhbm5lbCo+IFdv
cmtlckNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDRiZjcyMDguLjI5YTIwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUwLDEwICs1MCw2IEBAIHVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFBhZ2VSdW50aW1lQWdlbnRTdGF0ZSB7
Ci1zdGF0aWMgY29uc3QgY2hhciBydW50aW1lRW5hYmxlZFtdID0gInJ1bnRpbWVFbmFibGVkIjsK
LX07Ci0KIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIHN0YXRl
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFn
ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQpAQCAtODcsNyArODMsNyBAQCB2b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5hYmxlKGVycm9yU3RyaW5nKTsK
LSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VSdW50aW1lQWdlbnRTdGF0ZTo6cnVudGltZUVu
YWJsZWQsIHRydWUpOworCiAgICAgLy8gT25seSByZXBvcnQgZXhpc3RpbmcgY29udGV4dHMgaWYg
dGhlIHBhZ2UgZGlkIGNvbW1pdCBsb2FkLCBvdGhlcndpc2Ugd2UgbWF5CiAgICAgLy8gdW5pbnRl
bnRpb25hbGx5IGluaXRpYWxpemUgY29udGV4dHMgaW4gdGhlIGZyYW1lcyB3aGljaCBtYXkgdHJp
Z2dlciBzb21lIGxpc3RlbmVycwogICAgIC8vIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHRyaWdn
ZXJlZCBvbmx5IGFmdGVyIHRoZSBsb2FkIGlzIGNvbW1pdHRlZCwgc2VlIGh0dHA6Ly9jcmJ1Zy5j
b20vMTMxNjIzCkBAIC0xMDEsNyArOTcsNiBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGUoZXJyb3JTdHJpbmcpOwotICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpydW50aW1lRW5hYmxlZCwgZmFsc2UpOwog
fQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQoRnJh
bWUqIGZyYW1lKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>