<?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>60359</bug_id>
          
          <creation_ts>2011-05-06 04:05:29 -0700</creation_ts>
          <short_desc>Web Inspector: move agents from InspectorAgent to InspectorController</short_desc>
          <delta_ts>2011-05-12 03:48:59 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60624</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>399449</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-06 04:05:29 -0700</bug_when>
    <thetext>Web Inspector: move agents from InspectorAgent to InspectorController. Now InspectorAgent is a special one that creates and owns all other agents. All agents should be created and owned by InspectorController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399527</commentid>
    <comment_count>1</comment_count>
      <attachid>92585</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-06 08:29:24 -0700</bug_when>
    <thetext>Created attachment 92585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399530</commentid>
    <comment_count>2</comment_count>
      <attachid>92586</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-06 08:44:29 -0700</bug_when>
    <thetext>Created attachment 92586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399538</commentid>
    <comment_count>3</comment_count>
      <attachid>92586</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-06 08:57:35 -0700</bug_when>
    <thetext>Comment on attachment 92586
Patch

Attachment 92586 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8589297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399588</commentid>
    <comment_count>4</comment_count>
      <attachid>92585</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-05-06 10:05:56 -0700</bug_when>
    <thetext>Comment on attachment 92585
Patch

Attachment 92585 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8605031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401105</commentid>
    <comment_count>5</comment_count>
      <attachid>92931</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-10 01:54:51 -0700</bug_when>
    <thetext>Created attachment 92931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401279</commentid>
    <comment_count>6</comment_count>
      <attachid>92931</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-05-10 10:06:12 -0700</bug_when>
    <thetext>Comment on attachment 92931
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:796
&gt; +    if (InspectorDebuggerAgent* debuggerAgent = inspectorAgent-&gt;instrumentingAgents()-&gt;inspectorDebuggerAgent())

I think it is time to store instrumenting agents pointer in a map within InspectorInstrumentation. It does not make sense to access it via inspectorAgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401808</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-10 23:58:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92931&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:796
&gt; &gt; +    if (InspectorDebuggerAgent* debuggerAgent = inspectorAgent-&gt;instrumentingAgents()-&gt;inspectorDebuggerAgent())
&gt; 
&gt; I think it is time to store instrumenting agents pointer in a map within InspectorInstrumentation. It does not make sense to access it via inspectorAgent.

I believe that it deserves a separate change. This one is already quite big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401958</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-11 07:29:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92931&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:796
&gt; &gt; +    if (InspectorDebuggerAgent* debuggerAgent = inspectorAgent-&gt;instrumentingAgents()-&gt;inspectorDebuggerAgent())
&gt; 
&gt; I think it is time to store instrumenting agents pointer in a map within InspectorInstrumentation. It does not make sense to access it via inspectorAgent.

I did this in a separate change: https://bugs.webkit.org/show_bug.cgi?id=60624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402777</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-12 03:48:59 -0700</bug_when>
    <thetext>Committed r86327: &lt;http://trac.webkit.org/changeset/86327&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92585</attachid>
            <date>2011-05-06 08:29:24 -0700</date>
            <delta_ts>2011-05-06 10:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60359-20110506192921.patch</filename>
            <type>text/plain</type>
            <size>47558</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MjlmYTc4YWUxYTlmYzQ1
OWIzMmE0ODIwODhiYTMxYTdlZDNlZGM5Li5jMmVhOGY3YjUwMGNmZGQ4YWZkMzRlNTYzNjMxZjIy
OWZmYTU4ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTEtMDUtMDYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBhZ2VudHMgZnJv
bSBJbnNwZWN0b3JBZ2VudCB0byBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDM1OQorCisgICAgICAgIEFsbCBpbnNw
ZWN0b3IgYWdlbnRzIGFyZSBub3cgY3JlYXRlZCBhbmQgb3duZWQgYnkgSW5zcGVjdG9yQ29udHJv
bGxlciB3aGljaAorICAgICAgICBpbiB0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGluc3BlY3RlZCBQ
YWdlLiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gZ2V0cyBhY2Nlc3MKKyAgICAgICAgdG8gdGhl
IGluc3RydW1lbnRpbmcgYWdlbnRzIGJ5IG1lYW5zIG9mIEluc3BlY3RvckFnZW50OjppbnN0cnVt
ZW50aW5nQWdlbnRzKCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gbWFuYWdpbmcgaW5zcGVj
dG9yIGFnZW50cyBsaWZldGltZSBJbnNwZWN0b3JDb250cm9sbGVyIHNldHMKKyAgICAgICAgSW5z
cGVjdG9yRnJvbnRlZCBvbiB0aGUgYWdlbnRzIHdoZW4gdGhlIGZyb250LWVuZCBpcyBjb25uZWN0
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50Ojpj
bGVhckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDogYWxs
IGFjY2Vzc29ycyB0byBvdGhlciBhZ2VudHMgd2VyZSByZW1vdmVkIGFsb25nIHdpdGgKKyAgICAg
ICAgdGhlIGFnZW50cyB0aGVtc2VsdmVzIGZyb20gSW5zcGVjdG9yQWdlbnQuIEV2ZXJ5IGFnZW50
IHRoYXQgZGVwZW5kcyBvbiBzb21lIG90aGVyIGFnZW50cworICAgICAgICByZWNlaXZlcyBwb2lu
dGVycyB0byB0aGVtIGV4cGxpY2l0ZWx5IGluIGl0cyBjb25zdHJ1Y3Rvci4gQWxsIGFjY2VzcyB0
byB0aGUgYWdlbnRzCisgICAgICAgIGZyb20gV2ViQ29yZSBzaG91bGQgZ28gdGhyb3VnaCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggcmV0cmlldmVzIGNvcnJlc3BvbmRpbmcKKyAgICAg
ICAgYWdlbnRzIHVzaW5nIEluc3RydW1lbnRpbmdBZ2VudHMgc3RydWN0dXJlIHdoaWNoIHJlcHJl
c2VudHMgdGhlIHNldCBvZiBhY3RpdmUgYWdlbnRzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQWdlbnQ6Omluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWVsaW5lUHJvZmlsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWVsaW5lUHJvZmlsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5zcGVjdG9y
U3RhdGVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGlt
ZWxpbmVQcm9maWxlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpoaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZW5hYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkZWJ1Z2dlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppc1JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2Rl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1v
ZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0Nv
bnNvbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkUHJvZmlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9u
TmF0aXZlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp+UGFnZSk6IHdlIHNlbmQgdHdvIG5vdGlmaWNhdGlvbnMgd2hlbiBpbnNwZWN0ZWQg
UGFnZSBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQ6IG9uZSB0byB0aGUgaW5zcGVjdG9yIGlu
c3RydW1lbnRhdGlvbiBhbmQgYW5vdGhlciBvbmUgdG8gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIK
KyAgICAgICAgd2hpY2ggaXMgb3duZWQgYnkgdGhlIFBhZ2UuCisKIDIwMTEtMDUtMDYgIEpvZSBN
YXNvbiAgPGptYXNvbkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXgg
YjU5MmQ5YmFlMDg1N2RkYjE1ZGRmYTVlY2QwMjY3NWNmY2FhNThmNC4uN2IzODQxNDkxOWExZjYx
ZWVhNmYwMTBhNTA1NTgxMDQyZGE2MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JW
YWx1ZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTY3JpcHRWYWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDcy
MzBlMDEyYmIxMzg0OGMxODFmZWIyNzJhZWU1MTI2YmY2NmRhOWMuLjhkZTA4NDIxMWQ2N2JkMTU0
YzUyZGI3YThiNDNjZmE1M2ZkMzM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcApAQCAtMzksNDMgKzM5LDIwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
Q2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclN0YXRlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dl
ckFnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotCi0jaWYgRU5BQkxFKERBVEFCQVNF
KQotI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCIKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQotI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotI2luY2x1ZGUg
Ikluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgotI2VuZGlmCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTkwLDY5ICs2NywxNyBAQCBzdGF0aWMgY29uc3QgY2hhciBzY3JpcHRzUGFu
ZWxOYW1lW10gPSAic2NyaXB0cyI7CiBzdGF0aWMgY29uc3QgY2hhciBjb25zb2xlUGFuZWxOYW1l
W10gPSAiY29uc29sZSI7CiBzdGF0aWMgY29uc3QgY2hhciBwcm9maWxlc1BhbmVsTmFtZVtdID0g
InByb2ZpbGVzIjsKIAotbmFtZXNwYWNlIHsKLQotY2xhc3MgUGFnZVJ1bnRpbWVBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgewotcHVibGljOgotICAgIFBhZ2VSdW50aW1lQWdl
bnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIFBhZ2UqIHBh
Z2UpCi0gICAgICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdl
cikKLSAgICAgICAgLCBtX2luc3BlY3RlZFBhZ2UocGFnZSkgeyB9Ci0gICAgdmlydHVhbCB+UGFn
ZVJ1bnRpbWVBZ2VudCgpIHsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgU2NyaXB0U3RhdGUq
IGdldERlZmF1bHRJbnNwZWN0ZWRTdGF0ZSgpIHsgcmV0dXJuIG1haW5Xb3JsZFNjcmlwdFN0YXRl
KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpOyB9Ci0gICAgUGFnZSogbV9pbnNwZWN0ZWRQ
YWdlOwotfTsKLQotfQotCi1JbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoUGFnZSogcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogICAgIDogbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCi0g
ICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Zyb250ZW5kKDApCi0gICAgLCBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMoYWRvcHRQdHIobmV3IEluc3RydW1lbnRpbmdBZ2VudHMpKQorICAgICwg
bV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3N0YXRlKGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JTdGF0ZShjbGllbnQpKSkKLSAgICAsIG1fcGFnZUFnZW50KElu
c3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFn
ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSkKLSAgICAsIG1fZG9tQWdlbnQoSW5zcGVjdG9yRE9N
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fcGFnZUFnZW50Lmdl
dCgpLCBtX2NsaWVudCwgbV9zdGF0ZS5nZXQoKSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSkKLSAg
ICAsIG1fY3NzQWdlbnQoYWRvcHRQdHIobmV3IEluc3BlY3RvckNTU0FnZW50KG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSkpKQotI2lmIEVOQUJMRShEQVRBQkFT
RSkKLSAgICAsIG1fZGF0YWJhc2VBZ2VudChJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSkKLSNlbmRpZgotI2lm
IEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAsIG1fZG9tU3RvcmFnZUFnZW50KEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS5nZXQoKSkpCi0jZW5kaWYKLSAgICAsIG1fdGltZWxpbmVBZ2VudChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
KSkKLSNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgICwgbV9hcHBsaWNh
dGlvbkNhY2hlQWdlbnQoYWRvcHRQdHIobmV3IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2UpKSkKLSNlbmRpZgotICAgICwgbV9y
ZXNvdXJjZUFnZW50KEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fcGFnZUFnZW50LmdldCgpLCBtX3N0YXRlLmdldCgpKSkKLSAgICAs
IG1fcnVudGltZUFnZW50KGFkb3B0UHRyKG5ldyBQYWdlUnVudGltZUFnZW50KG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBwYWdlKSkpCi0gICAgLCBtX2NvbnNvbGVBZ2VudChhZG9wdFB0cihuZXcg
SW5zcGVjdG9yQ29uc29sZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgdGhpcywg
bV9zdGF0ZS5nZXQoKSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2RvbUFnZW50LmdldCgpKSkp
Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgLCBtX2RlYnVnZ2VyQWdlbnQo
UGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCksIHBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpCi0gICAgLCBtX2RvbURl
YnVnZ2VyQWdlbnQoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSwgbV9kZWJ1
Z2dlckFnZW50LmdldCgpLCB0aGlzKSkKLSAgICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2NvbnNv
bGVBZ2VudC5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCi0jZW5kaWYKLSNpZiBFTkFCTEUo
V09SS0VSUykKLSAgICAsIG1fd29ya2VyQWdlbnQoSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQotI2VuZGlmCiAgICAgLCBtX2Nhbklzc3Vl
RXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChmYWxzZSkKIHsKICAgICBBU1NFUlRfQVJHKHBhZ2Us
IHBhZ2UpOwogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YmluZEluc3BlY3RvckFnZW50KG1faW5zcGVjdGVkUGFnZSwgdGhpcyk7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudCh0aGlzKTsKLQot
ICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+aW5pdCh0
aGlzCi0gICAgICAgICwgbV9jb25zb2xlQWdlbnQuZ2V0KCkKLSNpZiBFTkFCTEUoREFUQUJBU0Up
Ci0gICAgICAgICwgbV9kYXRhYmFzZUFnZW50LmdldCgpCi0jZW5kaWYKLSNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCi0gICAgICAgICwgbV9kb21TdG9yYWdlQWdlbnQuZ2V0KCkKLSNlbmRpZgotICAg
ICk7CiB9CiAKIEluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQoKQpAQCAtMTYwLDU0ICs4
NSwyMSBAQCBJbnNwZWN0b3JBZ2VudDo6fkluc3BlY3RvckFnZW50KCkKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KDApOwogCiAgICAgLy8gVGhlc2Ugc2hvdWxk
IGhhdmUgYmVlbiBjbGVhcmVkIGluIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKS4KLSAgICBBU1NF
UlQoIW1fY2xpZW50KTsKICAgICBBU1NFUlQoIW1faW5zcGVjdGVkUGFnZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGlmIChtX2Zy
b250ZW5kKSB7CisgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3Bl
Y3RvcigpLT5kaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKLSAgICAgICAgZGlzY29ubmVjdEZyb250
ZW5kKCk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgbV9k
b21EZWJ1Z2dlckFnZW50LmNsZWFyKCk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50LmNsZWFyKCk7Ci0j
ZW5kaWYKLQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6dW5iaW5kSW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0ZWRQYWdlKTsKICAgICBt
X2luc3BlY3RlZFBhZ2UgPSAwOwotCi0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nv
bm5lY3QoKTsKLQotICAgIG1fY2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKLSAgICBtX2Ns
aWVudCA9IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmVJbnNwZWN0b3JTdGF0
ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSkKK3ZvaWQgSW5z
cGVjdG9yQWdlbnQ6OnJlc3RvcmUoKQogewotICAgIG1fc3RhdGUtPmxvYWRGcm9tQ29va2llKGlu
c3BlY3RvclN0YXRlQ29va2llKTsKLQogICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5mcm9u
dGVuZFJldXNlZCgpOwotCi0gICAgbV9kb21BZ2VudC0+cmVzdG9yZSgpOwotICAgIG1fcmVzb3Vy
Y2VBZ2VudC0+cmVzdG9yZSgpOwotICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzdG9yZSgpOwotCi0j
aWYgRU5BQkxFKERBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VBZ2VudC0+cmVzdG9yZSgpOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgbV9kb21TdG9yYWdlQWdlbnQtPnJl
c3RvcmUoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
bV9kZWJ1Z2dlckFnZW50LT5yZXN0b3JlKCk7Ci0gICAgbV9wcm9maWxlckFnZW50LT5yZXN0b3Jl
KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTIyMSwz
MCArMTEzLDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKgogCiB2b2lkIEluc3BlY3RvckFnZW50
OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQpCiB7Ci0g
ICAgLy8gV2UgY2FuIHJlY29ubmVjdCB0byBleGlzdGluZyBmcm9udC1lbmQgLT4gdW5tdXRlIHN0
YXRlLgotICAgIG1fc3RhdGUtPnVubXV0ZSgpOwotCiAgICAgbV9mcm9udGVuZCA9IGluc3BlY3Rv
ckZyb250ZW5kOwogCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBt
X2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0jZW5kaWYK
LSAgICBtX3BhZ2VBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0gICAgbV9kb21BZ2Vu
dC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPnNldEZyb250
ZW5kKG1fZnJvbnRlbmQpOwotICAgIG1fdGltZWxpbmVBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9u
dGVuZCk7Ci0gICAgbV9yZXNvdXJjZUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEZy
b250ZW5kKG1fZnJvbnRlbmQpOwotICAgIG1fcHJvZmlsZXJBZ2VudC0+c2V0RnJvbnRlbmQobV9m
cm9udGVuZCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgbV9kYXRhYmFzZUFn
ZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRpZgotI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKLSAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0j
ZW5kaWYKLQogICAgIGlmICghbV9zaG93UGFuZWxBZnRlclZpc2libGUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5zaG93UGFuZWwobV9zaG93UGFuZWxBZnRl
clZpc2libGUpOwogICAgICAgICBtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZSA9IFN0cmluZygpOwpA
QCAtMjU2LDUyICsxMjYsMTYgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKQogICAgICAgICBtX2Zyb250ZW5kLT5p
bnNwZWN0b3IoKS0+ZGlkQ3JlYXRlV29ya2VyKHdvcmtlci0+aWQoKSwgd29ya2VyLT51cmwoKSwg
d29ya2VyLT5pc1NoYXJlZFdvcmtlcigpKTsKICAgICB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICBtX3dvcmtlckFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRp
ZgogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcwogICAgIGlzc3Vl
RXZhbHVhdGVGb3JUZXN0Q29tbWFuZHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlz
Y29ubmVjdEZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQog
ewotICAgIGlmICghbV9mcm9udGVuZCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9jYW5Jc3N1
ZUV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBmYWxzZTsKICAgICBtX3BlbmRpbmdFdmFsdWF0
ZVRlc3RDb21tYW5kcy5jbGVhcigpOwotCi0gICAgLy8gRGVzdHJveWluZyBhZ2VudHMgd291bGQg
Y2hhbmdlIHRoZSBzdGF0ZSwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdC4KLSAgICAvLyBQcmUtZGlz
Y29ubmVjdCBzdGF0ZSB3aWxsIGJlIHVzZWQgdG8gcmVzdG9yZSBpbnNwZWN0b3IgYWdlbnRzLgot
ICAgIG1fc3RhdGUtPm11dGUoKTsKLQogICAgIG1fZnJvbnRlbmQgPSAwOwotCi0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgbV9kZWJ1Z2dlckFnZW50LT5jbGVhckZyb250ZW5k
KCk7Ci0gICAgbV9kb21EZWJ1Z2dlckFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9wcm9m
aWxlckFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShPRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpCi0gICAgbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQtPmNsZWFyRnJv
bnRlbmQoKTsKLSNlbmRpZgotCi0gICAgbV9jb25zb2xlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsK
LSAgICBtX2RvbUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV90aW1lbGluZUFnZW50LT5j
bGVhckZyb250ZW5kKCk7Ci0gICAgbV9yZXNvdXJjZUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0j
aWYgRU5BQkxFKERBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgp
OwotI2VuZGlmCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIG1fZG9tU3RvcmFnZUFnZW50
LT5jbGVhckZyb250ZW5kKCk7Ci0jZW5kaWYKLSAgICBtX3BhZ2VBZ2VudC0+Y2xlYXJGcm9udGVu
ZCgpOwotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIG1fd29ya2VyQWdlbnQtPmNsZWFyRnJvbnRl
bmQoKTsKLSNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2FkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggNTA5YWQ3MGZi
ZmE4YzUzODdkOTRhNDdiMGRmMDRjNTYxNzBlZTk0ZS4uYWZiZjRmNjNkNzgzZjRiOTdmMjBhOTY4
Y2JiNjNjNzYzNjU1M2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2NiArMzAsMjUgQEAKICNpZm5kZWYgSW5zcGVjdG9yQWdl
bnRfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudF9oCiAKLSNpbmNsdWRlICJDaGFyYWN0ZXJEYXRh
LmgiCi0jaW5jbHVkZSAiQ29uc29sZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ2hhcmFjdGVyRGF0YTsKLWNsYXNzIERhdGFiYXNlOwogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwotY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsK
LWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBJbmplY3RlZFNj
cmlwdDsKK2NsYXNzIEZyYW1lOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwotY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOwotY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsK
IGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1jbGFz
cyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsK
LWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwotY2xh
c3MgSW5zcGVjdG9yU3RvcmFnZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsK
LWNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ7CiBjbGFz
cyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1j
bGFzcyBJbnRSZWN0OwogY2xhc3MgS1VSTDsKLWNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBTY3JpcHRBcmd1bWVudHM7Ci1jbGFzcyBTY3JpcHRDYWxsU3RhY2s7
Ci1jbGFzcyBTY3JpcHRQcm9maWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgU3RvcmFn
ZUFyZWE7Ci0KLSNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotY2xhc3MgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwotI2VuZGlmCiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCkBAIC05NiwxMSArNTYsOSBAQCBjbGFzcyBJbnNwZWN0b3JBZ2VudCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJbnNwZWN0
b3JDbGllbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJbnNwZWN0b3JBZ2VudChQ
YWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdl
bnQoKTsKIAotICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KLQogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogCiAgICAg
Ym9vbCBlbmFibGVkKCkgY29uc3Q7CkBAIC0xMTEsMzggKzY5LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbG9hZFBhZ2UoRXJyb3JTdHJpbmcqLCBib29sIGlnbm9yZUNhY2hlKTsKICAgICB2b2lk
IHNob3dDb25zb2xlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29r
aWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JDb29raWUpOwotCiAgICAgdm9pZCBzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRlbmQ7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVu
ZCgpOwotCi0gICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKTsgfQotCi0gICAgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudC5nZXQoKTsgfQot
ICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KCkgeyByZXR1cm4gbV9jb25z
b2xlQWdlbnQuZ2V0KCk7IH0KLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQoKSB7IHJl
dHVybiBtX2Nzc0FnZW50LmdldCgpOyB9Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50
KCkgeyByZXR1cm4gbV9kb21BZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCogcnVudGltZUFnZW50KCkgeyByZXR1cm4gbV9ydW50aW1lQWdlbnQuZ2V0KCk7IH0KLSAgICBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGlu
ZUFnZW50LmdldCgpOyB9Ci0gICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2Vu
dCgpIHsgcmV0dXJuIG1fcmVzb3VyY2VBZ2VudC5nZXQoKTsgfQotI2lmIEVOQUJMRShEQVRBQkFT
RSkKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50KCkgeyByZXR1cm4g
bV9kYXRhYmFzZUFnZW50LmdldCgpOyB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
Ci0gICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSB7IHJldHVy
biBtX2RvbVN0b3JhZ2VBZ2VudC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tRGVidWdnZXJBZ2VudC5nZXQoKTsgfQotICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnZ2VyQWdlbnQuZ2V0KCk7IH0KLSAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxl
ckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlckFnZW50LmdldCgpOyB9Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyByZXR1cm4gbV9hcHBs
aWNhdGlvbkNhY2hlQWdlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQot
ICAgIEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCgpIHsgcmV0dXJuIG1fd29ya2Vy
QWdlbnQuZ2V0KCk7IH0KLSNlbmRpZgorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZv
aWQgcmVzdG9yZSgpOworCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50czsgfQogCiAgICAgdm9p
ZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsK
IApAQCAtMTY5LDggKzEwMSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW5zcGVjdG9yRXh0
ZW5zaW9uQVBJKGNvbnN0IFN0cmluZyYgc291cmNlKTsKIAotICAgIEluc3BlY3RvclN0YXRlKiBz
dGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGUuZ2V0KCk7IH0KLQogICAgIC8vIEluc3BlY3RvckFnZW50
IEFQSQogICAgIHZvaWQgZ2V0SW5zcGVjdG9yU3RhdGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHN0YXRlKTsKICAgICB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVkKGJvb2wgZW5hYmxlZCwg
Ym9vbCogbmV3U3RhdGUpOwpAQCAtMTg3LDQ2ICsxMTcsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGlzc3VlRXZhbHVhdGVGb3JUZXN0Q29tbWFuZHMoKTsKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVk
UGFnZTsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEluc3BlY3RvckZyb250
ZW5kKiBtX2Zyb250ZW5kOwotICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHM7CisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5n
QWdlbnRzOwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7Ci0gICAgT3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwotICAgIE93blB0cjxJbnNw
ZWN0b3JQYWdlQWdlbnQ+IG1fcGFnZUFnZW50OwotICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2Vu
dD4gbV9kb21BZ2VudDsKLSAgICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7
Ci0KLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ+IG1fZGF0YWJhc2VBZ2VudDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
ICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IG1fZG9tU3RvcmFnZUFnZW50Owot
I2VuZGlmCi0KLSAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFn
ZW50OwotCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBPd25QdHI8
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudDsK
LSNlbmRpZgotCi0gICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IG1fcmVzb3VyY2VB
Z2VudDsKLSAgICBPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBtX3J1bnRpbWVBZ2VudDsK
LQotICAgIE93blB0cjxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+IG1fY29uc29sZUFnZW50OwogCiAg
ICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1h
bmRzOwogICAgIFN0cmluZyBtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZTsKICAgICBTdHJpbmcgbV9p
bnNwZWN0b3JFeHRlbnNpb25BUEk7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0g
ICAgT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IG1fZGVidWdnZXJBZ2VudDsKLSAgICBP
d25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gbV9kb21EZWJ1Z2dlckFnZW50OwotICAg
IE93blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBtX3Byb2ZpbGVyQWdlbnQ7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoV09SS0VSUykKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFJlZlB0
cjxJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZT4gPiBXb3JrZXJzTWFwOwogICAgIFdvcmtlcnNNYXAg
bV93b3JrZXJzOwotICAgIE93blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gbV93b3JrZXJBZ2Vu
dDsKICNlbmRpZgogICAgIGJvb2wgbV9jYW5Jc3N1ZUV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDVmMjNjNWExN2YxOTc1ZWYzN2IyZjVhY2I3YTIxMjBkNmI3NTNiNmEuLmU5MGNl
YWE4MDA2NDBkYTcyZDE2ZTQxYWExODA4YmMxYjdlY2U2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM4LDE2ICszOCwyOCBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JE
T01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50
LmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1
Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01NSwxNyArNjcsODEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBQYWdlUnVudGltZUFnZW50IDogcHVi
bGljIEluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CitwdWJsaWM6CisgICAgUGFnZVJ1bnRpbWVBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFn
ZSkKKyAgICAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQorICAgICAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKSB7IH0KKyAgICB2aXJ0dWFsIH5QYWdl
UnVudGltZUFnZW50KCkgeyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBTY3JpcHRTdGF0ZSog
Z2V0RGVmYXVsdEluc3BlY3RlZFN0YXRlKCkgeyByZXR1cm4gbWFpbldvcmxkU2NyaXB0U3RhdGUo
bV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7IH0KKyAgICBQYWdlKiBtX2luc3BlY3RlZFBh
Z2U7Cit9OworCit9CisKIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIo
UGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2Uo
KSkKLSAgICAsIG1faW5zcGVjdG9yQWdlbnQoYWRvcHRQdHIobmV3IEluc3BlY3RvckFnZW50KHBh
Z2UsIGluc3BlY3RvckNsaWVudCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKSkKKyAg
ICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGluZ0FnZW50
cygpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlRm9yUGFnZSgpKQorICAgICwgbV9zdGF0ZShhZG9wdFB0cihuZXcgSW5zcGVjdG9y
U3RhdGUoaW5zcGVjdG9yQ2xpZW50KSkpCisgICAgLCBtX2luc3BlY3RvckFnZW50KGFkb3B0UHRy
KG5ldyBJbnNwZWN0b3JBZ2VudChwYWdlLCBpbnNwZWN0b3JDbGllbnQsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCkpKSkKKyAgICAsIG1fcGFnZUFnZW50KEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0
KCkpKQorICAgICwgbV9kb21BZ2VudChJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIGluc3BlY3RvckNsaWVudCwg
bV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKQorICAgICwgbV9j
c3NBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ1NTQWdlbnQobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkpCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAg
ICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQorI2VuZGlmCisjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQorICAgICwgbV9kb21TdG9yYWdlQWdlbnQoSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
KSkKKyNlbmRpZgorICAgICwgbV90aW1lbGluZUFnZW50KEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQorI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgLCBtX2FwcGxpY2F0aW9uQ2Fj
aGVBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSkpKQorI2VuZGlmCisgICAgLCBtX3Jlc291cmNl
QWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQorICAgICwgbV9ydW50
aW1lQWdlbnQoYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQobV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIHBhZ2UpKSkKKyAgICAsIG1fY29uc29sZUFnZW50KGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luc3Bl
Y3RvckFnZW50LmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5n
ZXQoKSwgbV9kb21BZ2VudC5nZXQoKSkpKQorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQorICAgICwgbV9kZWJ1Z2dlckFnZW50KFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSkpCisgICAgLCBtX2RvbURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSwgbV9kZWJ1Z2dlckFnZW50LmdldCgpLCBtX2luc3Bl
Y3RvckFnZW50LmdldCgpKSkKKyAgICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2NvbnNvbGVBZ2Vu
dC5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCisjZW5kaWYKKyNpZiBFTkFCTEUoV09SS0VS
UykKKyAgICAsIG1fd29ya2VyQWdlbnQoSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQorI2VuZGlmCiAgICAgLCBtX2luc3BlY3RvckNsaWVu
dChpbnNwZWN0b3JDbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9udGVuZChmYWxzZSkKICAgICAs
IG1fc3RhcnRVc2VySW5pdGlhdGVkRGVidWdnaW5nV2hlbkZyb250ZWRJc0Nvbm5lY3RlZChmYWxz
ZSkKIHsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkt
PmluaXQobV9pbnNwZWN0b3JBZ2VudC5nZXQoKQorICAgICAgICAsIG1fY29uc29sZUFnZW50Lmdl
dCgpCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgICAgICAsIG1fZGF0YWJhc2VBZ2VudC5nZXQo
KQorI2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgICAgICAsIG1fZG9tU3RvcmFn
ZUFnZW50LmdldCgpCisjZW5kaWYKKyAgICApOwogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+
SW5zcGVjdG9yQ29udHJvbGxlcigpCiB7CisgICAgQVNTRVJUKCFtX2luc3BlY3RvckNsaWVudCk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgp
Cit7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCisgICAgbV9kb21EZWJ1Z2dlckFnZW50LmNsZWFyKCk7CisgICAgbV9kZWJ1Z2dlckFn
ZW50LmNsZWFyKCk7CisjZW5kaWYKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29u
bmVjdCgpOworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKKyAg
ICBtX2luc3BlY3RvckNsaWVudCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCkBAIC05MiwxMyArMTY4LDEzIEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VGltZWxp
bmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9pbnNwZWN0b3JB
Z2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdGFydCgmZXJyb3IpOworICAgIG1fdGltZWxpbmVBZ2Vu
dC0+c3RhcnQoJmVycm9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVGlt
ZWxpbmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9pbnNwZWN0
b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdG9wKCZlcnJvcik7CisgICAgbV90aW1lbGluZUFn
ZW50LT5zdG9wKCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVj
dEZyb250ZW5kKCkKQEAgLTEwNiw2ICsxODIsMzAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3BlbmluZ0Zyb250ZW5kID0gZmFsc2U7CiAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZChtX2lu
c3BlY3RvckNsaWVudCkpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNj
cmlwdEhvc3QoKS0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAg
Ly8gV2UgY2FuIHJlY29ubmVjdCB0byBleGlzdGluZyBmcm9udC1lbmQgLT4gdW5tdXRlIHN0YXRl
LgorICAgIG1fc3RhdGUtPnVubXV0ZSgpOworCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNw
ZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYKKyAgICBtX3BhZ2VBZ2VudC0+c2V0RnJvbnRl
bmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9kb21BZ2VudC0+c2V0RnJvbnRl
bmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPnNldEZy
b250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdGltZWxpbmVBZ2VudC0+
c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9yZXNvdXJjZUFn
ZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEZyb250ZW5kKG1f
aW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fcHJvZmlsZXJBZ2VudC0+c2V0RnJvbnRl
bmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREFUQUJB
U0UpCisgICAgbV9kYXRhYmFzZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5k
LmdldCgpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAgICBtX2RvbVN0b3Jh
Z2VBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYK
KyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBtX3dvcmtlckFnZW50LT5zZXRGcm9udGVuZChtX2lu
c3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNlbmRpZgogICAgIG1faW5zcGVjdG9yQWdlbnQtPnNl
dEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOwogCiAgICAgaWYgKCFJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQpAQCAtMTE2LDMyICsyMTYsMzIgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1faW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIoCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LAogI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpLAorICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXQoKSwKICNlbmRp
ZgotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5jc3NBZ2VudCgpLAotICAgICAgICBtX2luc3Bl
Y3RvckFnZW50LT5jb25zb2xlQWdlbnQoKSwKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9t
QWdlbnQoKSwKKyAgICAgICAgbV9jc3NBZ2VudC5nZXQoKSwKKyAgICAgICAgbV9jb25zb2xlQWdl
bnQuZ2V0KCksCisgICAgICAgIG1fZG9tQWdlbnQuZ2V0KCksCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRvbURlYnVnZ2VyQWdlbnQo
KSwKKyAgICAgICAgbV9kb21EZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlmCiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5kb21TdG9yYWdlQWdlbnQo
KSwKKyAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQuZ2V0KCksCiAjZW5kaWYKICNpZiBFTkFCTEUo
REFUQUJBU0UpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRhdGFiYXNlQWdlbnQoKSwKKyAg
ICAgICAgbV9kYXRhYmFzZUFnZW50LmdldCgpLAogI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKSwK
KyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlmCi0gICAgICAgIG1faW5zcGVj
dG9yQWdlbnQtPnJlc291cmNlQWdlbnQoKSwKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+cGFn
ZUFnZW50KCksCisgICAgICAgIG1fcmVzb3VyY2VBZ2VudC5nZXQoKSwKKyAgICAgICAgbV9wYWdl
QWdlbnQuZ2V0KCksCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1f
aW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSwKKyAgICAgICAgbV9wcm9maWxlckFnZW50
LmdldCgpLAogI2VuZGlmCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPnJ1bnRpbWVBZ2VudCgp
LAotICAgICAgICBtX2luc3BlY3RvckFnZW50LT50aW1lbGluZUFnZW50KCkKKyAgICAgICAgbV9y
dW50aW1lQWdlbnQuZ2V0KCksCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC5nZXQoKQogI2lmIEVO
QUJMRShXT1JLRVJTKQotICAgICAgICAsIG1faW5zcGVjdG9yQWdlbnQtPndvcmtlckFnZW50KCkK
KyAgICAgICAgLCBtX3dvcmtlckFnZW50LmdldCgpCiAjZW5kaWYKICAgICApKTsKIApAQCAtMTU3
LDcgKzI1NywzMyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNs
ZWFyKCk7CiAKLSAgICBtX2luc3BlY3RvckFnZW50LT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAg
ICAvLyBEZXN0cm95aW5nIGFnZW50cyB3b3VsZCBjaGFuZ2UgdGhlIHN0YXRlLCBidXQgd2UgZG9u
J3Qgd2FudCB0aGF0LgorICAgIC8vIFByZS1kaXNjb25uZWN0IHN0YXRlIHdpbGwgYmUgdXNlZCB0
byByZXN0b3JlIGluc3BlY3RvciBhZ2VudHMuCisgICAgbV9zdGF0ZS0+bXV0ZSgpOworCisgICAg
bV9pbnNwZWN0b3JBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQorICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworICAgIG1f
ZG9tRGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworICAgIG1fcHJvZmlsZXJBZ2VudC0+
Y2xlYXJGcm9udGVuZCgpOworI2VuZGlmCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2Vu
ZGlmCisgICAgbV9jb25zb2xlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2RvbUFnZW50
LT5jbGVhckZyb250ZW5kKCk7CisgICAgbV90aW1lbGluZUFnZW50LT5jbGVhckZyb250ZW5kKCk7
CisgICAgbV9yZXNvdXJjZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CisjaWYgRU5BQkxFKERBVEFC
QVNFKQorICAgIG1fZGF0YWJhc2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2VuZGlmCisjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQorICAgIG1fZG9tU3RvcmFnZUFnZW50LT5jbGVhckZyb250ZW5k
KCk7CisjZW5kaWYKKyAgICBtX3BhZ2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2lmIEVOQUJM
RShXT1JLRVJTKQorICAgIG1fd29ya2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyNlbmRpZgog
ICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJG
cm9udGVuZCgpOwogCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC5jbGVhcigpOwpAQCAtMTk1LDcg
KzMyMSwyMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0b3JTdGF0
ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0bwogewogICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JGcm9udGVuZCk7CiAgICAgY29ubmVjdEZyb250ZW5kKCk7Ci0gICAgbV9pbnNwZWN0b3JB
Z2VudC0+cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShpbnNwZWN0b3JTdGF0ZUNvb2tp
ZSk7CisgICAgbV9zdGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVjdG9yU3RhdGVDb29raWUpOwor
CisgICAgbV9kb21BZ2VudC0+cmVzdG9yZSgpOworICAgIG1fcmVzb3VyY2VBZ2VudC0+cmVzdG9y
ZSgpOworICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzdG9yZSgpOworI2lmIEVOQUJMRShEQVRBQkFT
RSkKKyAgICBtX2RhdGFiYXNlQWdlbnQtPnJlc3RvcmUoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShE
T01fU1RPUkFHRSkKKyAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+cmVzdG9yZSgpOworI2VuZGlmCisj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbV9kZWJ1Z2dlckFnZW50LT5yZXN0
b3JlKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5yZXN0b3JlKCk7CisjZW5kaWYKKyAgICBtX2lu
c3BlY3RvckFnZW50LT5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQpCkBAIC0yMDUsNyArMzQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHMKIAogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+ZHJhd05v
ZGVIaWdobGlnaHQoY29udGV4dCk7CisgICAgbV9kb21BZ2VudC0+ZHJhd05vZGVIaWdobGlnaHQo
Y29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd0NvbnNvbGUoKQpA
QCAtMjIzLDcgKzM2NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2Rl
KiBub2RlKQogCiAgICAgc2hvdygpOwogCi0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQo
KS0+aW5zcGVjdChub2RlKTsKKyAgICBtX2RvbUFnZW50LT5pbnNwZWN0KG5vZGUpOwogfQogCiBi
b29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZWQoKSBjb25zdApAQCAtMjM4LDcgKzM3OSw3
IEBAIFBhZ2UqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2UoKSBjb25zdAogCiBi
b29sIEluc3BlY3RvckNvbnRyb2xsZXI6OnRpbWVsaW5lUHJvZmlsZXJFbmFibGVkKCkKIHsKLSAg
ICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdGFydGVkKCk7Cisg
ICAgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC0+c3RhcnRlZCgpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBTdHJpbmcmIHNvdXJj
ZSkKQEAgLTI1NSwzNSArMzk2LDM1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7
Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlkZUhpZ2hsaWdodCgmZXJyb3Ip
OworICAgIG1fZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQoJmVycm9yKTsKIH0KIAogTm9kZSogSW5z
cGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlnaGxpZ2h0ZWROb2RlKCk7CisgICAgcmV0
dXJuIG1fZG9tQWdlbnQtPmhpZ2hsaWdodGVkTm9kZSgpOwogfQogCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZVByb2ZpbGVy
KCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2luc3BlY3RvckFnZW50LT5wcm9m
aWxlckFnZW50KCktPmVuYWJsZSgmZXJyb3IpOworICAgIG1fcHJvZmlsZXJBZ2VudC0+ZW5hYmxl
KCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2ZpbGVy
KCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2luc3BlY3RvckFnZW50LT5wcm9m
aWxlckFnZW50KCktPmRpc2FibGUoJmVycm9yKTsKKyAgICBtX3Byb2ZpbGVyQWdlbnQtPmRpc2Fi
bGUoJmVycm9yKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlckVuYWJs
ZWQoKQogewotICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCktPmVu
YWJsZWQoKTsKKyAgICByZXR1cm4gbV9wcm9maWxlckFnZW50LT5lbmFibGVkKCk7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVidWdnZXJFbmFibGVkKCkKIHsKLSAgICByZXR1cm4g
bV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2VudCgpLT5lbmFibGVkKCk7CisgICAgcmV0dXJu
IG1fZGVidWdnZXJBZ2VudC0+ZW5hYmxlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dlcigpCkBAIC0zMDAsMTIgKzQ0MSwxMiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dlcigpCiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKCkKIHsKLSAgICBtX2luc3BlY3RvckFnZW50
LT5kZWJ1Z2dlckFnZW50KCktPmRpc2FibGUoKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmRpc2Fi
bGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQ
cm9maWxpbmcoKQogewotICAgIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKS0+c3Rh
cnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5zdGFydFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCkBAIC0zMTMsMjAgKzQ1NCwyMCBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAgICBpZiAo
IWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNob3coKTsKLSAgICBtX2luc3BlY3Rv
ckFnZW50LT5wcm9maWxlckFnZW50KCktPnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7Cisg
ICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpOwogICAgIG1f
aW5zcGVjdG9yQWdlbnQtPnNob3dQcm9maWxlc1BhbmVsKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKS0+aXNSZWNvcmRpbmdV
c2VySW5pdGlhdGVkUHJvZmlsZSgpOworICAgIHJldHVybiBtX3Byb2ZpbGVyQWdlbnQtPmlzUmVj
b3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpyZXN1bWUoKQogewotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dl
ckFnZW50ID0gbV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2VudCgpKSB7CisgICAgaWYgKG1f
ZGVidWdnZXJBZ2VudCkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgZGVi
dWdnZXJBZ2VudC0+cmVzdW1lKCZlcnJvcik7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+cmVz
dW1lKCZlcnJvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiOTczNzNlMWQ5NzIxMDk4MTlmYjQ0Mzk1MzFkY2Y1
ZDA2MjUxYzBlLi4wZTBmMGQ2OGQ3OGU1NmJjNmU5MzJlZjgwNDc3NmE5ZGMyMGE3NGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQz
LDEwICs0MywyNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OworY2xhc3MgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI7CitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
K2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50Owor
Y2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKK2NsYXNzIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OworY2xhc3MgSW5z
cGVjdG9yUnVudGltZUFnZW50OworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnNwZWN0
b3JTdG9yYWdlQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OworY2xhc3MgSW5z
cGVjdG9yV29ya2VyQWdlbnQ7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIGNsYXNzIE5v
ZGU7CkBAIC01Nyw2ICs3NCw3IEBAIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgewogcHVibGlj
OgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIEluc3BlY3RvckNsaWVudCopOwogICAg
IH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVk
KCk7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICBQYWdlKiBpbnNwZWN0ZWRQYWdl
KCkgY29uc3Q7CkBAIC0xMDQsOCArMTIyLDM2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIAorICAgIE93
blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgT3du
UHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CisgICAg
T3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwogICAgIE93blB0cjxJbnNwZWN0b3JBZ2Vu
dD4gbV9pbnNwZWN0b3JBZ2VudDsKKworICAgIE93blB0cjxJbnNwZWN0b3JQYWdlQWdlbnQ+IG1f
cGFnZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2VudD4gbV9kb21BZ2VudDsKKyAg
ICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7CisjaWYgRU5BQkxFKERBVEFC
QVNFKQorICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBtX2RhdGFiYXNlQWdlbnQ7
CisjZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgT3duUHRyPEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudD4gbV9kb21TdG9yYWdlQWdlbnQ7CisjZW5kaWYKKyAgICBPd25QdHI8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFnZW50OworI2lmIEVOQUJMRShPRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpCisgICAgT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudD4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CisjZW5kaWYKKyAgICBSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JS
dW50aW1lQWdlbnQ+IG1fcnVudGltZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JDb25zb2xl
QWdlbnQ+IG1fY29uc29sZUFnZW50OworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQor
ICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBtX2RlYnVnZ2VyQWdlbnQ7CisgICAg
T3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IG1fZG9tRGVidWdnZXJBZ2VudDsKKyAg
ICBPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFnZW50OworI2VuZGlm
CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBt
X3dvcmtlckFnZW50OworI2VuZGlmCisKICAgICBPd25QdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIE93blB0cjxJ
bnNwZWN0b3JGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMmFl
OTk3MmY1Nzg0NzgwNTliZGJiNzAwN2Q2ZjU5OWRiZDIwY2U5Ny4uYzEyY2EwZGRhZDgyNGFkY2Q1
ODViNjhhNjRhZTZlMjM3MDNjMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBOb2Rl
KiBub2RlKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50
ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NQWdl
bnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9kZSk7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50
cygpLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWN0b3JBZ2UKICAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCog
ZG9tRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCkt
Pmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+
ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKICNlbmRpZgotICAgIGlmIChJbnNwZWN0b3JET01BZ2Vu
dCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURP
TU5vZGUobm9kZSk7CiB9CiAKQEAgLTE1MCwxMyArMTUwLDEzIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3Bl
Y3RvckFnCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRy
SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckFnZW50LT5k
b21BZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JET01BZ2VudCgpKQogICAg
ICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRvbUFnZW50KCkpCisgICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50
aW5nQWdlbnRzKCktPmluc3BlY3RvckRPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRJ
bnZhbGlkYXRlU3R5bGVBdHRyKG5vZGUpOwogfQogCkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3BlY3RvckFn
ZW50KiBpbnNwZWN0b3JBZ2UKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJh
Y3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBDaGFy
YWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMo
KS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3RlckRhdGFN
b2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIApAQCAtNDU5LDcgKzQ1OSw4IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29u
c3QgSW5zcGVjdG9ySW5zCiAgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9
IGluc3BlY3RvckFnZW50Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgpKSkgewogICAgICAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7Ci0gICAgICAgIGluc3Bl
Y3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IHJlc3BvbnNlKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRp
b24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnNv
bGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgICAgICBjb25zb2xlQWdlbnQt
PmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7IC8vIFRoaXMgc2hvdWxk
IGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRo
aXMuCiAgICAgfQogfQogCkBAIC01MDQsMTIgKzUwNSwxNCBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudAogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRl
bnRpZmllciwgdHJ1ZSwgMCk7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAg
ICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAg
aW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVy
LCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9u
LCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCisgICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+
aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkRmFpbExv
YWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVSIHJlc291
cmNlIG5vdGlmaWNhdGlvbiwgZnJvbnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQogewotICAgIGluc3Bl
Y3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOworICAgIGlmIChJbnNwZWN0b3JDb25z
b2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdl
bnRzKCktPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQorICAgICAgICBjb25zb2xlQWdlbnQtPnJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVt
YmVyKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPnNldEluaXRpYWxYSFJDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CkBA
IC02MjcsMjcgKzYzMCwzMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3Jp
dGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25DbwogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQWdl
bnQqIGluc3BlY3RvckFnZW50LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2Fs
bFN0YWNrKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDb25zb2xlQWdl
bnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBl
IHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQogewotICAgIGluc3BlY3RvckFn
ZW50LT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgaWYgKEluc3BlY3RvckNv
bnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdB
Z2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+
YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VJRCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlQ291bnRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgUGFzc1JlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0
YWNrKQogewotICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+Y291bnQoYXJndW1l
bnRzLCBzdGFjayk7CisgICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50
ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29s
ZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+Y291bnQoYXJndW1lbnRzLCBzdGFjayk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJ
bXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
IHsKLSAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPnN0YXJ0VGltaW5nKHRpdGxl
KTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDb25zb2xlQWdlbnQoKSkK
KyAgICAgICAgY29uc29sZUFnZW50LT5zdGFydFRpbWluZyh0aXRsZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zcGVjdG9yQWdl
bnQqIGluc3BlY3RvckFnZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gc3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgp
LT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7CisgICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+
aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+c3RvcFRpbWlu
Zyh0aXRsZSwgc3RhY2spOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZU1hcmtUaW1lbGluZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBQYXNz
UmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQpAQCAtNjYyLDEzICs2NzAsMTMgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3IKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VU
b0NvbnNvbGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+cHJvZmlsZXJBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50
KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+
aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQogICAgICAgICBwcm9maWxlckFnZW50LT5hZGRTdGFy
dFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbChJbnNw
ZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxl
LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGlmIChJbnNw
ZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPnByb2Zp
bGVyQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFn
ZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCgpKSB7CiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxl
ciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFByb2ZpbGUo
cHJvZmlsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkp
OwogICAgIH0KQEAgLTY3NiwxNCArNjg0LDE2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRQcm9maWxlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIFJlCiAK
IFN0cmluZyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgYm9vbCBpbmNy
ZW1lbnRQcm9maWxlTnVtYmVyKQogewotICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBw
cm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5p
bnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKSkKICAgICAgICAg
cmV0dXJuIHByb2ZpbGVyQWdlbnQtPmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
aW5jcmVtZW50UHJvZmlsZU51bWJlcik7CiAgICAgcmV0dXJuICIiOwogfQogCiBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJFbmFibGVkSW1wbChJbnNwZWN0b3JBZ2VudCog
aW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgcmV0dXJuIGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50
aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKS0+ZW5hYmxlZCgpOworICAgIGlm
IChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
Pmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQorICAgICAg
ICByZXR1cm4gcHJvZmlsZXJBZ2VudC0+ZW5hYmxlZCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgogCkBAIC03ODMsNyArNzkzLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKEluc3BlY3RvckFnZW50KiBpbnNwZWMKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9uTmF0aXZlRXZlbnQoSW5z
cGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
aW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdl
bnRzKCktPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZGVidWdnZXJBZ2VudC0+
Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggOGU0ODhmYmQxNTAxZWZhNTczMjE3YTBmZjE3MDdmYTJlZGI5OTBmMS4uOGQxMzBhZjE0
MDNjZmZjMjM3NzJkOTE4ZTM5ZDk2OTU2MzU2MWU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
MDEsNiArMjAxLDkgQEAgUGFnZTo6flBhZ2UoKQogICAgIG1fZWRpdG9yQ2xpZW50LT5wYWdlRGVz
dHJveWVkKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQodGhpcyk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKKyNlbmRpZgogCiAgICAgYmFja0Zv
cndhcmQoKS0+Y2xvc2UoKTsKIAo=
</data>
<flag name="commit-queue"
          id="85584"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92586</attachid>
            <date>2011-05-06 08:44:29 -0700</date>
            <delta_ts>2011-05-10 01:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60359-20110506194427.patch</filename>
            <type>text/plain</type>
            <size>47690</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNzMwNjMzOGI0Y2Q4NzEy
Y2RjYWU5ZDZkYmZiMmNlOWM3MTg5MmJmLi5iMWQyYWY1ODNlZTE1Y2QyMWUyODYxZDNhNTFiYWU2
OTEzZTA5ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTEtMDUtMDYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBhZ2VudHMgZnJv
bSBJbnNwZWN0b3JBZ2VudCB0byBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDM1OQorCisgICAgICAgIEFsbCBpbnNw
ZWN0b3IgYWdlbnRzIGFyZSBub3cgY3JlYXRlZCBhbmQgb3duZWQgYnkgSW5zcGVjdG9yQ29udHJv
bGxlciB3aGljaAorICAgICAgICBpbiB0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGluc3BlY3RlZCBQ
YWdlLiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gZ2V0cyBhY2Nlc3MKKyAgICAgICAgdG8gdGhl
IGluc3RydW1lbnRpbmcgYWdlbnRzIGJ5IG1lYW5zIG9mIEluc3BlY3RvckFnZW50OjppbnN0cnVt
ZW50aW5nQWdlbnRzKCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gbWFuYWdpbmcgaW5zcGVj
dG9yIGFnZW50cyBsaWZldGltZSBJbnNwZWN0b3JDb250cm9sbGVyIHNldHMKKyAgICAgICAgSW5z
cGVjdG9yRnJvbnRlZCBvbiB0aGUgYWdlbnRzIHdoZW4gdGhlIGZyb250LWVuZCBpcyBjb25uZWN0
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50Ojpj
bGVhckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDogYWxs
IGFjY2Vzc29ycyB0byBvdGhlciBhZ2VudHMgd2VyZSByZW1vdmVkIGFsb25nIHdpdGgKKyAgICAg
ICAgdGhlIGFnZW50cyB0aGVtc2VsdmVzIGZyb20gSW5zcGVjdG9yQWdlbnQuIEV2ZXJ5IGFnZW50
IHRoYXQgZGVwZW5kcyBvbiBzb21lIG90aGVyIGFnZW50cworICAgICAgICByZWNlaXZlcyBwb2lu
dGVycyB0byB0aGVtIGV4cGxpY2l0ZWx5IGluIGl0cyBjb25zdHJ1Y3Rvci4gQWxsIGFjY2VzcyB0
byB0aGUgYWdlbnRzCisgICAgICAgIGZyb20gV2ViQ29yZSBzaG91bGQgZ28gdGhyb3VnaCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggcmV0cmlldmVzIGNvcnJlc3BvbmRpbmcKKyAgICAg
ICAgYWdlbnRzIHVzaW5nIEluc3RydW1lbnRpbmdBZ2VudHMgc3RydWN0dXJlIHdoaWNoIHJlcHJl
c2VudHMgdGhlIHNldCBvZiBhY3RpdmUgYWdlbnRzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQWdlbnQ6Omluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWVsaW5lUHJvZmlsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWVsaW5lUHJvZmlsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5zcGVjdG9y
U3RhdGVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGlt
ZWxpbmVQcm9maWxlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpoaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZW5hYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkZWJ1Z2dlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppc1JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2Rl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1v
ZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0Nv
bnNvbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkUHJvZmlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9u
TmF0aXZlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp+UGFnZSk6IHdlIHNlbmQgdHdvIG5vdGlmaWNhdGlvbnMgd2hlbiBpbnNwZWN0ZWQg
UGFnZSBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQ6IG9uZSB0byB0aGUgaW5zcGVjdG9yIGlu
c3RydW1lbnRhdGlvbiBhbmQgYW5vdGhlciBvbmUgdG8gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIK
KyAgICAgICAgd2hpY2ggaXMgb3duZWQgYnkgdGhlIFBhZ2UuCisKIDIwMTEtMDUtMDYgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmgKaW5kZXggYjU5MmQ5YmFlMDg1N2RkYjE1ZGRmYTVlY2QwMjY3NWNmY2FhNThmNC4uN2Iz
ODQxNDkxOWExZjYxZWVhNmYwMTBhNTA1NTgxMDQyZGE2MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFz
cyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFz
cyBTY3JpcHRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCmluZGV4IDcyMzBlMDEyYmIxMzg0OGMxODFmZWIyNzJhZWU1MTI2YmY2NmRhOWMuLjI5MDI4
ZGYxMGM5ZWM5OTY0NDM4ODg2NjJjZGU4OWY2YzYwNzgwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtMzksMTIwICszOSwzOSBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JE
T01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clJlc291cmNlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JX
b3JrZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlclJlc291cmNlLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLQotI2lmIEVO
QUJMRShEQVRBQkFTRSkKLSNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCi0jZW5k
aWYKLQotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKLSNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKLSNlbmRpZgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBJ
bnNwZWN0b3JBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHRpbWVsaW5lUHJvZmlsZXJF
bmFibGVkW10gPSAidGltZWxpbmVQcm9maWxlckVuYWJsZWQiOwotc3RhdGljIGNvbnN0IGNoYXIg
ZGVidWdnZXJFbmFibGVkW10gPSAiZGVidWdnZXJFbmFibGVkIjsKLX0KLQogc3RhdGljIGNvbnN0
IGNoYXIgc2NyaXB0c1BhbmVsTmFtZVtdID0gInNjcmlwdHMiOwogc3RhdGljIGNvbnN0IGNoYXIg
Y29uc29sZVBhbmVsTmFtZVtdID0gImNvbnNvbGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvZmls
ZXNQYW5lbE5hbWVbXSA9ICJwcm9maWxlcyI7CiAKLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFBhZ2VS
dW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKLXB1YmxpYzoKLSAg
ICBQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBQYWdlKiBwYWdlKQotICAgICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpIHsgfQot
ICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQoKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIFNjcmlwdFN0YXRlKiBnZXREZWZhdWx0SW5zcGVjdGVkU3RhdGUoKSB7IHJldHVybiBtYWlu
V29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsgfQotICAgIFBh
Z2UqIG1faW5zcGVjdGVkUGFnZTsKLX07Ci0KLX0KLQotSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3Rv
ckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvckFnZW50OjpJbnNwZWN0
b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFnZSkKLSAgICAsIG1f
Y2xpZW50KGNsaWVudCkKICAgICAsIG1fZnJvbnRlbmQoMCkKLSAgICAsIG1faW5zdHJ1bWVudGlu
Z0FnZW50cyhhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGluZ0FnZW50cykpCisgICAgLCBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fc3RhdGUoYWRvcHRQdHIo
bmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkpKQotICAgICwgbV9wYWdlQWdlbnQoSW5zcGVjdG9y
UGFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpKQotICAgICwgbV9kb21BZ2VudChJbnNwZWN0b3JET01BZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1f
Y2xpZW50LCBtX3N0YXRlLmdldCgpLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKQotICAgICwgbV9j
c3NBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ1NTQWdlbnQobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkpCi0jaWYgRU5BQkxFKERBVEFCQVNFKQotICAg
ICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQotI2VuZGlmCi0jaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQotICAgICwgbV9kb21TdG9yYWdlQWdlbnQoSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
KSkKLSNlbmRpZgotICAgICwgbV90aW1lbGluZUFnZW50KEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQotI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2Fj
aGVBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSkpKQotI2VuZGlmCi0gICAgLCBtX3Jlc291cmNl
QWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQotICAgICwgbV9ydW50
aW1lQWdlbnQoYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQobV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIsIHBhZ2UpKSkKLSAgICAsIG1fY29uc29sZUFnZW50KGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCB0aGlzLCBtX3N0YXRl
LmdldCgpLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQuZ2V0KCkpKSkKLSNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAsIG1fZGVidWdnZXJBZ2VudChQYWdlRGVi
dWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5n
ZXQoKSwgcGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSkKLSAgICAsIG1fZG9tRGVidWdnZXJB
Z2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2VyQWdl
bnQuZ2V0KCksIHRoaXMpKQotICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29sZUFnZW50
LmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkKLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJT
KQotICAgICwgbV93b3JrZXJBZ2VudChJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCi0jZW5kaWYKICAgICAsIG1fY2FuSXNzdWVFdmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKGZhbHNlKQogewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7
CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpiaW5kSW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0ZWRQYWdlLCB0aGlzKTsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KHRoaXMpOwotCi0gICAgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5pbml0KHRoaXMKLSAg
ICAgICAgLCBtX2NvbnNvbGVBZ2VudC5nZXQoKQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICAg
ICAgLCBtX2RhdGFiYXNlQWdlbnQuZ2V0KCkKLSNlbmRpZgotI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKLSAgICAgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudC5nZXQoKQotI2VuZGlmCi0gICAgKTsKIH0K
IAogSW5zcGVjdG9yQWdlbnQ6On5JbnNwZWN0b3JBZ2VudCgpCkBAIC0xNjAsNTQgKzc5LDIxIEBA
IEluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQoMCk7CiAKICAgICAvLyBUaGVzZSBzaG91bGQgaGF2ZSBi
ZWVuIGNsZWFyZWQgaW4gaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpLgotICAgIEFTU0VSVCghbV9j
bGllbnQpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0ZWRQYWdlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JBZ2VudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmQp
IHsKKyAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCkt
PmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOwotICAgICAgICBkaXNjb25uZWN0RnJvbnRlbmQoKTsK
LSAgICB9Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX2RvbURlYnVn
Z2VyQWdlbnQuY2xlYXIoKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKLSNlbmRpZgot
CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp1bmJpbmRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1faW5zcGVj
dGVkUGFnZSA9IDA7Ci0KLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgp
OwotCi0gICAgbV9jbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwotICAgIG1fY2xpZW50ID0g
MDsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNv
b2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRlQ29va2llKQordm9pZCBJbnNwZWN0b3JB
Z2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgbV9zdGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVjdG9y
U3RhdGVDb29raWUpOwotCiAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPmZyb250ZW5kUmV1
c2VkKCk7Ci0KLSAgICBtX2RvbUFnZW50LT5yZXN0b3JlKCk7Ci0gICAgbV9yZXNvdXJjZUFnZW50
LT5yZXN0b3JlKCk7Ci0gICAgbV90aW1lbGluZUFnZW50LT5yZXN0b3JlKCk7Ci0KLSNpZiBFTkFC
TEUoREFUQUJBU0UpCi0gICAgbV9kYXRhYmFzZUFnZW50LT5yZXN0b3JlKCk7Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+cmVzdG9yZSgp
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX2RlYnVn
Z2VyQWdlbnQtPnJlc3RvcmUoKTsKLSAgICBtX3Byb2ZpbGVyQWdlbnQtPnJlc3RvcmUoKTsKLSNl
bmRpZgogfQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQpAQCAtMjIxLDMwICsxMDcs
OCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJh
bWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnNldEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBpbnNwZWN0b3JGcm9udGVuZCkKIHsKLSAgICAvLyBX
ZSBjYW4gcmVjb25uZWN0IHRvIGV4aXN0aW5nIGZyb250LWVuZCAtPiB1bm11dGUgc3RhdGUuCi0g
ICAgbV9zdGF0ZS0+dW5tdXRlKCk7Ci0KICAgICBtX2Zyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRl
bmQ7CiAKLSNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIG1fYXBwbGlj
YXRpb25DYWNoZUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRpZgotICAgIG1f
cGFnZUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSAgICBtX2RvbUFnZW50LT5zZXRG
cm9udGVuZChtX2Zyb250ZW5kKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+c2V0RnJvbnRlbmQobV9m
cm9udGVuZCk7Ci0gICAgbV90aW1lbGluZUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsK
LSAgICBtX3Jlc291cmNlQWdlbnQtPnNldEZyb250ZW5kKG1fZnJvbnRlbmQpOwotI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1fZGVidWdnZXJBZ2VudC0+c2V0RnJvbnRlbmQo
bV9mcm9udGVuZCk7Ci0gICAgbV9wcm9maWxlckFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5k
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICBtX2RhdGFiYXNlQWdlbnQtPnNl
dEZyb250ZW5kKG1fZnJvbnRlbmQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
ICAgIG1fZG9tU3RvcmFnZUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRpZgot
CiAgICAgaWYgKCFtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
bV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPnNob3dQYW5lbChtX3Nob3dQYW5lbEFmdGVyVmlzaWJs
ZSk7CiAgICAgICAgIG1fc2hvd1BhbmVsQWZ0ZXJWaXNpYmxlID0gU3RyaW5nKCk7CkBAIC0yNTYs
NTIgKzEyMCwxNiBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3Rv
cigpLT5kaWRDcmVhdGVXb3JrZXIod29ya2VyLT5pZCgpLCB3b3JrZXItPnVybCgpLCB3b3JrZXIt
PmlzU2hhcmVkV29ya2VyKCkpOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQot
ICAgIG1fd29ya2VyQWdlbnQtPnNldEZyb250ZW5kKG1fZnJvbnRlbmQpOwotI2VuZGlmCiAKICAg
ICAvLyBEaXNwYXRjaCBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzCiAgICAgaXNzdWVFdmFsdWF0
ZUZvclRlc3RDb21tYW5kcygpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjpkaXNjb25uZWN0
RnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX2Nhbklzc3VlRXZhbHVh
dGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZhbHNlOwogICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENv
bW1hbmRzLmNsZWFyKCk7Ci0KLSAgICAvLyBEZXN0cm95aW5nIGFnZW50cyB3b3VsZCBjaGFuZ2Ug
dGhlIHN0YXRlLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0LgotICAgIC8vIFByZS1kaXNjb25uZWN0
IHN0YXRlIHdpbGwgYmUgdXNlZCB0byByZXN0b3JlIGluc3BlY3RvciBhZ2VudHMuCi0gICAgbV9z
dGF0ZS0+bXV0ZSgpOwotCiAgICAgbV9mcm9udGVuZCA9IDA7Ci0KLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSAg
ICBtX2RvbURlYnVnZ2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX3Byb2ZpbGVyQWdl
bnQtPmNsZWFyRnJvbnRlbmQoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgp
OwotI2VuZGlmCi0KLSAgICBtX2NvbnNvbGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwotICAgIG1f
ZG9tQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX3RpbWVsaW5lQWdlbnQtPmNsZWFyRnJv
bnRlbmQoKTsKLSAgICBtX3Jlc291cmNlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSNpZiBFTkFC
TEUoREFUQUJBU0UpCi0gICAgbV9kYXRhYmFzZUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgbV9kb21TdG9yYWdlQWdlbnQtPmNsZWFy
RnJvbnRlbmQoKTsKLSNlbmRpZgotICAgIG1fcGFnZUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0j
aWYgRU5BQkxFKFdPUktFUlMpCi0gICAgbV93b3JrZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwot
I2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENvbW1pdExvYWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCA1MDlhZDcwZmJmYThjNTM4
N2Q5NGE0N2IwZGYwNGM1NjE3MGVlOTRlLi44YWU1MGRjN2I0NThlOWRiZmRkYWFkMWQ5M2Q5YWQ1
YTVkZmU0NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDY2ICszMCwyNCBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAj
ZGVmaW5lIEluc3BlY3RvckFnZW50X2gKIAotI2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKLSNp
bmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDaGFyYWN0ZXJEYXRhOwotY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBET01XcmFw
cGVyV29ybGQ7Ci1jbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3Mg
RmxvYXRSZWN0OwotY2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNzIEluamVjdGVkU2NyaXB0Owor
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0
b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JD
U1NBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50OwotY2xhc3MgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2U7Ci1jbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwotY2xhc3Mg
SW5zcGVjdG9yUnVudGltZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yU3RhdGU7Ci1jbGFzcyBJbnNw
ZWN0b3JTdG9yYWdlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwotY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7Ci1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBLVVJMOwotY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgUmVzb3VyY2VFcnJv
cjsKLWNsYXNzIFNjcmlwdEFyZ3VtZW50czsKLWNsYXNzIFNjcmlwdENhbGxTdGFjazsKLWNsYXNz
IFNjcmlwdFByb2ZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTdG9yYWdlQXJlYTsK
LQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi1jbGFzcyBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ7Ci0jZW5kaWYKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKQEAgLTk2LDExICs1NSw5IEBAIGNsYXNzIEluc3BlY3RvckFnZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluc3BlY3RvckNsaWVu
dCosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJ
bnNwZWN0b3JDbGllbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdl
bnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIEluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KLQogICAgIHZvaWQg
aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CkBA
IC0xMTEsMzggKzY4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbG9hZFBhZ2UoRXJyb3JTdHJp
bmcqLCBib29sIGlnbm9yZUNhY2hlKTsKICAgICB2b2lkIHNob3dDb25zb2xlKCk7CiAKLSAgICB2
b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0
b3JDb29raWUpOwotCiAgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwog
ICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRl
bmQ7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKTsgfQotCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQo
KSB7IHJldHVybiBtX3BhZ2VBZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50KCkgeyByZXR1cm4gbV9jb25zb2xlQWdlbnQuZ2V0KCk7IH0KLSAgICBJ
bnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQoKSB7IHJldHVybiBtX2Nzc0FnZW50LmdldCgpOyB9
Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KCkgeyByZXR1cm4gbV9kb21BZ2VudC5n
ZXQoKTsgfQotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogcnVudGltZUFnZW50KCkgeyByZXR1
cm4gbV9ydW50aW1lQWdlbnQuZ2V0KCk7IH0KLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgpOyB9Ci0gICAgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCgpIHsgcmV0dXJuIG1fcmVzb3VyY2VB
Z2VudC5nZXQoKTsgfQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KiBkYXRhYmFzZUFnZW50KCkgeyByZXR1cm4gbV9kYXRhYmFzZUFnZW50LmdldCgpOyB9
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSB7IHJldHVybiBtX2RvbVN0b3JhZ2VBZ2VudC5nZXQo
KTsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tRGVidWdnZXJBZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7IH0KLSAg
ICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9maWxlckFnZW50LmdldCgpOyB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQotICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGlj
YXRpb25DYWNoZUFnZW50KCkgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0KCk7
IH0KLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIEluc3BlY3RvcldvcmtlckFnZW50
KiB3b3JrZXJBZ2VudCgpIHsgcmV0dXJuIG1fd29ya2VyQWdlbnQuZ2V0KCk7IH0KLSNlbmRpZgor
ICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZvaWQgcmVzdG9yZSgpOworCisgICAgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zdHJ1bWVudGluZ0FnZW50czsgfQogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKIApAQCAtMTY5LDggKzEwMCw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0SW5zcGVjdG9yRXh0ZW5zaW9uQVBJKGNvbnN0IFN0cmluZyYg
c291cmNlKTsKIAotICAgIEluc3BlY3RvclN0YXRlKiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGUu
Z2V0KCk7IH0KLQogICAgIC8vIEluc3BlY3RvckFnZW50IEFQSQogICAgIHZvaWQgZ2V0SW5zcGVj
dG9yU3RhdGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKTsKICAgICB2b2lkIHNldE1v
bml0b3JpbmdYSFJFbmFibGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwpAQCAtMTg3
LDQ2ICsxMTYsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlzc3VlRXZhbHVhdGVGb3JUZXN0Q29t
bWFuZHMoKTsKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKLSAgICBJbnNwZWN0b3JDbGll
bnQqIG1fY2xpZW50OwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwotICAgIE93
blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CisgICAgSW5z
dHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgT3duUHRyPEluc3BlY3Rv
clN0YXRlPiBtX3N0YXRlOwotICAgIE93blB0cjxJbnNwZWN0b3JQYWdlQWdlbnQ+IG1fcGFnZUFn
ZW50OwotICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2VudD4gbV9kb21BZ2VudDsKLSAgICBPd25Q
dHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7Ci0KLSNpZiBFTkFCTEUoREFUQUJBU0Up
Ci0gICAgT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IG1fZGF0YWJhc2VBZ2VudDsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIE93blB0cjxJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ+IG1fZG9tU3RvcmFnZUFnZW50OwotI2VuZGlmCi0KLSAgICBPd25QdHI8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFnZW50OwotCi0jaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBPd25QdHI8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50PiBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKLSNlbmRpZgotCi0gICAgUmVmUHRyPElu
c3BlY3RvclJlc291cmNlQWdlbnQ+IG1fcmVzb3VyY2VBZ2VudDsKLSAgICBPd25QdHI8SW5zcGVj
dG9yUnVudGltZUFnZW50PiBtX3J1bnRpbWVBZ2VudDsKLQotICAgIE93blB0cjxJbnNwZWN0b3JD
b25zb2xlQWdlbnQ+IG1fY29uc29sZUFnZW50OwogCiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3Ry
aW5nPiA+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwogICAgIFN0cmluZyBtX3Nob3dQ
YW5lbEFmdGVyVmlzaWJsZTsKICAgICBTdHJpbmcgbV9pbnNwZWN0b3JFeHRlbnNpb25BUEk7Ci0j
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgT3duUHRyPEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ+IG1fZGVidWdnZXJBZ2VudDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudD4gbV9kb21EZWJ1Z2dlckFnZW50OwotICAgIE93blB0cjxJbnNwZWN0b3JQcm9maWxl
ckFnZW50PiBtX3Byb2ZpbGVyQWdlbnQ7Ci0jZW5kaWYKICNpZiBFTkFCTEUoV09SS0VSUykKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFJlZlB0cjxJbnNwZWN0b3JXb3JrZXJSZXNvdXJj
ZT4gPiBXb3JrZXJzTWFwOwogICAgIFdvcmtlcnNNYXAgbV93b3JrZXJzOwotICAgIE93blB0cjxJ
bnNwZWN0b3JXb3JrZXJBZ2VudD4gbV93b3JrZXJBZ2VudDsKICNlbmRpZgogICAgIGJvb2wgbV9j
YW5Jc3N1ZUV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDVmMjNjNWExN2YxOTc1
ZWYzN2IyZjVhY2I3YTIxMjBkNmI3NTNiNmEuLmE0ZDY4MjQxZDJlZmI4ZWFlZTgyMmJiYmZiMWRl
OTdkYjI2NWQ5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTM4LDE2ICszOCwyOCBAQAogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb25z
b2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC01NSwxNyArNjcsODEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
eworCitjbGFzcyBQYWdlUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCB7CitwdWJsaWM6CisgICAgUGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFnZSkKKyAgICAgICAgOiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICAgICAsIG1faW5zcGVjdGVk
UGFnZShwYWdlKSB7IH0KKyAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CisKK3By
aXZhdGU6CisgICAgdmlydHVhbCBTY3JpcHRTdGF0ZSogZ2V0RGVmYXVsdEluc3BlY3RlZFN0YXRl
KCkgeyByZXR1cm4gbWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKSk7IH0KKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7Cit9OworCit9CisKIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKSkKLSAgICAsIG1faW5zcGVjdG9yQWdl
bnQoYWRvcHRQdHIobmV3IEluc3BlY3RvckFnZW50KHBhZ2UsIGluc3BlY3RvckNsaWVudCwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKSkKKyAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50
cyhhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGluZ0FnZW50cygpKSkKKyAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yUGFnZSgpKQorICAg
ICwgbV9zdGF0ZShhZG9wdFB0cihuZXcgSW5zcGVjdG9yU3RhdGUoaW5zcGVjdG9yQ2xpZW50KSkp
CisgICAgLCBtX2luc3BlY3RvckFnZW50KGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JBZ2VudChwYWdl
LCBpbnNwZWN0b3JDbGllbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCkpKSkKKyAgICAsIG1fcGFnZUFnZW50KEluc3BlY3RvclBhZ2VB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKQorICAgICwgbV9kb21BZ2VudChJbnNwZWN0b3JET01BZ2Vu
dDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCks
IGluc3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
Z2V0KCkpKQorICAgICwgbV9jc3NBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ1NTQWdlbnQo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkpCisjaWYgRU5B
QkxFKERBVEFCQVNFKQorICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQor
I2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgICwgbV9kb21TdG9yYWdlQWdlbnQo
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpKSkKKyNlbmRpZgorICAgICwgbV90aW1lbGluZUFnZW50KEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCkpKQorI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSkpKQorI2VuZGlm
CisgICAgLCBtX3Jlc291cmNlQWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fc3RhdGUuZ2V0
KCkpKQorICAgICwgbV9ydW50aW1lQWdlbnQoYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQo
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2UpKSkKKyAgICAsIG1fY29uc29sZUFn
ZW50KGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX2luc3BlY3RvckFnZW50LmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSkpKQorI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorICAgICwgbV9kZWJ1Z2dlckFnZW50KFBhZ2VEZWJ1Z2dlckFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBw
YWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpCisgICAgLCBtX2RvbURlYnVnZ2Vy
QWdlbnQoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSwgbV9kZWJ1Z2dlckFn
ZW50LmdldCgpLCBtX2luc3BlY3RvckFnZW50LmdldCgpKSkKKyAgICAsIG1fcHJvZmlsZXJBZ2Vu
dChJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX2NvbnNvbGVBZ2VudC5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCisjZW5kaWYK
KyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICAsIG1fd29ya2VyQWdlbnQoSW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQorI2VuZGlmCiAgICAg
LCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9u
dGVuZChmYWxzZSkKICAgICAsIG1fc3RhcnRVc2VySW5pdGlhdGVkRGVidWdnaW5nV2hlbkZyb250
ZWRJc0Nvbm5lY3RlZChmYWxzZSkKIHsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudC5nZXQoKQorICAgICAgICAs
IG1fY29uc29sZUFnZW50LmdldCgpCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgICAgICAsIG1f
ZGF0YWJhc2VBZ2VudC5nZXQoKQorI2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAg
ICAgICAsIG1fZG9tU3RvcmFnZUFnZW50LmdldCgpCisjZW5kaWYKKyAgICApOwogfQogCiBJbnNw
ZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiB7CisgICAgQVNTRVJUKCFt
X2luc3BlY3RvckNsaWVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dGVkUGFnZURlc3Ryb3llZCgpCit7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7CisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbV9kb21EZWJ1Z2dlckFnZW50LmNsZWFyKCk7
CisgICAgbV9kZWJ1Z2dlckFnZW50LmNsZWFyKCk7CisjZW5kaWYKKyAgICBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0
b3JEZXN0cm95ZWQoKTsKKyAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJ
bnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCkBAIC05Miwx
MyArMTY4LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnN0YXJ0VGltZWxpbmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7
Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdGFydCgmZXJyb3IpOwor
ICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnQoJmVycm9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpzdG9wVGltZWxpbmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdG9wKCZlcnJvcik7
CisgICAgbV90aW1lbGluZUFnZW50LT5zdG9wKCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKQEAgLTEwNiw2ICsxODIsMzAgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3BlbmluZ0Zyb250
ZW5kID0gZmFsc2U7CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNw
ZWN0b3JGcm9udGVuZChtX2luc3BlY3RvckNsaWVudCkpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9u
dGVuZC5nZXQoKSk7CisgICAgLy8gV2UgY2FuIHJlY29ubmVjdCB0byBleGlzdGluZyBmcm9udC1l
bmQgLT4gdW5tdXRlIHN0YXRlLgorICAgIG1fc3RhdGUtPnVubXV0ZSgpOworCisjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+
c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYKKyAgICBtX3Bh
Z2VBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9k
b21BZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9j
b25zb2xlQWdlbnQtPnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAg
IG1fdGltZWxpbmVBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7
CisgICAgbV9yZXNvdXJjZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdl
dCgpKTsKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBtX2RlYnVnZ2VyQWdl
bnQtPnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fcHJvZmls
ZXJBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYK
KyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgbV9kYXRhYmFzZUFnZW50LT5zZXRGcm9udGVuZCht
X2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKKyAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVu
ZC5nZXQoKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBtX3dvcmtlckFnZW50
LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNlbmRpZgogICAgIG1f
aW5zcGVjdG9yQWdlbnQtPnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOwog
CiAgICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQpAQCAt
MTE2LDMyICsyMTYsMzIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKQogICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBhZG9wdFB0cihuZXcgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIoCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LAogI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgICAgIG1faW5zcGVjdG9yQWdl
bnQtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpLAorICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5nZXQoKSwKICNlbmRpZgotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5jc3NBZ2VudCgp
LAotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKSwKLSAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSwKKyAgICAgICAgbV9jc3NBZ2VudC5nZXQoKSwKKyAg
ICAgICAgbV9jb25zb2xlQWdlbnQuZ2V0KCksCisgICAgICAgIG1fZG9tQWdlbnQuZ2V0KCksCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQt
PmRvbURlYnVnZ2VyQWdlbnQoKSwKKyAgICAgICAgbV9kb21EZWJ1Z2dlckFnZW50LmdldCgpLAog
I2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgICAgICBtX2luc3BlY3RvckFnZW50
LT5kb21TdG9yYWdlQWdlbnQoKSwKKyAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQuZ2V0KCksCiAj
ZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRh
dGFiYXNlQWdlbnQoKSwKKyAgICAgICAgbV9kYXRhYmFzZUFnZW50LmdldCgpLAogI2VuZGlmCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQt
PmRlYnVnZ2VyQWdlbnQoKSwKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlm
Ci0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPnJlc291cmNlQWdlbnQoKSwKLSAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+cGFnZUFnZW50KCksCisgICAgICAgIG1fcmVzb3VyY2VBZ2VudC5nZXQo
KSwKKyAgICAgICAgbV9wYWdlQWdlbnQuZ2V0KCksCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSwKKyAgICAg
ICAgbV9wcm9maWxlckFnZW50LmdldCgpLAogI2VuZGlmCi0gICAgICAgIG1faW5zcGVjdG9yQWdl
bnQtPnJ1bnRpbWVBZ2VudCgpLAotICAgICAgICBtX2luc3BlY3RvckFnZW50LT50aW1lbGluZUFn
ZW50KCkKKyAgICAgICAgbV9ydW50aW1lQWdlbnQuZ2V0KCksCisgICAgICAgIG1fdGltZWxpbmVB
Z2VudC5nZXQoKQogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgICAgICAsIG1faW5zcGVjdG9yQWdl
bnQtPndvcmtlckFnZW50KCkKKyAgICAgICAgLCBtX3dvcmtlckFnZW50LmdldCgpCiAjZW5kaWYK
ICAgICApKTsKIApAQCAtMTU3LDcgKzI1NywzMyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBtX2luc3BlY3RvckFnZW50LT5kaXNjb25u
ZWN0RnJvbnRlbmQoKTsKKyAgICAvLyBEZXN0cm95aW5nIGFnZW50cyB3b3VsZCBjaGFuZ2UgdGhl
IHN0YXRlLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0LgorICAgIC8vIFByZS1kaXNjb25uZWN0IHN0
YXRlIHdpbGwgYmUgdXNlZCB0byByZXN0b3JlIGluc3BlY3RvciBhZ2VudHMuCisgICAgbV9zdGF0
ZS0+bXV0ZSgpOworCisgICAgbV9pbnNwZWN0b3JBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJG
cm9udGVuZCgpOworICAgIG1fZG9tRGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworICAg
IG1fcHJvZmlsZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2VuZGlmCisjaWYgRU5BQkxFKE9G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+Y2xl
YXJGcm9udGVuZCgpOworI2VuZGlmCisgICAgbV9jb25zb2xlQWdlbnQtPmNsZWFyRnJvbnRlbmQo
KTsKKyAgICBtX2RvbUFnZW50LT5jbGVhckZyb250ZW5kKCk7CisgICAgbV90aW1lbGluZUFnZW50
LT5jbGVhckZyb250ZW5kKCk7CisgICAgbV9yZXNvdXJjZUFnZW50LT5jbGVhckZyb250ZW5kKCk7
CisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIG1fZGF0YWJhc2VBZ2VudC0+Y2xlYXJGcm9udGVu
ZCgpOworI2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgIG1fZG9tU3RvcmFnZUFn
ZW50LT5jbGVhckZyb250ZW5kKCk7CisjZW5kaWYKKyAgICBtX3BhZ2VBZ2VudC0+Y2xlYXJGcm9u
dGVuZCgpOworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIG1fd29ya2VyQWdlbnQtPmNsZWFyRnJv
bnRlbmQoKTsKKyNlbmRpZgogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNj
cmlwdEhvc3QoKS0+Y2xlYXJGcm9udGVuZCgpOwogCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC5j
bGVhcigpOwpAQCAtMTk1LDcgKzMyMSwyMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJl
c3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0bwogewog
ICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9udGVuZCk7CiAgICAgY29ubmVjdEZyb250ZW5kKCk7
Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShp
bnNwZWN0b3JTdGF0ZUNvb2tpZSk7CisgICAgbV9zdGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVj
dG9yU3RhdGVDb29raWUpOworCisgICAgbV9kb21BZ2VudC0+cmVzdG9yZSgpOworICAgIG1fcmVz
b3VyY2VBZ2VudC0+cmVzdG9yZSgpOworICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzdG9yZSgpOwor
I2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICBtX2RhdGFiYXNlQWdlbnQtPnJlc3RvcmUoKTsKKyNl
bmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+cmVz
dG9yZSgpOworI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbV9k
ZWJ1Z2dlckFnZW50LT5yZXN0b3JlKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5yZXN0b3JlKCk7
CisjZW5kaWYKKyAgICBtX2luc3BlY3RvckFnZW50LT5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMDUsNyArMzQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIHMKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+
ZG9tQWdlbnQoKS0+ZHJhd05vZGVIaWdobGlnaHQoY29udGV4dCk7CisgICAgbV9kb21BZ2VudC0+
ZHJhd05vZGVIaWdobGlnaHQoY29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2hvd0NvbnNvbGUoKQpAQCAtMjIzLDcgKzM2NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6aW5zcGVjdChOb2RlKiBub2RlKQogCiAgICAgc2hvdygpOwogCi0gICAgbV9pbnNwZWN0
b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aW5zcGVjdChub2RlKTsKKyAgICBtX2RvbUFnZW50LT5pbnNw
ZWN0KG5vZGUpOwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZWQoKSBjb25z
dApAQCAtMjM4LDcgKzM3OSw3IEBAIFBhZ2UqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rl
ZFBhZ2UoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OnRpbWVsaW5lUHJvZmls
ZXJFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2Vu
dCgpLT5zdGFydGVkKCk7CisgICAgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC0+c3RhcnRlZCgpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckV4dGVuc2lvbkFQSShj
b25zdCBTdHJpbmcmIHNvdXJjZSkKQEAgLTI1NSwzNSArMzk2LDM1IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiB7CiAgICAg
RXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlk
ZUhpZ2hsaWdodCgmZXJyb3IpOworICAgIG1fZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQoJmVycm9y
KTsKIH0KIAogTm9kZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlnaGxpZ2h0
ZWROb2RlKCk7CisgICAgcmV0dXJuIG1fZG9tQWdlbnQtPmhpZ2hsaWdodGVkTm9kZSgpOwogfQog
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmVuYWJsZVByb2ZpbGVyKCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2lu
c3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCktPmVuYWJsZSgmZXJyb3IpOworICAgIG1fcHJv
ZmlsZXJBZ2VudC0+ZW5hYmxlKCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzYWJsZVByb2ZpbGVyKCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2lu
c3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCktPmRpc2FibGUoJmVycm9yKTsKKyAgICBtX3By
b2ZpbGVyQWdlbnQtPmRpc2FibGUoJmVycm9yKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9s
bGVyOjpwcm9maWxlckVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5w
cm9maWxlckFnZW50KCktPmVuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9wcm9maWxlckFnZW50LT5l
bmFibGVkKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVidWdnZXJFbmFibGVk
KCkKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2VudCgpLT5lbmFi
bGVkKCk7CisgICAgcmV0dXJuIG1fZGVidWdnZXJBZ2VudC0+ZW5hYmxlZCgpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dlcigpCkBAIC0zMDAsMTIg
KzQ0MSwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dl
cigpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKCkKIHsKLSAg
ICBtX2luc3BlY3RvckFnZW50LT5kZWJ1Z2dlckFnZW50KCktPmRpc2FibGUoKTsKKyAgICBtX2Rl
YnVnZ2VyQWdlbnQtPmRpc2FibGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQogewotICAgIG1faW5zcGVjdG9yQWdlbnQtPnBy
b2ZpbGVyQWdlbnQoKS0+c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgbV9wcm9m
aWxlckFnZW50LT5zdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCkBAIC0zMTMsMjAg
KzQ1NCwyMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJv
ZmlsaW5nKCkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNob3co
KTsKLSAgICBtX2luc3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCktPnN0b3BVc2VySW5pdGlh
dGVkUHJvZmlsaW5nKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFBy
b2ZpbGluZygpOwogICAgIG1faW5zcGVjdG9yQWdlbnQtPnNob3dQcm9maWxlc1BhbmVsKCk7CiB9
CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJv
ZmlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdl
bnQoKS0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOworICAgIHJldHVybiBtX3By
b2ZpbGVyQWdlbnQtPmlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogewotICAgIGlmIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2Vu
dCgpKSB7CisgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBFcnJvclN0cmluZyBl
cnJvcjsKLSAgICAgICAgZGVidWdnZXJBZ2VudC0+cmVzdW1lKCZlcnJvcik7CisgICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+cmVzdW1lKCZlcnJvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiOTczNzNlMWQ5NzIx
MDk4MTlmYjQ0Mzk1MzFkY2Y1ZDA2MjUxYzBlLi4wZTBmMGQ2OGQ3OGU1NmJjNmU5MzJlZjgwNDc3
NmE5ZGMyMGE3NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTQzLDEwICs0MywyNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3Rv
ckFnZW50OworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKIGNsYXNz
IEluc3BlY3RvckNsaWVudDsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKK2NsYXNzIElu
c3BlY3RvckRPTUFnZW50OworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKK2NsYXNz
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7
CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2Vu
dDsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OworY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50OworY2xhc3MgSW5zcGVjdG9yU3Rh
dGU7CitjbGFzcyBJbnNwZWN0b3JTdG9yYWdlQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OworY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ7CitjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250
ZW5kVGFzazsKIGNsYXNzIE5vZGU7CkBAIC01Nyw2ICs3NCw3IEBAIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXIgewogcHVibGljOgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIEluc3Bl
Y3RvckNsaWVudCopOwogICAgIH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgdm9pZCBpbnNw
ZWN0ZWRQYWdlRGVzdHJveWVkKCk7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICBQ
YWdlKiBpbnNwZWN0ZWRQYWdlKCkgY29uc3Q7CkBAIC0xMDQsOCArMTIyLDM2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250
ZW5kVGFzazsKIAorICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7CiAgICAgT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7CisgICAgT3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwogICAgIE93
blB0cjxJbnNwZWN0b3JBZ2VudD4gbV9pbnNwZWN0b3JBZ2VudDsKKworICAgIE93blB0cjxJbnNw
ZWN0b3JQYWdlQWdlbnQ+IG1fcGFnZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2Vu
dD4gbV9kb21BZ2VudDsKKyAgICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7
CisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PiBtX2RhdGFiYXNlQWdlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAg
T3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gbV9kb21TdG9yYWdlQWdlbnQ7CisjZW5k
aWYKKyAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFnZW50Owor
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgT3duUHRyPEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CisjZW5kaWYK
KyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OworICAg
IE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IG1fcnVudGltZUFnZW50OworICAgIE93blB0
cjxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+IG1fY29uc29sZUFnZW50OworI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBtX2Rl
YnVnZ2VyQWdlbnQ7CisgICAgT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IG1fZG9t
RGVidWdnZXJBZ2VudDsKKyAgICBPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9m
aWxlckFnZW50OworI2VuZGlmCisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgT3duUHRyPEluc3Bl
Y3RvcldvcmtlckFnZW50PiBtX3dvcmtlckFnZW50OworI2VuZGlmCisKICAgICBPd25QdHI8SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAg
ICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggMmFlOTk3MmY1Nzg0NzgwNTliZGJiNzAwN2Q2ZjU5OWRiZDIwY2U5Ny4u
YzEyY2EwZGRhZDgyNGFkY2Q1ODViNjhhNjRhZTZlMjM3MDNjMWU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2Vy
dERPTU5vZGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZwogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQWdlbnQqIGlu
c3BlY3RvckFnZW50LCBOb2RlKiBub2RlKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMo
KS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERPTU5v
ZGUobm9kZSk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+
aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCkBAIC0x
MzYsNyArMTM2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURP
TU5vZGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2UKICAgICBpZiAoSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0
cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAg
ZG9tRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKICNlbmRpZgotICAgIGlm
IChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQo
KSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
Pmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9t
QWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7CiB9CiAKQEAgLTE1MCwxMyArMTUwLDEzIEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5z
cGVjdG9yQWdlbnQqIGluc3BlY3RvckFnCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEVs
ZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9
IGluc3BlY3RvckFnZW50LT5kb21BZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0
b3JET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHls
ZUF0dHJJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTm9kZSogbm9kZSkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRv
bUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3Rv
ckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckRPTUFnZW50KCkpCiAgICAg
ICAgIGRvbUFnZW50LT5kaWRJbnZhbGlkYXRlU3R5bGVBdHRyKG5vZGUpOwogfQogCkBAIC0xNzUs
NyArMTc1LDcgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJl
c3NJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2UKIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQWdlbnQqIGlu
c3BlY3RvckFnZW50LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogewotICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmlu
c3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdl
bnQtPmNoYXJhY3RlckRhdGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIApAQCAtNDU5LDcg
KzQ1OSw4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zCiAgICAgaWYgKEluc3BlY3RvckFnZW50
KiBpbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgp
KSkgewogICAgICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgICAgICByZXNv
dXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25z
ZSk7Ci0gICAgICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiBy
ZXNvdXJjZSBub3RpZmljYXRpb24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KKyAgICAgICAg
aWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
Pmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAg
ICAgICBjb25zb2xlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9u
dC1lbmQgcmVsaWVzIG9uIHRoaXMuCiAgICAgfQogfQogCkBAIC01MDQsMTIgKzUwNSwxNCBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWN0b3JBZ2VudAogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hM
b2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7CiAgICAgaWYgKEluc3BlY3RvclJl
c291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVj
dG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlm
aWVyLCBlcnJvcik7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5kaWRGYWls
TG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVz
b3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCisgICAgaWYgKElu
c3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3Ry
dW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNv
bGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOyAvLyBUaGlzIHNob3Vs
ZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlmaWNhdGlvbiwgZnJvbnQtZW5kIHJlbGllcyBvbiB0
aGlzLgogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVt
YmVyKQogewotICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+cmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOworICAg
IGlmIChJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3BlY3RvckFnZW50
LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQorICAgICAg
ICBjb25zb2xlQWdlbnQtPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNl
bmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAg
ICAgICAgIHJlc291cmNlQWdlbnQtPnNldEluaXRpYWxYSFJDb250ZW50KGlkZW50aWZpZXIsIHNv
dXJjZVN0cmluZyk7CiB9CkBAIC02MjcsMjcgKzYzMCwzMiBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25DbwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29s
ZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNv
bGVBZ2VudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50
KiBjb25zb2xlQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5p
bnNwZWN0b3JDb25zb2xlQWdlbnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0
YWNrKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQog
ewotICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Cisg
ICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdl
bnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAg
ICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudCwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IHN0YWNrKQogewotICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdl
bnQoKS0+Y291bnQoYXJndW1lbnRzLCBzdGFjayk7CisgICAgaWYgKEluc3BlY3RvckNvbnNvbGVB
Z2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMo
KS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+Y291bnQo
YXJndW1lbnRzLCBzdGFjayk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCkt
PnN0YXJ0VGltaW5nKHRpdGxlKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25z
b2xlQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0
b3JDb25zb2xlQWdlbnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5zdGFydFRpbWluZyh0aXRs
ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Z0ltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdl
bnQtPmNvbnNvbGVBZ2VudCgpLT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7CisgICAgaWYgKElu
c3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3Ry
dW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNv
bGVBZ2VudC0+c3RvcFRpbWluZyh0aXRsZSwgc3RhY2spOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZUltcGwoSW5zcGVjdG9yQWdlbnQqIGlu
c3BlY3RvckFnZW50LCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQpAQCAt
NjYyLDEzICs2NzAsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVN
YXJrVGltZWxpbmVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3IKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFy
dFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgaWYgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2Zp
bGVyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+cHJvZmlsZXJBZ2VudCgpKQorICAgIGlmIChJbnNw
ZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3Ry
dW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQogICAgICAgICBwcm9m
aWxlckFnZW50LT5hZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRQcm9maWxlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIFJlZlB0cjxTY3Jp
cHRQcm9maWxlPiBwcm9maWxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQogewotICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JQcm9maWxl
ckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKSB7CiAgICAgICAgIGNvbnN0IFNjcmlwdENh
bGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgICAgIHByb2ZpbGVy
QWdlbnQtPmFkZFByb2ZpbGUocHJvZmlsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RD
YWxsZXIuc291cmNlVVJMKCkpOwogICAgIH0KQEAgLTY3NiwxNCArNjg0LDE2IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5z
cGVjdG9yQWdlbnQsIFJlCiAKIFN0cmluZyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1
cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0
b3JBZ2VudCwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQogewotICAgIGlmIChJbnNwZWN0
b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVy
QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9
IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVy
QWdlbnQoKSkKICAgICAgICAgcmV0dXJuIHByb2ZpbGVyQWdlbnQtPmdldEN1cnJlbnRVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUoaW5jcmVtZW50UHJvZmlsZU51bWJlcik7CiAgICAgcmV0dXJuICIi
OwogfQogCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJFbmFibGVkSW1w
bChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgcmV0dXJuIGluc3BlY3Rv
ckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKS0+
ZW5hYmxlZCgpOworICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50
ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yUHJvZmls
ZXJBZ2VudCgpKQorICAgICAgICByZXR1cm4gcHJvZmlsZXJBZ2VudC0+ZW5hYmxlZCgpOworICAg
IHJldHVybiBmYWxzZTsKIH0KICNlbmRpZgogCkBAIC03ODMsNyArNzkzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWMKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVz
ZU9uTmF0aXZlRXZlbnQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50
LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKICAgICAg
ICAgZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGU0ODhmYmQxNTAxZWZhNTczMjE3YTBmZjE3MDdmYTJl
ZGI5OTBmMS4uOGQxMzBhZjE0MDNjZmZjMjM3NzJkOTE4ZTM5ZDk2OTU2MzU2MWU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC0yMDEsNiArMjAxLDkgQEAgUGFnZTo6flBhZ2UoKQogICAgIG1fZWRp
dG9yQ2xpZW50LT5wYWdlRGVzdHJveWVkKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQodGhpcyk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKKyNl
bmRpZgogCiAgICAgYmFja0ZvcndhcmQoKS0+Y2xvc2UoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92931</attachid>
            <date>2011-05-10 01:54:51 -0700</date>
            <delta_ts>2011-05-11 22:07:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60359-20110510125448.patch</filename>
            <type>text/plain</type>
            <size>47678</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjQxNDRlMDBiNTA1ZGU0
Y2Q5ODE0MzhkZTJmYzNmY2FmZGJmNWY3Li5hNTJjMGNjMGJhZDIxOTE1NDM2Yzg2ZDNhMGExMWVl
MjU0ZTcyY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTEtMDUtMDYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBhZ2VudHMgZnJv
bSBJbnNwZWN0b3JBZ2VudCB0byBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDM1OQorCisgICAgICAgIEFsbCBpbnNw
ZWN0b3IgYWdlbnRzIGFyZSBub3cgY3JlYXRlZCBhbmQgb3duZWQgYnkgSW5zcGVjdG9yQ29udHJv
bGxlciB3aGljaAorICAgICAgICBpbiB0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGluc3BlY3RlZCBQ
YWdlLiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gZ2V0cyBhY2Nlc3MKKyAgICAgICAgdG8gdGhl
IGluc3RydW1lbnRpbmcgYWdlbnRzIGJ5IG1lYW5zIG9mIEluc3BlY3RvckFnZW50OjppbnN0cnVt
ZW50aW5nQWdlbnRzKCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gbWFuYWdpbmcgaW5zcGVj
dG9yIGFnZW50cyBsaWZldGltZSBJbnNwZWN0b3JDb250cm9sbGVyIHNldHMKKyAgICAgICAgSW5z
cGVjdG9yRnJvbnRlZCBvbiB0aGUgYWdlbnRzIHdoZW4gdGhlIGZyb250LWVuZCBpcyBjb25uZWN0
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50Ojpj
bGVhckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDogYWxs
IGFjY2Vzc29ycyB0byBvdGhlciBhZ2VudHMgd2VyZSByZW1vdmVkIGFsb25nIHdpdGgKKyAgICAg
ICAgdGhlIGFnZW50cyB0aGVtc2VsdmVzIGZyb20gSW5zcGVjdG9yQWdlbnQuIEV2ZXJ5IGFnZW50
IHRoYXQgZGVwZW5kcyBvbiBzb21lIG90aGVyIGFnZW50cworICAgICAgICByZWNlaXZlcyBwb2lu
dGVycyB0byB0aGVtIGV4cGxpY2l0ZWx5IGluIGl0cyBjb25zdHJ1Y3Rvci4gQWxsIGFjY2VzcyB0
byB0aGUgYWdlbnRzCisgICAgICAgIGZyb20gV2ViQ29yZSBzaG91bGQgZ28gdGhyb3VnaCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggcmV0cmlldmVzIGNvcnJlc3BvbmRpbmcKKyAgICAg
ICAgYWdlbnRzIHVzaW5nIEluc3RydW1lbnRpbmdBZ2VudHMgc3RydWN0dXJlIHdoaWNoIHJlcHJl
c2VudHMgdGhlIHNldCBvZiBhY3RpdmUgYWdlbnRzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQWdlbnQ6Omluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWVsaW5lUHJvZmlsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWVsaW5lUHJvZmlsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5zcGVjdG9y
U3RhdGVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGlt
ZWxpbmVQcm9maWxlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpoaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZW5hYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkZWJ1Z2dlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppc1JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2Rl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1v
ZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0Nv
bnNvbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkUHJvZmlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9u
TmF0aXZlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp+UGFnZSk6IHdlIHNlbmQgdHdvIG5vdGlmaWNhdGlvbnMgd2hlbiBpbnNwZWN0ZWQg
UGFnZSBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQ6IG9uZSB0byB0aGUgaW5zcGVjdG9yIGlu
c3RydW1lbnRhdGlvbiBhbmQgYW5vdGhlciBvbmUgdG8gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIK
KyAgICAgICAgd2hpY2ggaXMgb3duZWQgYnkgdGhlIFBhZ2UuCisKIDIwMTEtMDUtMTAgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oCmluZGV4IGI1OTJkOWJhZTA4NTdkZGIxNWRkZmE1ZWNkMDI2NzVjZmNhYTU4ZjQuLjdiMzg0
MTQ5MTlhMWY2MWVlYTZmMDEwYTUwNTU4MTA0MmRhNjJjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsK
IGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3Mg
U2NyaXB0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cAppbmRleCA3MjMwZTAxMmJiMTM4NDhjMTgxZmViMjcyYWVlNTEyNmJmNjZkYTljLi5kMDUyODk2
YTRhYTE5N2JmYmVkNWNhNGZmYzA5MDExZGQyOTk1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTM5LDEyMCArMzksMzggQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yUnVudGltZUFnZW50LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yV29y
a2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKLSNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBFTkFC
TEUoREFUQUJBU0UpCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgSW5z
cGVjdG9yQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciB0aW1lbGluZVByb2ZpbGVyRW5h
YmxlZFtdID0gInRpbWVsaW5lUHJvZmlsZXJFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIGRl
YnVnZ2VyRW5hYmxlZFtdID0gImRlYnVnZ2VyRW5hYmxlZCI7Ci19Ci0KIHN0YXRpYyBjb25zdCBj
aGFyIHNjcmlwdHNQYW5lbE5hbWVbXSA9ICJzY3JpcHRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNv
bnNvbGVQYW5lbE5hbWVbXSA9ICJjb25zb2xlIjsKIHN0YXRpYyBjb25zdCBjaGFyIHByb2ZpbGVz
UGFuZWxOYW1lW10gPSAicHJvZmlsZXMiOwogCi1uYW1lc3BhY2UgewotCi1jbGFzcyBQYWdlUnVu
dGltZUFnZW50IDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVBZ2VudCB7Ci1wdWJsaWM6Ci0gICAg
UGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgUGFnZSogcGFnZSkKLSAgICAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQotICAgICAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKSB7IH0KLSAg
ICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVh
bCBTY3JpcHRTdGF0ZSogZ2V0RGVmYXVsdEluc3BlY3RlZFN0YXRlKCkgeyByZXR1cm4gbWFpbldv
cmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7IH0KLSAgICBQYWdl
KiBtX2luc3BlY3RlZFBhZ2U7Ci19OwotCi19Ci0KLUluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JB
Z2VudChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9y
QWdlbnQoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgOiBt
X2luc3BlY3RlZFBhZ2UocGFnZSkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZnJv
bnRlbmQoMCkKLSAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhhZG9wdFB0cihuZXcgSW5zdHJ1
bWVudGluZ0FnZW50cykpCisgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKLSAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkp
KQotICAgICwgbV9wYWdlQWdlbnQoSW5zcGVjdG9yUGFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKQotICAgICwg
bV9kb21BZ2VudChJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fY2xpZW50LCBtX3N0YXRlLmdldCgpLCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpKQotICAgICwgbV9jc3NBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVj
dG9yQ1NTQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgp
KSkpCi0jaWYgRU5BQkxFKERBVEFCQVNFKQotICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3Rh
dGUuZ2V0KCkpKQotI2VuZGlmCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgICwgbV9kb21T
dG9yYWdlQWdlbnQoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSkKLSNlbmRpZgotICAgICwgbV90aW1lbGlu
ZUFnZW50KEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFn
ZSkpKQotI2VuZGlmCi0gICAgLCBtX3Jlc291cmNlQWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCks
IG1fc3RhdGUuZ2V0KCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQoYWRvcHRQdHIobmV3IFBhZ2VS
dW50aW1lQWdlbnQobV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2UpKSkKLSAgICAsIG1fY29u
c29sZUFnZW50KGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCB0aGlzLCBtX3N0YXRlLmdldCgpLCBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIG1fZG9tQWdlbnQuZ2V0KCkpKSkKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICAsIG1fZGVidWdnZXJBZ2VudChQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSwgaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKSkKLSAgICAsIG1fZG9tRGVidWdnZXJBZ2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBt
X2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCksIHRoaXMpKQotICAgICwgbV9w
cm9maWxlckFnZW50KEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fY29uc29sZUFnZW50LmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgp
KSkKLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgICwgbV93b3JrZXJBZ2VudChJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCi0j
ZW5kaWYKICAgICAsIG1fY2FuSXNzdWVFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGZhbHNlKQog
ewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0gICAgQVNTRVJUX0FSRyhjbGllbnQsIGNs
aWVudCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpiaW5kSW5zcGVjdG9yQWdlbnQo
bV9pbnNwZWN0ZWRQYWdlLCB0aGlzKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckFnZW50KHRoaXMpOwotCi0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0SG9zdCgpLT5pbml0KHRoaXMKLSAgICAgICAgLCBtX2NvbnNvbGVBZ2VudC5nZXQo
KQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICAgICAgLCBtX2RhdGFiYXNlQWdlbnQuZ2V0KCkK
LSNlbmRpZgotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAgICAgLCBtX2RvbVN0b3JhZ2VB
Z2VudC5nZXQoKQotI2VuZGlmCi0gICAgKTsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6On5JbnNwZWN0
b3JBZ2VudCgpCkBAIC0xNjAsNTQgKzc4LDIxIEBAIEluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9y
QWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQoMCk7
CiAKICAgICAvLyBUaGVzZSBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgaW4gaW5zcGVjdGVkUGFn
ZURlc3Ryb3llZCgpLgotICAgIEFTU0VSVCghbV9jbGllbnQpOwogICAgIEFTU0VSVCghbV9pbnNw
ZWN0ZWRQYWdlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkUGFnZURlc3Ry
b3llZCgpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmQpIHsKKyAgICBpZiAobV9mcm9udGVuZCkKICAg
ICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOwot
ICAgICAgICBkaXNjb25uZWN0RnJvbnRlbmQoKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBtX2RvbURlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKLSAgICBtX2Rl
YnVnZ2VyQWdlbnQuY2xlYXIoKTsKLSNlbmRpZgotCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFn
ZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bmJpbmRJbnNwZWN0b3JBZ2VudCht
X2luc3BlY3RlZFBhZ2UpOwogICAgIG1faW5zcGVjdGVkUGFnZSA9IDA7Ci0KLSAgICBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwotCi0gICAgbV9jbGllbnQtPmluc3BlY3Rv
ckRlc3Ryb3llZCgpOwotICAgIG1fY2xpZW50ID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3Rv
clN0YXRlQ29va2llKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgbV9z
dGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVjdG9yU3RhdGVDb29raWUpOwotCiAgICAgbV9mcm9u
dGVuZC0+aW5zcGVjdG9yKCktPmZyb250ZW5kUmV1c2VkKCk7Ci0KLSAgICBtX2RvbUFnZW50LT5y
ZXN0b3JlKCk7Ci0gICAgbV9yZXNvdXJjZUFnZW50LT5yZXN0b3JlKCk7Ci0gICAgbV90aW1lbGlu
ZUFnZW50LT5yZXN0b3JlKCk7Ci0KLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgbV9kYXRhYmFz
ZUFnZW50LT5yZXN0b3JlKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAg
ICBtX2RvbVN0b3JhZ2VBZ2VudC0+cmVzdG9yZSgpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnJlc3RvcmUoKTsKLSAgICBt
X3Byb2ZpbGVyQWdlbnQtPnJlc3RvcmUoKTsKLSNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckFn
ZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVy
V29ybGQqIHdvcmxkKQpAQCAtMjIxLDMwICsxMDYsOCBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQq
CiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBp
bnNwZWN0b3JGcm9udGVuZCkKIHsKLSAgICAvLyBXZSBjYW4gcmVjb25uZWN0IHRvIGV4aXN0aW5n
IGZyb250LWVuZCAtPiB1bm11dGUgc3RhdGUuCi0gICAgbV9zdGF0ZS0+dW5tdXRlKCk7Ci0KICAg
ICBtX2Zyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQ7CiAKLSNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQotICAgIG1fYXBwbGljYXRpb25DYWNoZUFnZW50LT5zZXRGcm9udGVu
ZChtX2Zyb250ZW5kKTsKLSNlbmRpZgotICAgIG1fcGFnZUFnZW50LT5zZXRGcm9udGVuZChtX2Zy
b250ZW5kKTsKLSAgICBtX2RvbUFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSAgICBt
X2NvbnNvbGVBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0gICAgbV90aW1lbGluZUFn
ZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSAgICBtX3Jlc291cmNlQWdlbnQtPnNldEZy
b250ZW5kKG1fZnJvbnRlbmQpOwotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IG1fZGVidWdnZXJBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZCk7Ci0gICAgbV9wcm9maWxl
ckFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRpZgotI2lmIEVOQUJMRShEQVRB
QkFTRSkKLSAgICBtX2RhdGFiYXNlQWdlbnQtPnNldEZyb250ZW5kKG1fZnJvbnRlbmQpOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIG1fZG9tU3RvcmFnZUFnZW50LT5zZXRG
cm9udGVuZChtX2Zyb250ZW5kKTsKLSNlbmRpZgotCiAgICAgaWYgKCFtX3Nob3dQYW5lbEFmdGVy
VmlzaWJsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPnNo
b3dQYW5lbChtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZSk7CiAgICAgICAgIG1fc2hvd1BhbmVsQWZ0
ZXJWaXNpYmxlID0gU3RyaW5nKCk7CkBAIC0yNTYsNTIgKzExOSwxNiBAQCB2b2lkIEluc3BlY3Rv
ckFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQp
CiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5kaWRDcmVhdGVXb3JrZXIod29ya2Vy
LT5pZCgpLCB3b3JrZXItPnVybCgpLCB3b3JrZXItPmlzU2hhcmVkV29ya2VyKCkpOwogICAgIH0K
ICNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIG1fd29ya2VyQWdlbnQtPnNldEZyb250
ZW5kKG1fZnJvbnRlbmQpOwotI2VuZGlmCiAKICAgICAvLyBEaXNwYXRjaCBwZW5kaW5nIGZyb250
ZW5kIGNvbW1hbmRzCiAgICAgaXNzdWVFdmFsdWF0ZUZvclRlc3RDb21tYW5kcygpOwogfQogCi12
b2lkIEluc3BlY3RvckFnZW50OjpkaXNjb25uZWN0RnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JB
Z2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBtX2Nhbklzc3VlRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZhbHNl
OwogICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7Ci0KLSAgICAvLyBE
ZXN0cm95aW5nIGFnZW50cyB3b3VsZCBjaGFuZ2UgdGhlIHN0YXRlLCBidXQgd2UgZG9uJ3Qgd2Fu
dCB0aGF0LgotICAgIC8vIFByZS1kaXNjb25uZWN0IHN0YXRlIHdpbGwgYmUgdXNlZCB0byByZXN0
b3JlIGluc3BlY3RvciBhZ2VudHMuCi0gICAgbV9zdGF0ZS0+bXV0ZSgpOwotCiAgICAgbV9mcm9u
dGVuZCA9IDA7Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX2RlYnVn
Z2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2RvbURlYnVnZ2VyQWdlbnQtPmNsZWFy
RnJvbnRlbmQoKTsKLSAgICBtX3Byb2ZpbGVyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwotI2VuZGlmCi0KLSAgICBtX2NvbnNvbGVB
Z2VudC0+Y2xlYXJGcm9udGVuZCgpOwotICAgIG1fZG9tQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsK
LSAgICBtX3RpbWVsaW5lQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX3Jlc291cmNlQWdl
bnQtPmNsZWFyRnJvbnRlbmQoKTsKLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgbV9kYXRhYmFz
ZUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
Ci0gICAgbV9kb21TdG9yYWdlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKLSNlbmRpZgotICAgIG1f
cGFnZUFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgbV93
b3JrZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9y
QWdlbnQ6OmRpZENvbW1pdExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuaAppbmRleCA1MDlhZDcwZmJmYThjNTM4N2Q5NGE0N2IwZGYwNGM1NjE3MGVlOTRlLi5i
YThhN2JiZjRkM2IzMDcwYTFjMzBkZTI1OGRmZjUzYmE2OGJjZDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDY2ICszMCwyMyBA
QAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvckFnZW50X2gKIAot
I2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGFyYWN0ZXJEYXRhOwot
Y2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgSFRUUEhlYWRl
ck1hcDsKLWNsYXNzIEluamVjdGVkU2NyaXB0OworY2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRP
TUFnZW50OwotY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwotY2xhc3MgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7Ci1jbGFzcyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7Ci1jbGFzcyBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50OwotY2xh
c3MgSW5zcGVjdG9yU3RhdGU7Ci1jbGFzcyBJbnNwZWN0b3JTdG9yYWdlQWdlbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci1jbGFzcyBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvcldvcmtlclJlc291cmNlOwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwotY2xhc3Mg
Tm9kZTsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNjcmlwdEFyZ3VtZW50czsK
LWNsYXNzIFNjcmlwdENhbGxTdGFjazsKLWNsYXNzIFNjcmlwdFByb2ZpbGU7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7Ci1jbGFzcyBTdG9yYWdlQXJlYTsKLQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7Ci0jZW5k
aWYKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTk2LDExICs1NCw5IEBAIGNs
YXNzIEluc3BlY3RvckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JB
Z2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVj
dG9yQWdlbnQoUGFnZSosIEluc3BlY3RvckNsaWVudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciop
OworICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0
cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAg
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
LQogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogCiAgICAgYm9vbCBlbmFibGVk
KCkgY29uc3Q7CkBAIC0xMTEsMzggKzY3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbG9hZFBh
Z2UoRXJyb3JTdHJpbmcqLCBib29sIGlnbm9yZUNhY2hlKTsKICAgICB2b2lkIHNob3dDb25zb2xl
KCk7CiAKLSAgICB2b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3Ry
aW5nJiBpbnNwZWN0b3JDb29raWUpOwotCiAgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJvbnRlbmQ7IH0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAg
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKTsgfQotCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KCkgeyByZXR1cm4gbV9jb25zb2xlQWdlbnQuZ2V0
KCk7IH0KLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQoKSB7IHJldHVybiBtX2Nzc0Fn
ZW50LmdldCgpOyB9Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KCkgeyByZXR1cm4g
bV9kb21BZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogcnVudGltZUFn
ZW50KCkgeyByZXR1cm4gbV9ydW50aW1lQWdlbnQuZ2V0KCk7IH0KLSAgICBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgp
OyB9Ci0gICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCgpIHsgcmV0dXJu
IG1fcmVzb3VyY2VBZ2VudC5nZXQoKTsgfQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50KCkgeyByZXR1cm4gbV9kYXRhYmFzZUFn
ZW50LmdldCgpOyB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSB7IHJldHVybiBtX2RvbVN0b3Jh
Z2VBZ2VudC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9tRGVidWdnZXJBZ2VudC5nZXQoKTsgfQotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQWdlbnQu
Z2V0KCk7IH0KLSAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9maWxlckFnZW50LmdldCgpOyB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hl
QWdlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIEluc3BlY3Rv
cldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCgpIHsgcmV0dXJuIG1fd29ya2VyQWdlbnQuZ2V0KCk7
IH0KLSNlbmRpZgorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZvaWQgcmVzdG9yZSgp
OworCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50czsgfQogCiAgICAgdm9pZCBkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKIApAQCAtMTY5LDgg
Kzk5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JFeHRlbnNpb25BUEkoY29u
c3QgU3RyaW5nJiBzb3VyY2UpOwogCi0gICAgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKCkgeyByZXR1
cm4gbV9zdGF0ZS5nZXQoKTsgfQotCiAgICAgLy8gSW5zcGVjdG9yQWdlbnQgQVBJCiAgICAgdm9p
ZCBnZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOwogICAg
IHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoYm9vbCBlbmFibGVkLCBib29sKiBuZXdTdGF0
ZSk7CkBAIC0xODcsNDYgKzExNSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNzdWVFdmFsdWF0
ZUZvclRlc3RDb21tYW5kcygpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwotICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRl
bmQ7Ci0gICAgT3duUHRyPEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50
czsKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBPd25Q
dHI8SW5zcGVjdG9yU3RhdGU+IG1fc3RhdGU7Ci0gICAgT3duUHRyPEluc3BlY3RvclBhZ2VBZ2Vu
dD4gbV9wYWdlQWdlbnQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBtX2RvbUFnZW50
OwotICAgIE93blB0cjxJbnNwZWN0b3JDU1NBZ2VudD4gbV9jc3NBZ2VudDsKLQotI2lmIEVOQUJM
RShEQVRBQkFTRSkKLSAgICBPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4gbV9kYXRhYmFz
ZUFnZW50OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgT3duUHRyPElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gbV9kb21TdG9yYWdlQWdlbnQ7Ci0jZW5kaWYKLQotICAg
IE93blB0cjxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiBtX3RpbWVsaW5lQWdlbnQ7Ci0KLSNpZiBF
TkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIE93blB0cjxJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ+IG1fYXBwbGljYXRpb25DYWNoZUFnZW50OwotI2VuZGlmCi0KLSAg
ICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OwotICAgIE93
blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IG1fcnVudGltZUFnZW50OwotCi0gICAgT3duUHRy
PEluc3BlY3RvckNvbnNvbGVBZ2VudD4gbV9jb25zb2xlQWdlbnQ7CiAKICAgICBWZWN0b3I8cGFp
cjxsb25nLCBTdHJpbmc+ID4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgU3Ry
aW5nIG1fc2hvd1BhbmVsQWZ0ZXJWaXNpYmxlOwogICAgIFN0cmluZyBtX2luc3BlY3RvckV4dGVu
c2lvbkFQSTsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBPd25QdHI8SW5z
cGVjdG9yRGVidWdnZXJBZ2VudD4gbV9kZWJ1Z2dlckFnZW50OwotICAgIE93blB0cjxJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50PiBtX2RvbURlYnVnZ2VyQWdlbnQ7Ci0gICAgT3duUHRyPEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ+IG1fcHJvZmlsZXJBZ2VudDsKLSNlbmRpZgogI2lmIEVOQUJMRShX
T1JLRVJTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgUmVmUHRyPEluc3BlY3Rvcldv
cmtlclJlc291cmNlPiA+IFdvcmtlcnNNYXA7CiAgICAgV29ya2Vyc01hcCBtX3dvcmtlcnM7Ci0g
ICAgT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBtX3dvcmtlckFnZW50OwogI2VuZGlmCiAg
ICAgYm9vbCBtX2Nhbklzc3VlRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNWYy
M2M1YTE3ZjE5NzVlZjM3YjJmNWFjYjdhMjEyMGQ2Yjc1M2I2YS4uNWVlNjIxMTdiMTM5YmRkNWY2
NTBiZTU3Yjc1YTUzZDcwZGEzNjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzgsMTYgKzM4LDI4IEBACiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUnVudGltZUFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIKKyNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKQEAgLTU1LDE3ICs2Nyw4MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFBhZ2VSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
UnVudGltZUFnZW50IHsKK3B1YmxpYzoKKyAgICBQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlKQorICAgICAgICA6
IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgICAgICwg
bV9pbnNwZWN0ZWRQYWdlKHBhZ2UpIHsgfQorICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQo
KSB7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFNjcmlwdFN0YXRlKiBnZXREZWZhdWx0SW5z
cGVjdGVkU3RhdGUoKSB7IHJldHVybiBtYWluV29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RlZFBh
Z2UtPm1haW5GcmFtZSgpKTsgfQorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKK307CisKK30K
KwogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKLSAgICA6IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yUGFnZSgpKQotICAgICwgbV9p
bnNwZWN0b3JBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQWdlbnQocGFnZSwgaW5zcGVjdG9y
Q2xpZW50LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpKQorICAgIDogbV9pbnN0cnVt
ZW50aW5nQWdlbnRzKGFkb3B0UHRyKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpKQorICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQ
YWdlKCkpCisgICAgLCBtX3N0YXRlKGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JTdGF0ZShpbnNwZWN0
b3JDbGllbnQpKSkKKyAgICAsIG1faW5zcGVjdG9yQWdlbnQoYWRvcHRQdHIobmV3IEluc3BlY3Rv
ckFnZW50KHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCkpKSkKKyAgICAsIG1fcGFnZUFnZW50KEluc3BlY3RvclBhZ2VBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCkpKQorICAgICwgbV9kb21BZ2VudChJbnNwZWN0b3JET01BZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIGluc3Bl
Y3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkp
KQorICAgICwgbV9jc3NBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ1NTQWdlbnQobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkpCisjaWYgRU5BQkxFKERB
VEFCQVNFKQorICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNy
ZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQorI2VuZGlm
CisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgICwgbV9kb21TdG9yYWdlQWdlbnQoSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBt
X3N0YXRlLmdldCgpKSkKKyNlbmRpZgorICAgICwgbV90aW1lbGluZUFnZW50KEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUu
Z2V0KCkpKQorI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgLCBtX2Fw
cGxpY2F0aW9uQ2FjaGVBZ2VudChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSkpKQorI2VuZGlmCisgICAg
LCBtX3Jlc291cmNlQWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQor
ICAgICwgbV9ydW50aW1lQWdlbnQoYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQobV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2UpKSkKKyAgICAsIG1fY29uc29sZUFnZW50KGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX2luc3BlY3RvckFnZW50LmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSkpKQorI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQorICAgICwgbV9kZWJ1Z2dlckFnZW50KFBhZ2VEZWJ1Z2dlckFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpCisgICAgLCBtX2RvbURlYnVnZ2VyQWdlbnQo
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSwgbV9kZWJ1Z2dlckFnZW50Lmdl
dCgpLCBtX2luc3BlY3RvckFnZW50LmdldCgpKSkKKyAgICAsIG1fcHJvZmlsZXJBZ2VudChJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBt
X2NvbnNvbGVBZ2VudC5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCisjZW5kaWYKKyNpZiBF
TkFCTEUoV09SS0VSUykKKyAgICAsIG1fd29ya2VyQWdlbnQoSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQorI2VuZGlmCiAgICAgLCBtX2lu
c3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9udGVuZChm
YWxzZSkKICAgICAsIG1fc3RhcnRVc2VySW5pdGlhdGVkRGVidWdnaW5nV2hlbkZyb250ZWRJc0Nv
bm5lY3RlZChmYWxzZSkKIHsKKyAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVj
dG9yQ2xpZW50KTsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRI
b3N0KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudC5nZXQoKQorICAgICAgICAsIG1fY29uc29sZUFn
ZW50LmdldCgpCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgICAgICAsIG1fZGF0YWJhc2VBZ2Vu
dC5nZXQoKQorI2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgICAgICAsIG1fZG9t
U3RvcmFnZUFnZW50LmdldCgpCisjZW5kaWYKKyAgICApOwogfQogCiBJbnNwZWN0b3JDb250cm9s
bGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiB7CisgICAgQVNTRVJUKCFtX2luc3BlY3RvckNs
aWVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ry
b3llZCgpCit7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCisgICAgbV9kb21EZWJ1Z2dlckFnZW50LmNsZWFyKCk7CisgICAgbV9kZWJ1
Z2dlckFnZW50LmNsZWFyKCk7CisjZW5kaWYKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
ZGlzY29ubmVjdCgpOworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQo
KTsKKyAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9u
dGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCkBAIC05MiwxMyArMTY5LDEzIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0
VGltZWxpbmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9pbnNw
ZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdGFydCgmZXJyb3IpOworICAgIG1fdGltZWxp
bmVBZ2VudC0+c3RhcnQoJmVycm9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dG9wVGltZWxpbmVQcm9maWxlcigpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9p
bnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdG9wKCZlcnJvcik7CisgICAgbV90aW1l
bGluZUFnZW50LT5zdG9wKCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKCkKQEAgLTEwNiw2ICsxODMsMzAgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3BlbmluZ0Zyb250ZW5kID0gZmFsc2U7
CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZChtX2luc3BlY3RvckNsaWVudCkpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEhvc3QoKS0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7
CisgICAgLy8gV2UgY2FuIHJlY29ubmVjdCB0byBleGlzdGluZyBmcm9udC1lbmQgLT4gdW5tdXRl
IHN0YXRlLgorICAgIG1fc3RhdGUtPnVubXV0ZSgpOworCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+c2V0RnJvbnRlbmQo
bV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYKKyAgICBtX3BhZ2VBZ2VudC0+c2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9kb21BZ2VudC0+c2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9jb25zb2xlQWdlbnQt
PnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdGltZWxpbmVB
Z2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisgICAgbV9yZXNv
dXJjZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEZyb250
ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fcHJvZmlsZXJBZ2VudC0+c2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
REFUQUJBU0UpCisgICAgbV9kYXRhYmFzZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZy
b250ZW5kLmdldCgpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAgICBtX2Rv
bVN0b3JhZ2VBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBtX3dvcmtlckFnZW50LT5zZXRGcm9udGVu
ZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKKyNlbmRpZgogICAgIG1faW5zcGVjdG9yQWdl
bnQtPnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOwogCiAgICAgaWYgKCFJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQpAQCAtMTE2LDMyICsyMTcs
MzIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIoCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LAogI2lmIEVOQUJMRShPRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCgpLAorICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXQoKSwK
ICNlbmRpZgotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5jc3NBZ2VudCgpLAotICAgICAgICBt
X2luc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKSwKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2Vu
dC0+ZG9tQWdlbnQoKSwKKyAgICAgICAgbV9jc3NBZ2VudC5nZXQoKSwKKyAgICAgICAgbV9jb25z
b2xlQWdlbnQuZ2V0KCksCisgICAgICAgIG1fZG9tQWdlbnQuZ2V0KCksCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRvbURlYnVnZ2Vy
QWdlbnQoKSwKKyAgICAgICAgbV9kb21EZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlmCiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5kb21TdG9yYWdl
QWdlbnQoKSwKKyAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQuZ2V0KCksCiAjZW5kaWYKICNpZiBF
TkFCTEUoREFUQUJBU0UpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRhdGFiYXNlQWdlbnQo
KSwKKyAgICAgICAgbV9kYXRhYmFzZUFnZW50LmdldCgpLAogI2VuZGlmCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdl
bnQoKSwKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlmCi0gICAgICAgIG1f
aW5zcGVjdG9yQWdlbnQtPnJlc291cmNlQWdlbnQoKSwKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2Vu
dC0+cGFnZUFnZW50KCksCisgICAgICAgIG1fcmVzb3VyY2VBZ2VudC5nZXQoKSwKKyAgICAgICAg
bV9wYWdlQWdlbnQuZ2V0KCksCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSwKKyAgICAgICAgbV9wcm9maWxl
ckFnZW50LmdldCgpLAogI2VuZGlmCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPnJ1bnRpbWVB
Z2VudCgpLAotICAgICAgICBtX2luc3BlY3RvckFnZW50LT50aW1lbGluZUFnZW50KCkKKyAgICAg
ICAgbV9ydW50aW1lQWdlbnQuZ2V0KCksCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC5nZXQoKQog
I2lmIEVOQUJMRShXT1JLRVJTKQotICAgICAgICAsIG1faW5zcGVjdG9yQWdlbnQtPndvcmtlckFn
ZW50KCkKKyAgICAgICAgLCBtX3dvcmtlckFnZW50LmdldCgpCiAjZW5kaWYKICAgICApKTsKIApA
QCAtMTU3LDcgKzI1OCwzMyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CiAKLSAgICBtX2luc3BlY3RvckFnZW50LT5kaXNjb25uZWN0RnJvbnRlbmQo
KTsKKyAgICAvLyBEZXN0cm95aW5nIGFnZW50cyB3b3VsZCBjaGFuZ2UgdGhlIHN0YXRlLCBidXQg
d2UgZG9uJ3Qgd2FudCB0aGF0LgorICAgIC8vIFByZS1kaXNjb25uZWN0IHN0YXRlIHdpbGwgYmUg
dXNlZCB0byByZXN0b3JlIGluc3BlY3RvciBhZ2VudHMuCisgICAgbV9zdGF0ZS0+bXV0ZSgpOwor
CisgICAgbV9pbnNwZWN0b3JBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwor
ICAgIG1fZG9tRGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworICAgIG1fcHJvZmlsZXJB
Z2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2VuZGlmCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgp
OworI2VuZGlmCisgICAgbV9jb25zb2xlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2Rv
bUFnZW50LT5jbGVhckZyb250ZW5kKCk7CisgICAgbV90aW1lbGluZUFnZW50LT5jbGVhckZyb250
ZW5kKCk7CisgICAgbV9yZXNvdXJjZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CisjaWYgRU5BQkxF
KERBVEFCQVNFKQorICAgIG1fZGF0YWJhc2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2VuZGlm
CisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgIG1fZG9tU3RvcmFnZUFnZW50LT5jbGVhckZy
b250ZW5kKCk7CisjZW5kaWYKKyAgICBtX3BhZ2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2lm
IEVOQUJMRShXT1JLRVJTKQorICAgIG1fd29ya2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyNl
bmRpZgogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+
Y2xlYXJGcm9udGVuZCgpOwogCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC5jbGVhcigpOwpAQCAt
MTk1LDcgKzMyMiwyMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0
b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0bwogewogICAgIEFTU0VSVCgh
bV9pbnNwZWN0b3JGcm9udGVuZCk7CiAgICAgY29ubmVjdEZyb250ZW5kKCk7Ci0gICAgbV9pbnNw
ZWN0b3JBZ2VudC0+cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShpbnNwZWN0b3JTdGF0
ZUNvb2tpZSk7CisgICAgbV9zdGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVjdG9yU3RhdGVDb29r
aWUpOworCisgICAgbV9kb21BZ2VudC0+cmVzdG9yZSgpOworICAgIG1fcmVzb3VyY2VBZ2VudC0+
cmVzdG9yZSgpOworICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzdG9yZSgpOworI2lmIEVOQUJMRShE
QVRBQkFTRSkKKyAgICBtX2RhdGFiYXNlQWdlbnQtPnJlc3RvcmUoKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShET01fU1RPUkFHRSkKKyAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+cmVzdG9yZSgpOworI2Vu
ZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbV9kZWJ1Z2dlckFnZW50
LT5yZXN0b3JlKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5yZXN0b3JlKCk7CisjZW5kaWYKKyAg
ICBtX2luc3BlY3RvckFnZW50LT5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpCkBAIC0yMDUsNyArMzQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpl
dmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHMKIAog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+
ZHJhd05vZGVIaWdobGlnaHQoY29udGV4dCk7CisgICAgbV9kb21BZ2VudC0+ZHJhd05vZGVIaWdo
bGlnaHQoY29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd0NvbnNv
bGUoKQpAQCAtMjIzLDcgKzM2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dChOb2RlKiBub2RlKQogCiAgICAgc2hvdygpOwogCi0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9t
QWdlbnQoKS0+aW5zcGVjdChub2RlKTsKKyAgICBtX2RvbUFnZW50LT5pbnNwZWN0KG5vZGUpOwog
fQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZWQoKSBjb25zdApAQCAtMjM4LDcg
KzM4MCw3IEBAIFBhZ2UqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2UoKSBjb25z
dAogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OnRpbWVsaW5lUHJvZmlsZXJFbmFibGVkKCkK
IHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+dGltZWxpbmVBZ2VudCgpLT5zdGFydGVk
KCk7CisgICAgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC0+c3RhcnRlZCgpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBTdHJpbmcm
IHNvdXJjZSkKQEAgLTI1NSwzNSArMzk3LDM1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiB7CiAgICAgRXJyb3JTdHJpbmcg
ZXJyb3I7Ci0gICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlkZUhpZ2hsaWdodCgm
ZXJyb3IpOworICAgIG1fZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQoJmVycm9yKTsKIH0KIAogTm9k
ZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKS0+aGlnaGxpZ2h0ZWROb2RlKCk7Cisg
ICAgcmV0dXJuIG1fZG9tQWdlbnQtPmhpZ2hsaWdodGVkTm9kZSgpOwogfQogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZVBy
b2ZpbGVyKCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2luc3BlY3RvckFnZW50
LT5wcm9maWxlckFnZW50KCktPmVuYWJsZSgmZXJyb3IpOworICAgIG1fcHJvZmlsZXJBZ2VudC0+
ZW5hYmxlKCZlcnJvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVBy
b2ZpbGVyKCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICBtX2luc3BlY3RvckFnZW50
LT5wcm9maWxlckFnZW50KCktPmRpc2FibGUoJmVycm9yKTsKKyAgICBtX3Byb2ZpbGVyQWdlbnQt
PmRpc2FibGUoJmVycm9yKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxl
ckVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50
KCktPmVuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9wcm9maWxlckFnZW50LT5lbmFibGVkKCk7CiB9
CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVidWdnZXJFbmFibGVkKCkKIHsKLSAgICBy
ZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2VudCgpLT5lbmFibGVkKCk7CisgICAg
cmV0dXJuIG1fZGVidWdnZXJBZ2VudC0+ZW5hYmxlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dlcigpCkBAIC0zMDAsMTIgKzQ0MiwxMiBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dBbmRFbmFibGVEZWJ1Z2dlcigpCiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKCkKIHsKLSAgICBtX2luc3BlY3Rv
ckFnZW50LT5kZWJ1Z2dlckFnZW50KCktPmRpc2FibGUoKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQt
PmRpc2FibGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0
aWF0ZWRQcm9maWxpbmcoKQogewotICAgIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQo
KS0+c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5z
dGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCkBAIC0zMTMsMjAgKzQ1NSwyMCBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAg
ICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNob3coKTsKLSAgICBtX2lu
c3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCktPnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5n
KCk7CisgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpOwog
ICAgIG1faW5zcGVjdG9yQWdlbnQtPnNob3dQcm9maWxlc1BhbmVsKCk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKS0+aXNSZWNv
cmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOworICAgIHJldHVybiBtX3Byb2ZpbGVyQWdlbnQt
PmlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXN1bWUoKQogewotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gbV9pbnNwZWN0b3JBZ2VudC0+ZGVidWdnZXJBZ2VudCgpKSB7CisgICAg
aWYgKG1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAg
ICAgZGVidWdnZXJBZ2VudC0+cmVzdW1lKCZlcnJvcik7CisgICAgICAgIG1fZGVidWdnZXJBZ2Vu
dC0+cmVzdW1lKCZlcnJvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiOTczNzNlMWQ5NzIxMDk4MTlmYjQ0Mzk1
MzFkY2Y1ZDA2MjUxYzBlLi4wZTBmMGQ2OGQ3OGU1NmJjNmU5MzJlZjgwNDc3NmE5ZGMyMGE3NGRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTQzLDEwICs0MywyNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OworY2xh
c3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNs
aWVudDsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRPTUFn
ZW50OworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKK2NsYXNzIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OworY2xh
c3MgSW5zcGVjdG9yUnVudGltZUFnZW50OworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJ
bnNwZWN0b3JTdG9yYWdlQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OworY2xh
c3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgUGFnZTsKIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIGNs
YXNzIE5vZGU7CkBAIC01Nyw2ICs3NCw3IEBAIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgewog
cHVibGljOgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIEluc3BlY3RvckNsaWVudCop
OwogICAgIH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgdm9pZCBpbnNwZWN0ZWRQYWdlRGVz
dHJveWVkKCk7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICBQYWdlKiBpbnNwZWN0
ZWRQYWdlKCkgY29uc3Q7CkBAIC0xMDQsOCArMTIyLDM2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIAor
ICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAg
ICAgT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CisgICAgT3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwogICAgIE93blB0cjxJbnNwZWN0
b3JBZ2VudD4gbV9pbnNwZWN0b3JBZ2VudDsKKworICAgIE93blB0cjxJbnNwZWN0b3JQYWdlQWdl
bnQ+IG1fcGFnZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2VudD4gbV9kb21BZ2Vu
dDsKKyAgICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7CisjaWYgRU5BQkxF
KERBVEFCQVNFKQorICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBtX2RhdGFiYXNl
QWdlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgT3duUHRyPEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudD4gbV9kb21TdG9yYWdlQWdlbnQ7CisjZW5kaWYKKyAgICBPd25Q
dHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFnZW50OworI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CisjZW5kaWYKKyAgICBSZWZQdHI8
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OworICAgIE93blB0cjxJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ+IG1fcnVudGltZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JD
b25zb2xlQWdlbnQ+IG1fY29uc29sZUFnZW50OworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQorICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBtX2RlYnVnZ2VyQWdlbnQ7
CisgICAgT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IG1fZG9tRGVidWdnZXJBZ2Vu
dDsKKyAgICBPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFnZW50Owor
I2VuZGlmCisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgT3duUHRyPEluc3BlY3RvcldvcmtlckFn
ZW50PiBtX3dvcmtlckFnZW50OworI2VuZGlmCisKICAgICBPd25QdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgT3duUHRyPElu
c3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIE93
blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5k
ZXggMmFlOTk3MmY1Nzg0NzgwNTliZGJiNzAwN2Q2ZjU5OWRiZDIwY2U5Ny4uYzEyY2EwZGRhZDgy
NGFkY2Q1ODViNjhhNjRhZTZlMjM3MDNjMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBs
KEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
LCBOb2RlKiBub2RlKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9y
RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9kZSk7CiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGlu
Z0FnZW50cygpLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCkBAIC0xMzYsNyArMTM2LDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBsKElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2UKICAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdl
bnRzKCktPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJB
Z2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKICNlbmRpZgotICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRp
bmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJl
bW92ZURPTU5vZGUobm9kZSk7CiB9CiAKQEAgLTE1MCwxMyArMTUwLDEzIEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlE
T01BdHRySW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckFn
ZW50LT5kb21BZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JET01BZ2VudCgp
KQogICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRvbUFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0
cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckRPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50
LT5kaWRJbnZhbGlkYXRlU3R5bGVBdHRyKG5vZGUpOwogfQogCkBAIC0xNzUsNyArMTc1LDcgQEAg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2UKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogewotICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKKyAgICBpZiAoSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdB
Z2VudHMoKS0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3Rl
ckRhdGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIApAQCAtNDU5LDcgKzQ1OSw4IEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUlt
cGwoY29uc3QgSW5zcGVjdG9ySW5zCiAgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudCA9IGluc3BlY3RvckFnZW50Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgpKSkgewogICAgICAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVz
b3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgICAgICByZXNvdXJjZUFnZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7Ci0gICAgICAg
IGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50
aWZpZXIsIHJlc3BvbnNlKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3Rp
ZmljYXRpb24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KKyAgICAgICAgaWYgKEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRp
bmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgICAgICBjb25zb2xl
QWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7IC8vIFRoaXMg
c2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVz
IG9uIHRoaXMuCiAgICAgfQogfQogCkBAIC01MDQsMTIgKzUwNSwxNCBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudAogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3Vy
Y2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQq
IHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQog
ICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7
Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5kaWRGYWlsTG9hZGluZyhpZGVu
dGlmaWVyLCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZp
Y2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCisgICAgaWYgKEluc3BlY3RvckNvbnNv
bGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlk
RmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVS
IHJlc291cmNlIG5vdGlmaWNhdGlvbiwgZnJvbnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQogewotICAg
IGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOworICAgIGlmIChJbnNwZWN0
b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50
aW5nQWdlbnRzKCktPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQorICAgICAgICBjb25zb2xlQWdl
bnQtPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRM
aW5lTnVtYmVyKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2Vu
dCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291
cmNlQWdlbnQtPnNldEluaXRpYWxYSFJDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7
CiB9CkBAIC02MjcsMjcgKzYzMCwzMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25DbwogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5h
ZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50
cywgY2FsbFN0YWNrKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdl
bnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDb25z
b2xlQWdlbnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHNv
dXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQogewotICAgIGluc3Bl
Y3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgaWYgKEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1l
bnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlQ291bnRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IHN0YWNrKQogewotICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+Y291bnQo
YXJndW1lbnRzLCBzdGFjayk7CisgICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29s
ZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9y
Q29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+Y291bnQoYXJndW1lbnRzLCBz
dGFjayk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVU
aW1pbmdJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKIHsKLSAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPnN0YXJ0VGltaW5n
KHRpdGxlKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JDb25zb2xlQWdl
bnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5zdGFydFRpbWluZyh0aXRsZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gc3RhY2spCiB7Ci0gICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVB
Z2VudCgpLT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7CisgICAgaWYgKEluc3BlY3RvckNvbnNv
bGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCisgICAgICAgIGNvbnNvbGVBZ2VudC0+c3Rv
cFRpbWluZyh0aXRsZSwgc3RhY2spOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZU1hcmtUaW1lbGluZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
LCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQpAQCAtNjYyLDEzICs2NzAs
MTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmVJ
bXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3IKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01l
c3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCiB7Ci0gICAgaWYgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+cHJvZmlsZXJBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JQcm9maWxl
ckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2Vu
dHMoKS0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQogICAgICAgICBwcm9maWxlckFnZW50LT5h
ZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlSW1w
bChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBw
cm9maWxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGlm
IChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
PnByb2ZpbGVyQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9m
aWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVj
dG9yUHJvZmlsZXJBZ2VudCgpKSB7CiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFz
dENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFBy
b2ZpbGUocHJvZmlsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNl
VVJMKCkpOwogICAgIH0KQEAgLTY3NiwxNCArNjg0LDE2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQs
IFJlCiAKIFN0cmluZyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgYm9v
bCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQogewotICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFn
ZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPnByb2ZpbGVyQWdlbnQoKSkKKyAg
ICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckFn
ZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKSkKICAg
ICAgICAgcmV0dXJuIHByb2ZpbGVyQWdlbnQtPmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUoaW5jcmVtZW50UHJvZmlsZU51bWJlcik7CiAgICAgcmV0dXJuICIiOwogfQogCiBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJFbmFibGVkSW1wbChJbnNwZWN0b3JB
Z2VudCogaW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgcmV0dXJuIGluc3BlY3RvckFnZW50LT5pbnN0
cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKS0+ZW5hYmxlZCgpOwor
ICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9y
QWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQor
ICAgICAgICByZXR1cm4gcHJvZmlsZXJBZ2VudC0+ZW5hYmxlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KICNlbmRpZgogCkBAIC03ODMsNyArNzkzLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKEluc3BlY3RvckFnZW50KiBpbnNw
ZWMKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9uTmF0aXZlRXZl
bnQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewogI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFn
ZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50
aW5nQWdlbnRzKCktPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZGVidWdnZXJB
Z2VudC0+Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggODYwNzExMjg0NzhkNWVjNTM2ZTgwMTA1NDBmZTFkMGQ3ZWE3NDE4ZC4uMTM0
ZTAxNzc5NjcxYjg3ZWRlZjljYmIzOWNhZDhlMTkzYjllOTZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0yMDQsNiArMjA0LDkgQEAgUGFnZTo6flBhZ2UoKQogICAgIG1fZWRpdG9yQ2xpZW50LT5w
YWdlRGVzdHJveWVkKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3Rl
ZFBhZ2VEZXN0cm95ZWQodGhpcyk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKKyNlbmRpZgogCiAgICAg
YmFja0ZvcndhcmQoKS0+Y2xvc2UoKTsKIAo=
</data>
<flag name="review"
          id="85985"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>