<?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>46614</bug_id>
          
          <creation_ts>2010-09-27 03:12:30 -0700</creation_ts>
          <short_desc>Web Inspector: extract Inspector Instrumentation API as a class.</short_desc>
          <delta_ts>2010-10-05 06:41:24 -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>
          <dependson>46611</dependson>
    
    <dependson>46820</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285387</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 03:12:30 -0700</bug_when>
    <thetext>There is a lot of places where we push information from WebCore to Inspector.
When we doing that we use Timeline agent, Debugger agent, InspectorController etc.
In some cases we need to have an instrumentation for Debugger agent and Timeline agent in the same place.
As example for XHR breakpoints.

I&apos;d be great to extract an Inspector Instrumentation API which hide internal Inspector things from the rest of WebCore code. 

In this case we will have:
1) InspectorInstrumentation class as an API for WebCore;
2) inspector agents with business logic for different inspector&apos;s activities;
3) InspectorBackendDispatcher class as the api for front-end;
4) InspectorController as the controller for all Inspector stuff.

We already have last three things and want to have the first one.

I&apos;ve plan to make next patches:
1) split Timeline Agent implementation. The first part will be used as a base for InspectorInstrumentation class in the following patches, the second is InspectorTimeline agent itself.
2) extract API part of InspectorTimeline agent into separate file and rename it to InspectorInstrumentation. A lot of places in WebCore will be fixed too.
3) move current implementation of DOM breakpoints in WebCore under control of InspectorInstrumentation.
4) move other things under control of InspectorInstrumentation too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286814</commentid>
    <comment_count>1</comment_count>
      <attachid>69183</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 06:05:58 -0700</bug_when>
    <thetext>Created attachment 69183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286815</commentid>
    <comment_count>2</comment_count>
      <attachid>69184</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 06:07:27 -0700</bug_when>
    <thetext>Created attachment 69184
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286818</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-29 06:15:30 -0700</bug_when>
    <thetext>Attachment 69184 did not build on qt:
Build output: http://queues.webkit.org/results/4216011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286821</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-29 06:19:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 69184 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/4216011

You missed to add the new source and header to 
SOURCES and HEADERS variable of WebCore/WebCore.pro:
inspector/InspectorInstrumentationAgent.cpp
inspector/InspectorInstrumentationAgent.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286824</commentid>
    <comment_count>5</comment_count>
      <attachid>69184</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-29 06:22:11 -0700</bug_when>
    <thetext>Comment on attachment 69184
Patch.

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

&gt; WebCore/CMakeLists.txt:1109
&gt; +    inspector/InspectorInstrumentationAgent.cpp

InspectorInstrumentation

&gt; WebCore/inspector/InspectorInstrumentationAgent.h:60
&gt; +    static bool hasFrontends() { return s_frontendCounter; }

inline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286825</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-29 06:24:42 -0700</bug_when>
    <thetext>Attachment 69184 did not build on chromium:
Build output: http://queues.webkit.org/results/4193006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286834</commentid>
    <comment_count>7</comment_count>
      <attachid>69187</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 06:48:38 -0700</bug_when>
    <thetext>Created attachment 69187
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286835</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 06:49:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Attachment 69184 [details] [details] did not build on qt:
&gt; &gt; Build output: http://queues.webkit.org/results/4216011
&gt; 
&gt; You missed to add the new source and header to 
&gt; SOURCES and HEADERS variable of WebCore/WebCore.pro:
&gt; inspector/InspectorInstrumentationAgent.cpp
&gt; inspector/InspectorInstrumentationAgent.h

Thanks, Csaba!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286841</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-29 06:53:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=69187) [details]
&gt; Patch.

Didn&apos;t you want to mark this patch with r? flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286844</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 06:57:37 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; Created an attachment (id=69187) [details] [details]
&gt; &gt; Patch.
&gt; 
&gt; Didn&apos;t you want to mark this patch with r? flag?

Nope, I just want to make sure builds are green and commit, since I have r+ already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286846</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-29 07:01:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Nope, I just want to make sure builds are green and commit, since I have r+ already.

EWS bots build only r? marked patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286865</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-29 07:40:16 -0700</bug_when>
    <thetext>Attachment 69187 did not build on chromium:
Build output: http://queues.webkit.org/results/4192010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286874</commentid>
    <comment_count>13</comment_count>
      <attachid>69197</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 07:53:52 -0700</bug_when>
    <thetext>Created attachment 69197
Fix linux build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286878</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-29 08:05:11 -0700</bug_when>
    <thetext>Attachment 69197 did not build on qt:
Build output: http://queues.webkit.org/results/4155011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286896</commentid>
    <comment_count>15</comment_count>
      <attachid>69200</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 08:35:35 -0700</bug_when>
    <thetext>Created attachment 69200
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286899</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 08:44:39 -0700</bug_when>
    <thetext>Attachment 69197 did not build on mac:
Build output: http://queues.webkit.org/results/4198006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286901</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-29 09:03:07 -0700</bug_when>
    <thetext>Attachment 69197 did not build on chromium:
Build output: http://queues.webkit.org/results/4172008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286975</commentid>
    <comment_count>18</comment_count>
      <attachid>69216</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-29 10:45:59 -0700</bug_when>
    <thetext>Created attachment 69216
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287461</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-30 03:09:55 -0700</bug_when>
    <thetext>Committed in r68767.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287466</commentid>
    <comment_count>20</comment_count>
      <attachid>69184</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-30 03:21:04 -0700</bug_when>
    <thetext>Comment on attachment 69184
Patch.

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 69184 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287467</commentid>
    <comment_count>21</comment_count>
      <attachid>69200</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-30 03:21:12 -0700</bug_when>
    <thetext>Comment on attachment 69200
Patch.

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 69200 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287580</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-30 09:22:49 -0700</bug_when>
    <thetext>Patch landed in r68767, so the bug is resolved/fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289562</commentid>
    <comment_count>23</comment_count>
      <attachid>69775</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-05 06:36:54 -0700</bug_when>
    <thetext>Created attachment 69775
Patch.

Remove references to InspectorTimelineAgent from webcore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69183</attachid>
            <date>2010-09-29 06:05:58 -0700</date>
            <delta_ts>2010-09-29 06:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46614-20100929170556.patch</filename>
            <type>text/plain</type>
            <size>37846</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5YTA0ZDU3NDA1NGI2NWJjMzMyMTQ1YTE1YmIzYjIyNTNmM2RkMGYuLjQ4Y2Zh
YWRmODQyMTdlYjYzNDQxMTJlZWNiOWRhY2U4MTQ3YTgyMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEwNiw2ICsx
MTA2LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOTg1YjVjZWFh
MTk0NjVhMDY2YjMyY2I4OWJmNTdmOWUwNDBmMWFkZC4uODRmYjlkYjI4MDdhNWQzMjg5MWUwMjQ5
MDIyZDMwYTE3ODE2NmJhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNzk5LDYgKzE3OTksOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAJ
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAorCVdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmNwcCBcCisJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMmIyYzkyYzM5N2RkNjYwODE0OTc5NmIyMzk5ZmI3YzZlZTRmYTcxYS4u
YTNiMTMzM2E2MTNmZjQxYjA5MWQ5NDRiY2FlODUxYTNhN2FjYjE5NSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4OTcsNiAr
MTg5Nyw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLAorICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTA0NDU1MzExOGZmMTU0ODQwMzViNmY2YmJhMTg5
MTk5NzlhMmJjLi5lNTExNTE2Yjg2NDEwYzZmZTNhYzRlMmU4OGIzYmVjZjk5NGFiMTVjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjMwLDYgKzYzMCw4
IEBACiAJCTFDRjZCRTE1MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNkJF
MTMwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi87IH07CiAJ
CTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGQUUzMjIwQTZENkEzRjAwMzI1
OTNEIC8qIGxpYm9iamMuZHlsaWIgKi87IH07CiAJCTIwMEIxOTA5MTFDMjc3RDkwMERDQ0QzQSAv
KiBTY3JpcHRCcmVha3BvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDIwMEIxOTA4MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50
LmNwcCAqLzsgfTsKKwkJMjBENjI5MjYxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25BZ2VudC5jcHAgKi87IH07CisJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkFnZW50LmggKi87IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAv
KiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNEY1NEVB
QzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUExMDFGRTkxNDAwMEFF
NzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCAqLzsgfTsKIAkJMjRGNTRFQUQxMDFGRTkx
NDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBw
bGljYXRpb25DYWNoZUhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9
OwpAQCAtNjU2Miw2ICs2NTY0LDggQEAKIAkJMUNGNkJFMTMwRTlCQjQ2NzAwMjVFMUNEIC8qIE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMjAwQjE5MDgxMUMyNzdEOTAwRENDRDNB
IC8qIFNjcmlwdEJyZWFrcG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0QnJlYWtwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25BZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25B
Z2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEwRDgyNTAwMDA5
RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNDQy
QkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hDaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMDUsNiArMTIw
MDksOCBAQAogCQkJCTdBMEU3NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwICovLAogCQkJCTdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCAqLywKIAkJCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmlkbCAqLywKKwkJCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwICovLAorCQkJCTIwRDYyOTI1MTI1MzY5
MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oICovLAogCQkJCTlG
MEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLywK
IAkJCQk5RjBENkIyRDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5o
ICovLAogCQkJCTQxRjA2MjAwMEY1RjBCNjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JSZXNvdXJjZS5j
cHAgKi8sCkBAIC0yMDc5OCw2ICsyMDgwNCw3IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5
QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0
RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQky
MEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjMzMTEsNiArMjMzMTgsNyBAQAogCQkJCTkzRjE5QjA1MDgy
NDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDJkYTM3NzFjZjRjOTM1
NTMyNDhkYTIxNmM3MDMyZDBkZjZkMjZhZTMuLjIzM2ViZTZjYTIzOWE3ZTBkNWZkOTkxYjFjMGEy
OTU2MzhiNTg3ZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2lu
Y2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgpA
QCAtOTMsNiArOTQsOCBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRl
KiBleGVjKQogCiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgp
LT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkKICAgICAgICAgaW1wbCgpLT5zZW5kKGVjKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXgg
MjM1NWQyYTU3Y2E5OWI5ZjU4MGFmOTRlNGNjMjQzMDM5MzU5ZTJhNS4uZDY3YzRmZGIxZmRhOTE5
ZjQ3ZWMyNjIzY2ExYmRhNjJhZDhmMWRmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25BZ2VudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Qmxv
Yi5oIgogI2luY2x1ZGUgIlY4RE9NRm9ybURhdGEuaCIKQEAgLTExNCw3ICsxMTQsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2Vu
ZCgpIik7CiAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVx
dWVzdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB4bWxIdHRwUmVxdWVzdC0+dXJsKCkpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkFnZW50OjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdCh4
bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB4bWxIdHRwUmVxdWVzdC0+
dXJsKCkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBiYzllYzU2M2U1NGUyODE4ZTZjMjM3ZjAw
NjE5MmUwOWEyMTI3OTJlLi4wMzY5N2VhNjA4NTFmYWNhYTgzNWYxMTZhYjcwZmEzNWUwNmFmYzhi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQu
aCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVk
RXZlbnQoU3RyaW5nSW1wbCogcHJldlZhbHVlKQogICAgICAgICBkaXNwYXRjaEV2ZW50KE11dGF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZl
bnQsIHRydWUsIDAsIHByZXZWYWx1ZSwgbV9kYXRhKSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9k
aWZpZWRFdmVudCgpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoZG9jdW1lbnQoKSwgdGhpcyk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBlMThmNmZlMDZmMjlhNWE3MjM4OGEx
ZTE0ZGZkMTFiMjI0N2MwYWFlLi44YTYwY2RmZjZlN2Y1MjZkMDJiOTRmY2E4NjJhZWUyODZlMmQ3
MWYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25BZ2VudC5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCkBAIC0xNTUsNyArMTU1LDcgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAgICAgICAgIGJyZWFrOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbEluc2VydERPTU5v
ZGUoY2hpbGQsIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAg
ICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0KCksIGNoaWxkKTsKQEAgLTIyNiw3ICsy
MjYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbAogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0
LT5nZXQoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRy
b2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxk
LCB0aGlzKTsKICNlbmRpZgogCiAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LmdldCgp
LCBjaGlsZCk7CkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNl
Q2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAg
ICAgICAgQVNTRVJUKCFjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbEluc2VydERPTU5vZGUo
Y2hpbGQuZ2V0KCksIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2Vu
dDo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQuZ2V0KCksIHRoaXMpOwogI2Vu
ZGlmCiAKICAgICAgICAgLy8gQWRkIGNoaWxkIGFmdGVyICJwcmV2Ii4KQEAgLTU4NCw3ICs1ODQs
NyBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShj
aGlsZCwgdGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojp3aWxs
SW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAg
ICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAtNjI2LDcgKzYyNiw3
IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8vIFVzZSBhcHBlbmRD
aGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERPTSBtdXRh
dGlvbiBldmVudHMpLgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250
cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCks
IG5ld0NoaWxkLmdldCgpLCB0aGlzKTsKICNlbmRpZgogCiAgICAgZm9yYmlkRXZlbnREaXNwYXRj
aCgpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRJbnNlcnRl
ZChOb2RlKiBjaGlsZCkKICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEluc2Vy
dERPTU5vZGUoY2hpbGQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRJ
bnNlcnRET01Ob2RlKGNoaWxkLT5kb2N1bWVudCgpLCBjaGlsZCk7CiAjZW5kaWYKIAogICAgIFJl
ZlB0cjxOb2RlPiBjID0gY2hpbGQ7CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBzdGF0aWMgdm9pZCBk
aXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBBU1NFUlQoIWV2ZW50
RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlKGNoaWxkKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCks
IGNoaWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYzQwODc5MGM3Y2FhMzIyNzM5NjZiNjljNGM3NDZkMGRiOGMzMDU1Yy4uY2EwM2FmOGM4Zjll
MDdjMTY0ZDM5ZTQ1YWNkM2ZkMTU0MDNkMjdkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAt
NTU4LDcgKzU1OCw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAg
ICBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50
KCksIHRoaXMpOwogI2VuZGlmCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9
IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwpA
QCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQotICAg
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVu
dCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJv
bml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2ls
bE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFn
ZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogCiAgICAg
ZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50OjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCiB9
CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlTlMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluCiAKIHZvaWQg
RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhp
cyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxNb2RpZnlET01BdHRy
KGRvY3VtZW50KCksIHRoaXMpOwogCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZElnbm9y
ZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwogCkBAIC0xMjY3LDcg
KzEyNjcsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMgPSAwOwogICAgIH0KICAgICAK
LSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCks
IHRoaXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyZWUy
YzE0YzU3N2YxNzIzZjdlMmEwZDgyNWM2Yzg2NDhkMjdhMGQuLjViMzBiNzZmZjkxNDNkYzNiZGY0
NDhiODllMGFmNjQ3Njc0NDEwZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25B
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0b3JhZ2VBZ2VudC5oIgpA
QCAtMTM3LDggKzEzOCw2IEBAIGNvbnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6
OlNjcmlwdHNQYW5lbCA9ICJzY3JpcHRzIjsKIGNvbnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckNv
bnRyb2xsZXI6OlByb2ZpbGVzUGFuZWwgPSAicHJvZmlsZXMiOwogCiAKLXN0YXRpYyBpbnQgY29u
bmVjdGVkRnJvbnRlbmRDb3VudCA9IDA7Ci0KIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yQ29udHJv
bGxlcjo6aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nTmFtZSgpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIHNldHRpbmdOYW1lLCAoImluc3BlY3RvclN0YXJ0c0F0dGFj
aGVkIikpOwpAQCAtMTUxLDggKzE1MCw2IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0
YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzVmOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1D
b25zb2xlTWVzc2FnZXMgPSAxMDAwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGlyZUNvbnNv
bGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLXVuc2lnbmVkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNf
aW5zcGVjdG9yQ29udHJvbGxlckNvdW50ID0gMDsKLQogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAg
ICA6IG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAtMTc4
LDcgKzE3NSw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhwYWdl
LCBwYWdlKTsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKLSAgICArK3NfaW5zcGVj
dG9yQ29udHJvbGxlckNvdW50OwogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9y
Q29udHJvbGxlcigpCkBAIC0xOTAsOSArMTg2LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fklu
c3BlY3RvckNvbnRyb2xsZXIoKQogCiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZnJhbWVSZXNvdXJj
ZXMpOwogCi0gICAgQVNTRVJUKHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50KTsKLSAgICAtLXNf
aW5zcGVjdG9yQ29udHJvbGxlckNvdW50OwotCiAgICAgcmVsZWFzZUZyb250ZW5kTGlmZXRpbWVB
Z2VudHMoKTsKIAogICAgIG1faW5zcGVjdG9yQmFja2VuZC0+ZGlzY29ubmVjdENvbnRyb2xsZXIo
KTsKQEAgLTUzNyw5ICs1MzAsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZCgpCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBuZXcgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KHRoaXMsIG1fZnJvbnRlbmQuZ2V0KCkpOwogI2VuZGlmCiAKLSAg
ICBpZiAoIWNvbm5lY3RlZEZyb250ZW5kQ291bnQpCisgICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25BZ2VudDo6aGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6
OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7Ci0gICAgY29u
bmVjdGVkRnJvbnRlbmRDb3VudCsrOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50
Ojpmcm9udGVuZENyZWF0ZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXVz
ZUZyb250ZW5kKCkKQEAgLTU5Nyw4ICs1OTAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zyb250ZW5kLmNs
ZWFyKCk7CiAKLSAgICBjb25uZWN0ZWRGcm9udGVuZENvdW50LS07Ci0gICAgaWYgKCFjb25uZWN0
ZWRGcm9udGVuZENvdW50KQorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojpmcm9u
dGVuZERlbGV0ZWQoKTsKKyAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojpo
YXNGcm9udGVuZHMoKSkKICAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxT
dGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhmYWxzZSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKQEAgLTIxMDMsNjQgKzIwOTYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnJlbG9hZFBhZ2UoKQogICAgIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPnJlZGly
ZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlUmVmcmVzaCh0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFy
ZW50KQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1
Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRC
cmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJlbnQsICZldmVudERhdGEpKQotICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5
cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotICAgIGlmIChtX2RvbUFnZW50KQot
ICAgICAgICBtX2RvbUFnZW50LT5kaWRJbnNlcnRET01Ob2RlKG5vZGUpOwotfQotCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewot
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50
IHx8ICFtX2RvbUFnZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gZXZlbnREYXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9k
ZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNl
bmRpZgotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5vZGVJbXBs
KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQt
PmRpZFJlbW92ZURPTU5vZGUobm9kZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdl
bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVu
dERhdGE7Ci0gICAgaWYgKG1fZG9tQWdlbnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmlj
YXRpb24oZWxlbWVudCwgJmV2ZW50RGF0YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNl
bmRpZgotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHJJbXBs
KEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9t
QWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5jaGFy
YWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0
cFJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQogICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA5ZTYzZjAxZTUxNzg2NTMzZjVlNzFlZWUyNGYxYmQxZjU2NWQx
NDY2Li4wYmI5Y2UyNGM1Y2ZlYWY4MmZhZDJjOWI0ZThiYjg5MjdjZDhjZjIxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb29r
aWUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKQEAgLTUxLDcgKzUw
LDYgQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRS
ZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKQEAgLTE5
OCwxNSArMTk2LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRMb2FkRXZl
bnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAgICAgdm9pZCBtYWluUmVzb3VyY2VG
aXJlZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmKTsKIAotICAg
IHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7
Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlKik7Ci0gICAgc3RhdGljIHZv
aWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlE
T01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1l
bnQqKTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0
YSopOwotCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmKTsKLQogI2lmIEVOQUJMRShXT1JL
RVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29ya2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJv
eWVkIH07CiAKQEAgLTI5MSw2ICsyODAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNz
IEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDsK
ICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogCiAgICAgdm9pZCBwb3B1bGF0
ZVNjcmlwdE9iamVjdHMoKTsKQEAgLTMzOSwxOSArMzI5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBqc29uUmVzdWx0KTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KTsKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlckZvck5vZGUoTm9kZSopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KTsKLQot
ICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGVJbXBsKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7
Ci0gICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChOb2RlKik7Ci0gICAgdm9pZCB3aWxsUmVt
b3ZlRE9NTm9kZUltcGwoTm9kZSopOwotICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoTm9k
ZSopOwotICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKLSAgICB2b2lk
IGRpZE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKLSAgICB2b2lkIGNoYXJhY3RlckRhdGFN
b2RpZmllZEltcGwoQ2hhcmFjdGVyRGF0YSopOwotCi0gICAgdm9pZCBpbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdEltcGwoY29uc3QgS1VSTCYpOworICAgIHZvaWQgaW5zdHJ1bWVudFdp
bGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgS1VSTCYpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CkBA
IC0zNjAsOCArMzM4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNhdmVCcmVha3BvaW50cyhQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMpOwogI2VuZGlmCiAKLSAgICBzdGF0
aWMgdW5zaWduZWQgc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQ7Ci0KICAgICBQYWdlKiBtX2lu
c3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CkBAIC00
MjgsOTIgKzQwNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVu
dCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUocGFyZW50
KSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+d2lsbEluc2VydERPTU5vZGVJbXBsKG5v
ZGUsIHBhcmVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yTm9kZShub2RlKSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci0+ZGlkSW5zZXJ0RE9NTm9kZUltcGwobm9kZSk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUobm9kZSkpIHsKLSAgICAg
ICAgaW5zcGVjdG9yQ29udHJvbGxlci0+d2lsbFJlbW92ZURPTU5vZGVJbXBsKG5vZGUpOwotICAg
ICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRSZW1vdmVET01Ob2RlSW1wbChub2RlKTsKLSAg
ICB9Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1v
ZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvck5vZGUoZWxlbWVudCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xs
ZXItPndpbGxNb2RpZnlET01BdHRySW1wbChlbGVtZW50KTsKLSNlbmRpZgotfQotCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1l
bnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGVsZW1l
bnQpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRNb2RpZnlET01BdHRySW1wbChl
bGVtZW50KTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
aGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoY2hhcmFjdGVyRGF0YSkp
Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwo
Y2hhcmFjdGVyRGF0YSk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSkKLSAgICAg
ICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJ
bXBsKHVybCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgaWYgKCFzX2luc3Bl
Y3RvckNvbnRyb2xsZXJDb3VudCB8fCAhY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgp
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvckRv
Y3VtZW50KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpOwotfQotCi1pbmxpbmUgSW5z
cGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxl
ckZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIXNfaW5zcGVjdG9yQ29udHJvbGxlckNv
dW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckRvY3VtZW50KG5vZGUtPmRvY3VtZW50KCkpOwotfQotCi1pbmxpbmUgSW5zcGVjdG9yQ29udHJv
bGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50
KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXIpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRl
bmQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXI7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckNvbnRyb2xsZXJfaCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzlkOTdkNTEzYjY2NmEzZGZjYzg1
ZmYzMThjNzE5ZjhhYWMxYTIwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoK
KyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4K
KyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpzX2Zyb250
ZW5kQ291bnRlciA9IDA7CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Ondp
bGxJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyLCBOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2Vu
dCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBpZiAo
IWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpOworICAgIGlm
ICghZG9tQWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBldmVudERhdGE7CisgICAgaWYgKGRvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2Vy
dGlvbihub2RlLCBwYXJlbnQsICZldmVudERhdGEpKQorICAgICAgICBkZWJ1Z2dlckFnZW50LT5i
cmVha1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwor
I2VuZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9
IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisgICAgICAgIGRvbUFnZW50
LT5kaWRJbnNlcnRET01Ob2RlKG5vZGUpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50
ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOworICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYg
KCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFrT25Ob2RlUmVtb3Zh
bChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFt
KERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRSZW1vdmVET01Ob2RlSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBOb2RlKiBub2RlKQor
eworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JD
b250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQorICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3Zl
RE9NTm9kZShub2RlKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
d2lsbE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGlu
c3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRlYnVn
Z2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpOworICAgIGlmICghZG9t
QWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBl
dmVudERhdGE7CisgICAgaWYgKGRvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZp
Y2F0aW9uKGVsZW1lbnQsICZldmVudERhdGEpKQorICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OmRpZE1vZGlmeURP
TUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVu
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisgICAgICAgIGRvbUFn
ZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEp
Cit7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3Rv
ckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisgICAgICAgIGRvbUFnZW50LT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQWdlbnQ6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBLVVJMJiB1cmwpCit7
CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0
cFJlcXVlc3QodXJsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
IUVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTg0ZTgzZGY5Mjc1OTFhYThmMzExYzM1
ZmY1Mzk4MWU5YzI2MTNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudF9o
CisjZGVmaW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50X2gKKworI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDaGFyYWN0ZXJEYXRhOwor
Y2xhc3MgRWxlbWVudDsKK2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBLVVJMOwor
Y2xhc3MgTm9kZTsKKworY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSos
IE5vZGUqIHBhcmVudCk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShEb2N1bWVu
dCosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShEb2N1bWVudCos
IE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCosIEVs
ZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiwgRWxl
bWVudCopOworICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCos
IENoYXJhY3RlckRhdGEqKTsKKworICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhN
TEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJik7CisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kQ3JlYXRlZCgpIHsg
c19mcm9udGVuZENvdW50ZXIgKz0gMTsgfQorICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kRGVsZXRl
ZCgpIHsgc19mcm9udGVuZENvdW50ZXIgLT0gMTsgfQorICAgIHN0YXRpYyBib29sIGhhc0Zyb250
ZW5kcygpIHsgcmV0dXJuIHNfZnJvbnRlbmRDb3VudGVyOyB9CisjZW5kaWYKKworcHJpdmF0ZToK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2Rl
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwg
Tm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGVJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlm
eURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBFbGVtZW50Kik7CisgICAgc3RhdGlj
IHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEVsZW1lbnQq
KTsKKyAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBDaGFyYWN0ZXJEYXRhKik7CisKKyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50
V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEtV
UkwmKTsKKworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChEb2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyRm9yUGFnZShQYWdlKik7CisKKyAgICBzdGF0aWMgaW50IHNfZnJvbnRlbmRD
b3VudGVyOworI2VuZGlmCit9OworCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25BZ2VudDo6d2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2Rl
LCBOb2RlKiBwYXJlbnQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIHdpbGxJbnNlcnRET01Ob2RlSW1wbChpbnNw
ZWN0b3JDb250cm9sbGVyLCBub2RlLCBwYXJlbnQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50
KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkSW5zZXJ0RE9NTm9kZUlt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50
KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkgeworICAgICAgICB3aWxsUmVtb3ZlRE9NTm9k
ZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSk7CisgICAgICAgIGRpZFJlbW92ZURPTU5v
ZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOworICAgIH0KKyNlbmRpZgorfQorCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbE1vZGlmeURPTUF0
dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3
aWxsTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OmRpZE1v
ZGlmeURPTUF0dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICBkaWRNb2RpZnlET01BdHRySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBlbGVtZW50
KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2Vu
dDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiBkb2N1bWVudCwgQ2hhcmFjdGVyRGF0
YSogY2hhcmFjdGVyRGF0YSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxl
ckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBjaGFyYWN0ZXJEYXRhKTsKKyNlbmRpZgorfQorCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6aW5zdHJ1bWVudFdpbGxTZW5k
WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgdXJsKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgaW5zdHJ1bWVudFdpbGxTZW5kWE1M
SHR0cFJlcXVlc3RJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7CisjZW5kaWYKK30KKwor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYg
KGhhc0Zyb250ZW5kcygpICYmIGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpKQorICAg
ICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2Uoc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250ZXh0KS0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnNwZWN0b3JD
b250cm9sbGVyRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmIChoYXNG
cm9udGVuZHMoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKGRv
Y3VtZW50LT5wYWdlKCkpOworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29u
dHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkgOiAwOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50X2gpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69184</attachid>
            <date>2010-09-29 06:07:27 -0700</date>
            <delta_ts>2010-09-30 03:21:04 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40478</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5YTA0ZDU3Li40OGNmYWFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMDYsNiArMTEwNiw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdlNjU4MS4uYTVlNzM1NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MiBAQAorMjAxMC0wOS0yOSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBleHRyYWN0IEluc3BlY3RvciBJbnN0cnVtZW50YXRpb24gQVBJIGFzIGEgY2xh
c3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjYx
NAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGls
ZEluc2VydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmli
dXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1
bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25BZ2VudDo6d2lsbEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRJbnNlcnRET01Ob2RlSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbFJlbW92
ZURPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkFnZW50OjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjpkaWRNb2RpZnlET01BdHRy
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25BZ2VudDo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
ZnJvbnRlbmRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50Ojpmcm9udGVuZERlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQWdlbnQ6Omhhc0Zyb250ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbEluc2VydERPTU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OmRpZEluc2VydERPTU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Ondp
bGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnN0
cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6aW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
QWdlbnQ6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6aW5zcGVjdG9yQ29udHJvbGxlckZvclBh
Z2UpOgorCiAyMDEwLTA5LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDk4NWI1
Y2UuLjg0ZmI5ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTc5OSw2ICsxNzk5LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgg
XAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwKKwlXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAgXAorCVdlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDJiMmM5MmMuLmEzYjEzMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODk3LDYgKzE4OTcsOCBAQAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZDEwNDQ1NS4uZTUxMTUxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMCw2ICs2MzAsOCBAQAogCQkxQ0Y2QkUxNTBFOUJCNDY3
MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAvKiBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5
M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICov
OyB9OwogCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDBCMTkwODEx
QzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi87IH07CisJCTIwRDYyOTI2
MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNDEyNTM2
OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwICovOyB9Owor
CQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5oICov
OyB9OwogCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjhDMjg0NDEwRDgy
NTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjRGNTRFQUMxMDFGRTkxNDAwMEFFNzQxIC8qIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI0RjU0RUFBMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAgKi87IH07CiAJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlv
bkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjRGNTRFQUIxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTY1NjIsNiArNjU2NCw4IEBA
CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5
M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxp
YjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CiAJCTIwMEIxOTA4MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1
NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjQ0MkJCRjgxMTk0QzlEMzAwRDQ5NDY5IC8q
IEhhc2hDaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNo
Q2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjRGNTRFQUExMDFG
RTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDA1LDYgKzEyMDA5LDggQEAKIAkJCQk3QTBFNzcwQjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLywKIAkJCQk3QTBF
NzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi8sCiAJCQkJ
N0EwRTc3MEQxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgKi8s
CisJCQkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkFnZW50LmNwcCAqLywKKwkJCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQWdlbnQuaCAqLywKIAkJCQk5RjBENkIyQzEyMUJGRUJBMDA2QzAyODgg
LyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgKi8sCiAJCQkJOUYwRDZCMkQxMjFCRkVCQTAw
NkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLywKIAkJCQk0MUYwNjIwMDBGNUYw
QjY2MDBBMDdFQUMgLyogSW5zcGVjdG9yUmVzb3VyY2UuY3BwICovLApAQCAtMjA3OTgsNiArMjA4
MDQsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNv
ZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyog
WFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjBENjI5MjcxMjUzNjkwQjAwMDgxNTQz
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIz
MzExLDYgKzIzMzE4LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4
NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
MEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcAppbmRleCAyZGEzNzcxLi4yMzNlYmU2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRN
TERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCIK
ICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3dDdXN0b20uaCIKQEAgLTkzLDYgKzk0LDggQEAgSlNWYWx1ZSBKU1hNTEh0
dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKIAogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1
ZXN0OjpzZW5kKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25BZ2VudDo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1wbCgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGltcGwoKS0+dXJsKCkpOworCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIGltcGwoKS0+
c2VuZChlYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDIzNTVkMmEuLmQ2N2M0ZmQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiVjhYTUxIdHRwUmVxdWVzdC5oIgogCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCkBAIC0xMTQs
NyArMTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhN
TEh0dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCA9IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoeG1sSHR0
cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3QtPnVybCgp
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6aW5zdHJ1bWVudFdpbGxTZW5k
WE1MSHR0cFJlcXVlc3QoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
eG1sSHR0cFJlcXVlc3QtPnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwIGIvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggYmM5ZWM1Ni4u
MDM2OTdlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkFnZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHQuaCIKIApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hN
b2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIHByZXZWYWx1ZSkKICAgICAgICAgZGlzcGF0Y2hFdmVu
dChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNoYXJhY3RlckRhdGFNb2Rp
ZmllZEV2ZW50LCB0cnVlLCAwLCBwcmV2VmFsdWUsIG1fZGF0YSkpOwogICAgIGRpc3BhdGNoU3Vi
dHJlZU1vZGlmaWVkRXZlbnQoKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNoYXJhY3RlckRhdGFNb2RpZmllZCh0aGlzKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50KCksIHRo
aXMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTE4ZjZmZS4uOGE2MGNk
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQWdlbnQuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpAQCAtMTU1LDcgKzE1NSw3IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgICAgICBicmVhazsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2Rl
KGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Ondp
bGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLCB0aGlzKTsKICNlbmRpZgogCiAgICAg
ICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LmdldCgpLCBjaGlsZCk7CkBAIC0yMjYsNyArMjI2
LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxO
b2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWwKICAgICAgICAgTm9kZSogY2hpbGQgPSBpdC0+
Z2V0KCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShjaGlsZCwgdGhpcyk7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwg
dGhpcyk7CiAjZW5kaWYKIAogICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwg
Y2hpbGQpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAg
ICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNo
aWxkLmdldCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6
OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLmdldCgpLCB0aGlzKTsKICNlbmRp
ZgogCiAgICAgICAgIC8vIEFkZCBjaGlsZCBhZnRlciAicHJldiIuCkBAIC01ODQsNyArNTg0LDcg
QEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0No
aWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAgICAgfQogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbEluc2VydERPTU5vZGUoY2hp
bGQsIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbElu
c2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAgICAgICAg
Ly8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKQEAgLTYyNiw3ICs2MjYsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQpCiAgICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgYXBwZW5kQ2hp
bGQgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRp
b24gZXZlbnRzKS4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbEluc2VydERPTU5vZGUobmV3Q2hpbGQuZ2V0KCksIHRoaXMpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBu
ZXdDaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2go
KTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkSW5zZXJ0ZWQo
Tm9kZSogY2hpbGQpCiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRE
T01Ob2RlKGNoaWxkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZGlkSW5z
ZXJ0RE9NTm9kZShjaGlsZC0+ZG9jdW1lbnQoKSwgY2hpbGQpOwogI2VuZGlmCiAKICAgICBSZWZQ
dHI8Tm9kZT4gYyA9IGNoaWxkOwpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAgICAgQVNTRVJUKCFldmVudERp
c3BhdGNoRm9yYmlkZGVuKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0
b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZShjaGlsZCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKGNoaWxkLT5kb2N1bWVudCgpLCBj
aGlsZCk7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGM0MDg3OTAuLmNhMDNhZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1OCw3ICs1NTgs
NyBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsK
ICNlbmRpZgogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKQEAgLTU4OCw3ICs1
ODgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7
CiAjZW5kaWYKIH0KIApAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUs
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxl
QXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01B
dHRyKHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbE1v
ZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGRvY3VtZW50KCkt
PmluY0RPTVRyZWVWZXJzaW9uKCk7CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXpp
bmdTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2Rp
ZnlET01BdHRyKHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBAIC0xMjU3
LDcgKzEyNTcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbgogCiB2b2lkIEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRyKHRoaXMpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgp
LCB0aGlzKTsKIAogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKIApAQCAtMTI2Nyw3ICsxMjY3LDcgQEAg
dm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgICAgIGVjID0gMDsKICAgICB9CiAgICAgCi0gICAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKIH0K
IAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmMmVlMmMxLi41YjMwYjc2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjYsNiAr
NjYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JTdG9yYWdlQWdlbnQuaCIKQEAgLTEzNyw4ICsxMzgsNiBAQCBj
b25zdCBjaGFyKiBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTY3JpcHRzUGFuZWwgPSAic2Ny
aXB0cyI7CiBjb25zdCBjaGFyKiBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpQcm9maWxlc1Bh
bmVsID0gInByb2ZpbGVzIjsKIAogCi1zdGF0aWMgaW50IGNvbm5lY3RlZEZyb250ZW5kQ291bnQg
PSAwOwotCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkU2V0dGluZ05hbWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBzZXR0aW5nTmFtZSwgKCJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCIpKTsKQEAgLTE1MSw4ICsx
NTAsNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAw
Ljc1ZjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAw
MDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTAw
OwogCi11bnNpZ25lZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzX2luc3BlY3RvckNvbnRyb2xsZXJD
b3VudCA9IDA7Ci0KIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2Uo
cGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKQEAgLTE3OCw3ICsxNzUsNiBAQCBJbnNwZWN0
b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNs
aWVudCogY2xpZW50KQogewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAgICAgQVNTRVJU
X0FSRyhjbGllbnQsIGNsaWVudCk7Ci0gICAgKytzX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudDsK
IH0KIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQpAQCAtMTkw
LDkgKzE4Niw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKCkK
IAogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2ZyYW1lUmVzb3VyY2VzKTsKIAotICAgIEFTU0VSVChz
X2luc3BlY3RvckNvbnRyb2xsZXJDb3VudCk7Ci0gICAgLS1zX2luc3BlY3RvckNvbnRyb2xsZXJD
b3VudDsKLQogICAgIHJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7CiAKICAgICBtX2lu
c3BlY3RvckJhY2tlbmQtPmRpc2Nvbm5lY3RDb250cm9sbGVyKCk7CkBAIC01MzcsOSArNTMwLDkg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fYXBw
bGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0
aGlzLCBtX2Zyb250ZW5kLmdldCgpKTsKICNlbmRpZgogCi0gICAgaWYgKCFjb25uZWN0ZWRGcm9u
dGVuZENvdW50KQorICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Omhhc0Zy
b250ZW5kcygpKQogICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNr
Rm9yVW5jYXVnaHRFeGNlcHRpb25zKHRydWUpOwotICAgIGNvbm5lY3RlZEZyb250ZW5kQ291bnQr
KzsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZnJvbnRlbmRDcmVhdGVkKCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmV1c2VGcm9udGVuZCgpCkBAIC01OTcs
OCArNTkwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
KQogICAgICAgICByZXR1cm47CiAgICAgbV9mcm9udGVuZC5jbGVhcigpOwogCi0gICAgY29ubmVj
dGVkRnJvbnRlbmRDb3VudC0tOwotICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZnJvbnRlbmREZWxldGVkKCk7CisgICAg
aWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6aGFzRnJvbnRlbmRzKCkpCiAgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2Vw
dGlvbnMoZmFsc2UpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC0yMTAz
LDY0ICsyMDk2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxvYWRQYWdlKCkKICAg
ICBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hl
ZHVsZVJlZnJlc2godHJ1ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbElu
c2VydERPTU5vZGVJbXBsKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCkKLXsKLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCB8fCAhbV9kb21B
Z2VudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2
ZW50RGF0YTsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24o
bm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwo
Tm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9kb21BZ2VudCkKLSAgICAgICAgbV9kb21BZ2VudC0+
ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsUmVtb3ZlRE9NTm9kZUltcGwoTm9kZSogbm9kZSkKLXsKLSNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLSAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCB8fCAhbV9kb21BZ2VudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsK
LSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVSZW1vdmFsKG5vZGUsICZldmVu
dERhdGEpKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3Bv
aW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotICAg
IGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5v
ZGUpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRySW1w
bChFbGVtZW50KiBlbGVtZW50KQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
ICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAgIGlmIChtX2Rv
bUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZldmVu
dERhdGEpKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3Bv
aW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50KiBlbGVtZW50KQot
ewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRNb2RpZnlET01B
dHRyKGVsZW1lbnQpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNoYXJhY3RlckRh
dGFNb2RpZmllZEltcGwoQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKLXsKLSAgICBpZiAo
bV9kb21BZ2VudCkKLSAgICAgICAgbV9kb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNo
YXJhY3RlckRhdGEpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRX
aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChjb25zdCBLVVJMJiB1cmwpCit2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IEtVUkwm
IHVybCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBpZiAobV9kZWJ1
Z2dlckFnZW50KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
OWU2M2YwMS4uMGJiOWNlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKICNpbmNsdWRl
ICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCkBAIC01MSw3ICs1MCw2IEBAIGNsYXNzIENvbnNvbGVNZXNzYWdlOwog
Y2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwot
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIEhpdFRlc3RSZXN1bHQ7CkBAIC0xOTgsMTUgKzE5Niw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBLVVJMJik7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9NTm9k
ZShOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERP
TU5vZGUoTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKE5vZGUqKTsK
LSAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgY2hhcmFj
dGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqKTsKLQotICAgIHN0YXRpYyB2b2lkIGluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBLVVJMJik7Ci0KICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBlbnVtIFdvcmtlckFjdGlvbiB7
IFdvcmtlckNyZWF0ZWQsIFdvcmtlckRlc3Ryb3llZCB9OwogCkBAIC0yOTEsNiArMjgwLDcgQEAg
cHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVu
ZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBmcmllbmQgY2xhc3MgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2Ny
aXB0SG9zdDsKIAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CkBAIC0zMzksMTkg
KzMyOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKLSAgICBzdGF0aWMg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7Ci0gICAgc3RhdGljIElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKLSAg
ICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCk7Ci0KLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1w
bChOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUlt
cGwoTm9kZSopOwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2
b2lkIGRpZFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01B
dHRySW1wbChFbGVtZW50Kik7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50
Kik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKENoYXJhY3RlckRhdGEqKTsK
LQotICAgIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtV
UkwmKTsKKyAgICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IEtV
UkwmKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwpAQCAtMzYwLDggKzMzOCw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzYXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFr
cG9pbnRzKTsKICNlbmRpZgogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJv
bGxlckNvdW50OwotCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNs
aWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtNDI4LDkyICs0MDQsNiBAQCBwcml2YXRlOgogI2Vu
ZGlmCiB9OwogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9N
Tm9kZShOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JOb2RlKHBhcmVudCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xs
ZXItPndpbGxJbnNlcnRET01Ob2RlSW1wbChub2RlLCBwYXJlbnQpOwotI2VuZGlmCi19Ci0KLWlu
bGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9k
ZSkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUobm9kZSkp
Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEluc2VydERPTU5vZGVJbXBsKG5vZGUp
OwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1v
dmVET01Ob2RlKE5vZGUqIG5vZGUpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKG5vZGUpKSB7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxS
ZW1vdmVET01Ob2RlSW1wbChub2RlKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlk
UmVtb3ZlRE9NTm9kZUltcGwobm9kZSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQp
Ci17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGVsZW1lbnQp
KQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsTW9kaWZ5RE9NQXR0ckltcGwoZWxl
bWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
TW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yTm9kZShlbGVtZW50KSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJv
bGxlci0+ZGlkTW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5l
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3Rl
ckRhdGEqIGNoYXJhY3RlckRhdGEpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKGNoYXJhY3RlckRhdGEpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGNoYXJhY3RlckRhdGEpOwotI2VuZGlmCi19Ci0K
LWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0
dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVy
bCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCh1cmwpOwotI2VuZGlmCi19Ci0KLWlubGlu
ZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250
cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotewotICAgIGlmICghc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgfHwgIWNvbnRl
eHQgfHwgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpKTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNv
bnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAg
aWYgKCFzX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChub2RlLT5kb2N1bWVudCgpKTsK
LX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAg
QVNTRVJUKGRvY3VtZW50KTsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAg
aWYgKCFpbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWlu
c3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250cm9sbGVyX2gpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5ZDk3ZAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmNwcApAQCAt
MCwwICsxLDEzNiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoK
KyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmgiCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2ludCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25BZ2VudDo6c19mcm9udGVuZENvdW50ZXIgPSAwOworCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQoreworI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxl
ci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdl
bnQuZ2V0KCk7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAgICAgICByZXR1cm47CisgICAg
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21B
Z2VudC5nZXQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAgICAgICByZXR1cm47CisgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChkb21BZ2VudC0+c2hv
dWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKKyAgICAg
ICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50
VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkFnZW50OjpkaWRJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBOb2RlKiBub2RlKQoreworICAgIGlmICghaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgp
KQorICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIE5vZGUqIG5vZGUpCit7CisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVy
LT5oYXNGcm9udGVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2Vu
dC5nZXQoKTsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFn
ZW50LmdldCgpOworICAgIGlmICghZG9tQWdlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CisgICAgaWYgKGRvbUFnZW50LT5zaG91
bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0YSkpCisgICAgICAgIGRlYnVnZ2Vy
QWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50
RGF0YSk7CisjZW5kaWYKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zy
b250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKKyAgICAgICAg
ZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBFbGVtZW50KiBlbGVtZW50KQoreworI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFz
RnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQq
IGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0
KCk7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5n
ZXQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAgICAgICByZXR1cm47CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChkb21BZ2VudC0+c2hvdWxkQnJl
YWtPbkF0dHJpYnV0ZU1vZGlmaWNhdGlvbihlbGVtZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAg
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlw
ZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkFnZW50OjpkaWRNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghaW5zcGVjdG9yQ29u
dHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50Lmdl
dCgpKQorICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBDaGFyYWN0ZXJE
YXRhKiBjaGFyYWN0ZXJEYXRhKQoreworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFz
RnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQorICAgICAg
ICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEpOworfQorCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnN0cnVtZW50V2lsbFNlbmRYTUxI
dHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29uc3QgS1VSTCYgdXJsKQoreworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJv
bnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KHVybCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTE4NGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50LmgKQEAgLTAsMCArMSwxNjQgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0
aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQWdlbnRfaAorI2RlZmluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudF9oCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2hhcmFj
dGVyRGF0YTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xh
c3MgS1VSTDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFn
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShEb2N1bWVu
dCosIE5vZGUqLCBOb2RlKiBwYXJlbnQpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERPTU5v
ZGUoRG9jdW1lbnQqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUo
RG9jdW1lbnQqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9j
dW1lbnQqLCBFbGVtZW50Kik7CisgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1
bWVudCosIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQo
RG9jdW1lbnQqLCBDaGFyYWN0ZXJEYXRhKik7CisKKyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50
V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VS
TCYpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBzdGF0aWMgdm9pZCBmcm9udGVuZENy
ZWF0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyICs9IDE7IH0KKyAgICBzdGF0aWMgdm9pZCBmcm9u
dGVuZERlbGV0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyIC09IDE7IH0KKyAgICBzdGF0aWMgYm9v
bCBoYXNGcm9udGVuZHMoKSB7IHJldHVybiBzX2Zyb250ZW5kQ291bnRlcjsgfQorI2VuZGlmCisK
K3ByaXZhdGU6CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBzdGF0aWMgdm9pZCB3aWxsSW5z
ZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIE5vZGUqIG5vZGUsIE5vZGUqIHBh
cmVudCk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVE
T01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lk
IHdpbGxNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRWxlbWVudCopOwor
ICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBFbGVtZW50Kik7CisgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgQ2hhcmFjdGVyRGF0YSopOworCisgICAgc3RhdGljIHZvaWQg
aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBjb25zdCBLVVJMJik7CisKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoUGFnZSopOworCisgICAgc3RhdGljIGludCBz
X2Zyb250ZW5kQ291bnRlcjsKKyNlbmRpZgorfTsKKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwg
Tm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3aWxsSW5zZXJ0RE9NTm9k
ZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSwgcGFyZW50KTsKKyNlbmRpZgorfQorCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZEluc2Vy
dERPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOworI2VuZGlmCit9CisKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKKyAgICAgICAgd2lsbFJl
bW92ZURPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOworICAgICAgICBkaWRS
ZW1vdmVET01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlKTsKKyAgICB9CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6OndpbGxN
b2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCkKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkK
KyAgICAgICAgd2lsbE1vZGlmeURPTUF0dHJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGVsZW1l
bnQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFn
ZW50OjpkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVu
dCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRv
Y3VtZW50KSkKKyAgICAgICAgZGlkTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgZWxlbWVudCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCogZG9jdW1lbnQsIENo
YXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGNoYXJhY3RlckRhdGFN
b2RpZmllZEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY2hhcmFjdGVyRGF0YSk7CisjZW5kaWYK
K30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQWdlbnQ6Omluc3RydW1l
bnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxl
ckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGluc3RydW1lbnRX
aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB1cmwpOworI2Vu
ZGlmCit9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQoraW5saW5lIEluc3BlY3RvckNvbnRyb2xs
ZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu
bGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25BZ2VudDo6
aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBpZiAoaGFzRnJvbnRlbmRzKCkpCisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVy
Rm9yUGFnZShkb2N1bWVudC0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIElu
c3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkFnZW50OjppbnNwZWN0
b3JDb250cm9sbGVyRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBwYWdlID8gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25B
Z2VudF9oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69187</attachid>
            <date>2010-09-29 06:48:38 -0700</date>
            <delta_ts>2010-09-29 07:53:52 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40832</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5YTA0ZDU3Li40OGNmYWFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMDYsNiArMTEwNiw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3ZTY1ODEuLjA5MDI0NzAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAK
KzIwMTAtMDktMjkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdCBJbnNwZWN0b3IgSW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2MTQKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBS
ZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlcklu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aENoaWxkUmVtb3ZhbEV2ZW50cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Ojp+SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvclBhZ2UpOgorCiAyMDEwLTA5LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDk4NWI1Y2UuLjg0ZmI5ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTc5OSw2ICsxNzk5LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwK
KwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKKwlXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMmIyYzkyYy4uYTNiMTMzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4OTcsNiArMTg5Nyw4
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCBlNTk1ZjNiLi40NmFkODlmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk5Nyw2ICs5OTcs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCisgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAgXApAQCAtMTg3MSw2
ICsxODcyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCisgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDEwNDQ1NS4uZTUxMTUxNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMCw2ICs2MzAsOCBAQAogCQkx
Q0Y2QkUxNTBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEzMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9OwogCQkxQ0ZBRTMy
MzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBs
aWJvYmpjLmR5bGliICovOyB9OwogCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0
QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi87
IH07CisJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBE
NjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi87
IH07CisJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsK
IAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAw
OUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTI0RjU0RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwICovOyB9OwogCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0
RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC02NTYyLDYgKzY1NjQsOCBAQAogCQkx
Q0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEw
RDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hDaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIw
MDUsNiArMTIwMDksOCBAQAogCQkJCTdBMEU3NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwICovLAogCQkJCTdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLywKIAkJCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCAqLywKKwkJCQkyMEQ2MjkyNDEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLywKKwkJCQkyMEQ2MjkyNTEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJOUYw
RDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovLAog
CQkJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Ki8sCiAJCQkJNDFGMDYyMDAwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNw
cCAqLywKQEAgLTIwNzk4LDYgKzIwODA0LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlB
QkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDRE
ODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTIw
RDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjMzMTEsNiArMjMzMTgsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkw
MDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyZGEzNzcxLi4yMzNlYmU2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCkBAIC05Myw2ICs5NCw4IEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgaW1wbCgp
LT5zZW5kKGVjKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMjM1NWQyYS4uZDY3YzRmZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNs
dWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCkBAIC0xMTQsNyAr
MTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0
dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9
IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoeG1sSHR0cFJl
cXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3QtPnVybCgpKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KHhtbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHhtbEh0dHBS
ZXF1ZXN0LT51cmwoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cCBiL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGJjOWVjNTYuLjAzNjk3ZWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQo
U3RyaW5nSW1wbCogcHJldlZhbHVlKQogICAgICAgICBkaXNwYXRjaEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZlbnQsIHRy
dWUsIDAsIHByZXZWYWx1ZSwgbV9kYXRhKSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRF
dmVudCgpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTE4ZjZmZS4uOGE2MGNkZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQog
ICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShjaGlsZCwgdGhpcyk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwg
Y2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQu
Z2V0KCksIGNoaWxkKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBh
cnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hp
bAogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxk
LCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICBpbnNlcnRC
ZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLmdldCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZC5n
ZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICAvLyBBZGQgY2hpbGQgYWZ0ZXIgInByZXYi
LgpAQCAtNTg0LDcgKzU4NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIH0K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6Ondp
bGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5k
aWYKIAogICAgICAgICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAt
NjI2LDcgKzYyNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8v
IFVzZSBhcHBlbmRDaGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3
YW50IERPTSBtdXRhdGlvbiBldmVudHMpLgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShuZXdDaGlsZC5nZXQoKSwgdGhp
cyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1
bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGZvcmJpZEV2ZW50
RGlzcGF0Y2goKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxk
SW5zZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVu
KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRJbnNlcnRET01Ob2RlKGNoaWxkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEluc2VydERPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNoaWxkKTsKICNlbmRpZgogCiAgICAg
UmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIEFTU0VSVCghZXZl
bnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNo
aWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
YzQwODc5MC4uY2EwM2FmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBA
IC01OTYsNyArNTk2LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7
CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQot
ICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3RyaW4KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogCiAgICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1l
OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMgPSAw
OwogICAgIH0KICAgICAKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRy
KHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBmMmVlMmMxLi41YjMwYjc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RvcmFnZUFnZW50LmgiCkBAIC0x
MzcsOCArMTM4LDYgQEAgY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2Ny
aXB0c1BhbmVsID0gInNjcmlwdHMiOwogY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6UHJvZmlsZXNQYW5lbCA9ICJwcm9maWxlcyI7CiAKIAotc3RhdGljIGludCBjb25uZWN0
ZWRGcm9udGVuZENvdW50ID0gMDsKLQogY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2V0dGluZ05hbWUsICgiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQi
KSk7CkBAIC0xNTEsOCArMTUwLDYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hl
ZEhlaWdodFJhdGlvID0gMC43NWY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNv
bGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwaXJlQ29uc29sZU1l
c3NhZ2VzU3RlcCA9IDEwMDsKIAotdW5zaWduZWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQgPSAwOwotCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDog
bV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC0xNzgsNyAr
MTc1LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBh
Z2UpOwogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgICsrc19pbnNwZWN0b3JD
b250cm9sbGVyQ291bnQ7CiB9CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKQEAgLTE5MCw5ICsxODYsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVj
dG9yQ29udHJvbGxlcigpCiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7
CiAKLSAgICBBU1NFUlQoc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQpOwotICAgIC0tc19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQ7Ci0KICAgICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50
cygpOwogCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNjb25uZWN0Q29udHJvbGxlcigpOwpA
QCAtNTM3LDkgKzUzMCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IG5ldyBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGlm
ICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkKKyAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1
cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7Ci0gICAgY29ubmVjdGVkRnJv
bnRlbmRDb3VudCsrOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmV1c2VGcm9udGVuZCgpCkBA
IC01OTcsOCArNTkwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcm9udGVuZC5jbGVhcigpOwogCi0gICAg
Y29ubmVjdGVkRnJvbnRlbmRDb3VudC0tOwotICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3Vu
dCkKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworICAg
IGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKICAgICAgICAg
U2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9u
cyhmYWxzZSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTIxMDMsNjQg
KzIwOTYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBhZ2UoKQogICAgIG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
UmVmcmVzaCh0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0
RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQotewotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnRE
YXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2Rl
LCBwYXJlbnQsICZldmVudERhdGEpKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYK
LX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRET01Ob2RlSW1wbChOb2Rl
KiBub2RlKQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRJ
bnNlcnRET01Ob2RlKG5vZGUpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxS
ZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYg
KG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7Ci0gICAgaWYgKG1fZG9tQWdl
bnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0g
ICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIo
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1v
ZGlmaWVkSW1wbChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQotewotICAgIGlmIChtX2Rv
bUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFj
dGVyRGF0YSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgS1VSTCYgdXJs
KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChtX2RlYnVnZ2Vy
QWdlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5ZTYz
ZjAxLi4wYmI5Y2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKQEAgLTUxLDcgKzUwLDYgQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFz
cyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKQEAgLTE5OCwxNSArMTk2LDYgQEAgcHVibGljOgogICAgIHZvaWQg
bWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7
CiAgICAgdm9pZCBtYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmKTsKIAotICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5v
ZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJE
YXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSopOwotCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmKTsKLQogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29y
a2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI5MSw2ICsyODAsNyBAQCBwcml2
YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
IAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CkBAIC0zMzksMTkgKzMyOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7Ci0gICAgc3RhdGljIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCk7Ci0KLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBu
b2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSop
OwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIGRpZFJl
bW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChF
bGVtZW50Kik7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7Ci0gICAg
dm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKENoYXJhY3RlckRhdGEqKTsKLQotICAgIHZv
aWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmKTsKKyAg
ICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IEtVUkwmKTsKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OwpAQCAtMzYwLDggKzMzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
YXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsK
ICNlbmRpZgogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50
OwotCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9j
bGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwpAQCAtNDI4LDkyICs0MDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShOb2Rl
KiBub2RlLCBOb2RlKiBwYXJlbnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKHBhcmVudCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxJ
bnNlcnRET01Ob2RlSW1wbChub2RlLCBwYXJlbnQpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUobm9kZSkpCi0gICAgICAg
IGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEluc2VydERPTU5vZGVJbXBsKG5vZGUpOwotI2VuZGlm
Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2Rl
KE5vZGUqIG5vZGUpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKG5vZGUpKSB7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxSZW1vdmVET01O
b2RlSW1wbChub2RlKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkUmVtb3ZlRE9N
Tm9kZUltcGwobm9kZSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGVsZW1lbnQpKQotICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsTW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0j
ZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KiBlbGVtZW50KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yTm9kZShlbGVtZW50KSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlk
TW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqIGNo
YXJhY3RlckRhdGEpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKGNoYXJhY3RlckRhdGEpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWRJbXBsKGNoYXJhY3RlckRhdGEpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmluc3RydW1lbnRXaWxs
U2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCh1cmwpOwotI2VuZGlmCi19Ci0KLWlubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ewotICAgIGlmICghc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgfHwgIWNvbnRleHQgfHwgIWNv
bnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
KTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFzX2lu
c3BlY3RvckNvbnRyb2xsZXJDb3VudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChub2RlLT5kb2N1bWVudCgpKTsKLX0KLQotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGRv
Y3VtZW50KTsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpbnNw
ZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBp
bnNwZWN0b3JDb250cm9sbGVyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250cm9sbGVyX2gpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YzlkOTdkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRlciA9IDA7
CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSwgTm9k
ZSogcGFyZW50KQoreworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGlmICgh
aW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9s
bGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAg
ICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9y
Q29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAgICAg
ICByZXR1cm47CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAg
IGlmIChkb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCAm
ZXZlbnREYXRhKSkKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFr
cG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWlu
c3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9k
b21BZ2VudC5nZXQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9kZSk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUlt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkK
K3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1
Z2dlckFnZW50LmdldCgpOworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJu
OworICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdl
bnQtPnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAg
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlw
ZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhh
c0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQq
IGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKKyAgICAg
ICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxlbWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zy
b250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgp
OworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0
KCk7CisgICAgaWYgKCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFr
T25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0YSkpCisgICAgICAgIGRl
YnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUs
IGV2ZW50RGF0YSk7CisjZW5kaWYKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVy
LT5oYXNGcm9udGVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFn
ZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisg
ICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQoreworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQorICAgICAgICBkb21BZ2VudC0+
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEpOworfQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEtVUkwmIHVybCkK
K3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnN0cnVtZW50V2lsbFNlbmRYTUxI
dHRwUmVxdWVzdCh1cmwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE4NGU4Mwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0wLDAgKzEsMTY0IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZu
ZGVmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbl9oCisjZGVmaW5lIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbl9oCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JD
b250cm9sbGVyOworY2xhc3MgS1VSTDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5v
ZGUoRG9jdW1lbnQqLCBOb2RlKiwgTm9kZSogcGFyZW50KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJ
bnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1v
dmVET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlE
T01BdHRyKERvY3VtZW50KiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURP
TUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50Kik7CisgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0
YU1vZGlmaWVkKERvY3VtZW50KiwgQ2hhcmFjdGVyRGF0YSopOworCisgICAgc3RhdGljIHZvaWQg
aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IEtVUkwmKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CisgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CisgICAg
c3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0K
KyNlbmRpZgorCitwcml2YXRlOgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZv
aWQgd2lsbEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKiBub2Rl
LCBOb2RlKiBwYXJlbnQpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERPTU5vZGVJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURP
TU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIE5vZGUqKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEVs
ZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2Rp
ZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIENoYXJhY3RlckRhdGEqKTsKKworICAgIHN0
YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgY29uc3QgS1VSTCYpOworCisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqKTsKKworICAgIHN0
YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CisjZW5kaWYKK307CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIHdpbGxJbnNlcnRE
T01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlLCBwYXJlbnQpOworI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZEluc2Vy
dERPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOworI2VuZGlmCit9CisKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0
b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CisgICAgICAgIHdpbGxSZW1vdmVE
T01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlKTsKKyAgICAgICAgZGlkUmVtb3Zl
RE9NTm9kZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSk7CisgICAgfQorI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0
dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3
aWxsTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlE
T01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZGlkTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQorICAgICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNoYXJhY3RlckRhdGEpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dChjb250ZXh0KSkKKyAgICAgICAgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBj
b250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JQYWdlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2Uo
KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1
cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAg
cmV0dXJuIHBhZ2UgPyBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOworfQorI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbl9oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69197</attachid>
            <date>2010-09-29 07:53:52 -0700</date>
            <delta_ts>2010-09-29 08:35:35 -0700</delta_ts>
            <desc>Fix linux build.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28915</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5YTA0ZDU3Li42N2VmZGU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMDYsNiArMTEwNiw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3ZTY1ODEuLmQ2YjliOTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAK
KzIwMTAtMDktMjkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdCBJbnNwZWN0b3IgSW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2MTQKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBS
ZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlcklu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aENoaWxkUmVtb3ZhbEV2ZW50cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Ojp+SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvclBhZ2UpOgorCiAyMDEwLTA5LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDk4NWI1Y2UuLjBjNjJlZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTc5OSw2ICsxNzk5LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwK
KwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKKwlXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMmIyYzkyYy4uNGI4YTQ1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4OTcsNiArMTg5Nyw4
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCBlNTk1ZjNiLi4yYmJjMTY1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk5Nyw2ICs5OTcs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCisgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAgXApAQCAtMTg3MSw2
ICsxODcyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCisgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDEwNDQ1NS4uYjJjZjNiMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMCw2ICs2MzAsOCBAQAogCQkx
Q0Y2QkUxNTBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEzMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9OwogCQkxQ0ZBRTMy
MzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBs
aWJvYmpjLmR5bGliICovOyB9OwogCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0
QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi87
IH07CisJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBE
NjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi87
IH07CisJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsK
IAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAw
OUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTI0RjU0RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwICovOyB9OwogCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0
RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC02NTYyLDYgKzY1NjQsOCBAQAogCQkx
Q0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEw
RDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hDaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIw
MDUsNiArMTIwMDksOCBAQAogCQkJCTdBMEU3NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwICovLAogCQkJCTdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLywKIAkJCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCAqLywKKwkJCQkyMEQ2MjkyNDEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLywKKwkJCQkyMEQ2MjkyNTEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJOUYw
RDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovLAog
CQkJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Ki8sCiAJCQkJNDFGMDYyMDAwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNw
cCAqLywKQEAgLTIwNzk4LDYgKzIwODA0LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlB
QkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDRE
ODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTIw
RDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjMzMTEsNiArMjMzMTgsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkw
MDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyZGEzNzcxLi5jNDdiOWYzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCkBAIC05Myw2ICs5NCw4IEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgaW1wbCgp
LT5zZW5kKGVjKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMjM1NWQyYS4uMWFkZDI5MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNs
dWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCkBAIC0xMTQsNyAr
MTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0
dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9
IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoeG1sSHR0cFJl
cXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3QtPnVybCgpKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KHhtbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHhtbEh0dHBS
ZXF1ZXN0LT51cmwoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cCBiL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGJjOWVjNTYuLjBjYjI4NDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQo
U3RyaW5nSW1wbCogcHJldlZhbHVlKQogICAgICAgICBkaXNwYXRjaEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZlbnQsIHRy
dWUsIDAsIHByZXZWYWx1ZSwgbV9kYXRhKSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRF
dmVudCgpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTE4ZjZmZS4uODllYTdiNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQog
ICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShjaGlsZCwgdGhpcyk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwg
Y2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQu
Z2V0KCksIGNoaWxkKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBh
cnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hp
bAogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxk
LCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICBpbnNlcnRC
ZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLmdldCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZC5n
ZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICAvLyBBZGQgY2hpbGQgYWZ0ZXIgInByZXYi
LgpAQCAtNTg0LDcgKzU4NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIH0K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6Ondp
bGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5k
aWYKIAogICAgICAgICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAt
NjI2LDcgKzYyNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8v
IFVzZSBhcHBlbmRDaGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3
YW50IERPTSBtdXRhdGlvbiBldmVudHMpLgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShuZXdDaGlsZC5nZXQoKSwgdGhp
cyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1
bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGZvcmJpZEV2ZW50
RGlzcGF0Y2goKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxk
SW5zZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVu
KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRJbnNlcnRET01Ob2RlKGNoaWxkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEluc2VydERPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNoaWxkKTsKICNlbmRpZgogCiAgICAg
UmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIEFTU0VSVCghZXZl
bnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNo
aWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
YzQwODc5MC4uZmYwMzBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBA
IC01OTYsNyArNTk2LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7
CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQot
ICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3RyaW4KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogCiAgICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1l
OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMgPSAw
OwogICAgIH0KICAgICAKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRy
KHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBmMmVlMmMxLi41Y2M3NzQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RvcmFnZUFnZW50LmgiCkBAIC0x
MzcsOCArMTM4LDYgQEAgY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2Ny
aXB0c1BhbmVsID0gInNjcmlwdHMiOwogY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6UHJvZmlsZXNQYW5lbCA9ICJwcm9maWxlcyI7CiAKIAotc3RhdGljIGludCBjb25uZWN0
ZWRGcm9udGVuZENvdW50ID0gMDsKLQogY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2V0dGluZ05hbWUsICgiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQi
KSk7CkBAIC0xNTEsOCArMTUwLDYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hl
ZEhlaWdodFJhdGlvID0gMC43NWY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNv
bGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwaXJlQ29uc29sZU1l
c3NhZ2VzU3RlcCA9IDEwMDsKIAotdW5zaWduZWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQgPSAwOwotCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDog
bV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC0xNzgsNyAr
MTc1LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBh
Z2UpOwogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgICsrc19pbnNwZWN0b3JD
b250cm9sbGVyQ291bnQ7CiB9CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKQEAgLTE5MCw5ICsxODYsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVj
dG9yQ29udHJvbGxlcigpCiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7
CiAKLSAgICBBU1NFUlQoc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQpOwotICAgIC0tc19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQ7Ci0KICAgICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50
cygpOwogCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNjb25uZWN0Q29udHJvbGxlcigpOwpA
QCAtNTM3LDkgKzUzMCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IG5ldyBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGlm
ICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkKKyAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1
cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7Ci0gICAgY29ubmVjdGVkRnJv
bnRlbmRDb3VudCsrOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmV1c2VGcm9udGVuZCgpCkBA
IC01OTcsOCArNTkwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcm9udGVuZC5jbGVhcigpOwogCi0gICAg
Y29ubmVjdGVkRnJvbnRlbmRDb3VudC0tOwotICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3Vu
dCkKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworICAg
IGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKICAgICAgICAg
U2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9u
cyhmYWxzZSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTIxMDMsNjQg
KzIwOTYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBhZ2UoKQogICAgIG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
UmVmcmVzaCh0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0
RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQotewotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnRE
YXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2Rl
LCBwYXJlbnQsICZldmVudERhdGEpKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYK
LX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRET01Ob2RlSW1wbChOb2Rl
KiBub2RlKQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRJ
bnNlcnRET01Ob2RlKG5vZGUpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxS
ZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYg
KG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7Ci0gICAgaWYgKG1fZG9tQWdl
bnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0g
ICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIo
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1v
ZGlmaWVkSW1wbChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQotewotICAgIGlmIChtX2Rv
bUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFj
dGVyRGF0YSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgS1VSTCYgdXJs
KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChtX2RlYnVnZ2Vy
QWdlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5ZTYz
ZjAxLi41NjE2ZTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKQEAgLTUxLDcgKzUwLDYgQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFz
cyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKQEAgLTE5OCwxNSArMTk2LDYgQEAgcHVibGljOgogICAgIHZvaWQg
bWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7
CiAgICAgdm9pZCBtYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmKTsKIAotICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5v
ZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJE
YXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSopOwotCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmKTsKLQogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29y
a2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI5MSw2ICsyODAsNyBAQCBwcml2
YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
IAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CkBAIC0zMzksMTkgKzMyOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7Ci0gICAgc3RhdGljIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCk7Ci0KLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBu
b2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSop
OwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIGRpZFJl
bW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChF
bGVtZW50Kik7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7Ci0gICAg
dm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKENoYXJhY3RlckRhdGEqKTsKLQotICAgIHZv
aWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmKTsKKyAg
ICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IEtVUkwmKTsKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OwpAQCAtMzYwLDggKzMzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
YXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsK
ICNlbmRpZgogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50
OwotCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9j
bGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwpAQCAtNDI4LDkyICs0MDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShOb2Rl
KiBub2RlLCBOb2RlKiBwYXJlbnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKHBhcmVudCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxJ
bnNlcnRET01Ob2RlSW1wbChub2RlLCBwYXJlbnQpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUobm9kZSkpCi0gICAgICAg
IGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEluc2VydERPTU5vZGVJbXBsKG5vZGUpOwotI2VuZGlm
Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2Rl
KE5vZGUqIG5vZGUpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKG5vZGUpKSB7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxSZW1vdmVET01O
b2RlSW1wbChub2RlKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkUmVtb3ZlRE9N
Tm9kZUltcGwobm9kZSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGVsZW1lbnQpKQotICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsTW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0j
ZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KiBlbGVtZW50KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yTm9kZShlbGVtZW50KSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlk
TW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqIGNo
YXJhY3RlckRhdGEpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKGNoYXJhY3RlckRhdGEpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWRJbXBsKGNoYXJhY3RlckRhdGEpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmluc3RydW1lbnRXaWxs
U2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCh1cmwpOwotI2VuZGlmCi19Ci0KLWlubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ewotICAgIGlmICghc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgfHwgIWNvbnRleHQgfHwgIWNv
bnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
KTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFzX2lu
c3BlY3RvckNvbnRyb2xsZXJDb3VudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChub2RlLT5kb2N1bWVudCgpKTsKLX0KLQotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGRv
Y3VtZW50KTsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpbnNw
ZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBp
bnNwZWN0b3JDb250cm9sbGVyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250cm9sbGVyX2gpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIu
Y3BwCmluZGV4IGIyNWIyOGUuLjk5N2Y5Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFu
bmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69200</attachid>
            <date>2010-09-29 08:35:35 -0700</date>
            <delta_ts>2010-09-30 03:21:12 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41210</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5YTA0ZDU3Li42N2VmZGU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMDYsNiArMTEwNiw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3ZTY1ODEuLmQ2YjliOTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAK
KzIwMTAtMDktMjkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdCBJbnNwZWN0b3IgSW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2MTQKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBS
ZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlcklu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aENoaWxkUmVtb3ZhbEV2ZW50cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Ojp+SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvclBhZ2UpOgorCiAyMDEwLTA5LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDk4NWI1Y2UuLjBjNjJlZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTc5OSw2ICsxNzk5LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwK
KwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKKwlXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMmIyYzkyYy4uNGI4YTQ1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4OTcsNiArMTg5Nyw4
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCBlNTk1ZjNiLi4yYmJjMTY1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk5Nyw2ICs5OTcs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCisgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAgXApAQCAtMTg3MSw2
ICsxODcyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCisgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDEwNDQ1NS4uYjJjZjNiMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMCw2ICs2MzAsOCBAQAogCQkx
Q0Y2QkUxNTBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEzMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9OwogCQkxQ0ZBRTMy
MzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBs
aWJvYmpjLmR5bGliICovOyB9OwogCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0
QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi87
IH07CisJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBE
NjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi87
IH07CisJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsK
IAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAw
OUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTI0RjU0RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwICovOyB9OwogCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0
RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC02NTYyLDYgKzY1NjQsOCBAQAogCQkx
Q0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEw
RDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hDaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIw
MDUsNiArMTIwMDksOCBAQAogCQkJCTdBMEU3NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwICovLAogCQkJCTdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLywKIAkJCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCAqLywKKwkJCQkyMEQ2MjkyNDEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLywKKwkJCQkyMEQ2MjkyNTEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJOUYw
RDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovLAog
CQkJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Ki8sCiAJCQkJNDFGMDYyMDAwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNw
cCAqLywKQEAgLTIwNzk4LDYgKzIwODA0LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlB
QkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDRE
ODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTIw
RDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjMzMTEsNiArMjMzMTgsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkw
MDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyZGEzNzcxLi5jNDdiOWYzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCkBAIC05Myw2ICs5NCw4IEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgaW1wbCgp
LT5zZW5kKGVjKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMjM1NWQyYS4uMWFkZDI5MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNs
dWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCkBAIC0xMTQsNyAr
MTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0
dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9
IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoeG1sSHR0cFJl
cXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3QtPnVybCgpKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KHhtbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHhtbEh0dHBS
ZXF1ZXN0LT51cmwoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cCBiL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGJjOWVjNTYuLjBjYjI4NDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQo
U3RyaW5nSW1wbCogcHJldlZhbHVlKQogICAgICAgICBkaXNwYXRjaEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZlbnQsIHRy
dWUsIDAsIHByZXZWYWx1ZSwgbV9kYXRhKSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRF
dmVudCgpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTE4ZjZmZS4uODllYTdiNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQog
ICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShjaGlsZCwgdGhpcyk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwg
Y2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQu
Z2V0KCksIGNoaWxkKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBh
cnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hp
bAogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxk
LCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICBpbnNlcnRC
ZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLmdldCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZC5n
ZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICAvLyBBZGQgY2hpbGQgYWZ0ZXIgInByZXYi
LgpAQCAtNTg0LDcgKzU4NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIH0K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6Ondp
bGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5k
aWYKIAogICAgICAgICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAt
NjI2LDcgKzYyNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8v
IFVzZSBhcHBlbmRDaGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3
YW50IERPTSBtdXRhdGlvbiBldmVudHMpLgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShuZXdDaGlsZC5nZXQoKSwgdGhp
cyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1
bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGZvcmJpZEV2ZW50
RGlzcGF0Y2goKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxk
SW5zZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVu
KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRJbnNlcnRET01Ob2RlKGNoaWxkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEluc2VydERPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNoaWxkKTsKICNlbmRpZgogCiAgICAg
UmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIEFTU0VSVCghZXZl
bnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNo
aWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
YzQwODc5MC4uZmYwMzBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBA
IC01OTYsNyArNTk2LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7
CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQot
ICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3RyaW4KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogCiAgICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1l
OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMgPSAw
OwogICAgIH0KICAgICAKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRy
KHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBmMmVlMmMxLi41Y2M3NzQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RvcmFnZUFnZW50LmgiCkBAIC0x
MzcsOCArMTM4LDYgQEAgY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2Ny
aXB0c1BhbmVsID0gInNjcmlwdHMiOwogY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6UHJvZmlsZXNQYW5lbCA9ICJwcm9maWxlcyI7CiAKIAotc3RhdGljIGludCBjb25uZWN0
ZWRGcm9udGVuZENvdW50ID0gMDsKLQogY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2V0dGluZ05hbWUsICgiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQi
KSk7CkBAIC0xNTEsOCArMTUwLDYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hl
ZEhlaWdodFJhdGlvID0gMC43NWY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNv
bGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwaXJlQ29uc29sZU1l
c3NhZ2VzU3RlcCA9IDEwMDsKIAotdW5zaWduZWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQgPSAwOwotCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDog
bV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC0xNzgsNyAr
MTc1LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBh
Z2UpOwogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgICsrc19pbnNwZWN0b3JD
b250cm9sbGVyQ291bnQ7CiB9CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKQEAgLTE5MCw5ICsxODYsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVj
dG9yQ29udHJvbGxlcigpCiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7
CiAKLSAgICBBU1NFUlQoc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQpOwotICAgIC0tc19pbnNw
ZWN0b3JDb250cm9sbGVyQ291bnQ7Ci0KICAgICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50
cygpOwogCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNjb25uZWN0Q29udHJvbGxlcigpOwpA
QCAtNTM3LDkgKzUzMCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IG5ldyBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGlm
ICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkKKyAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1
cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7Ci0gICAgY29ubmVjdGVkRnJv
bnRlbmRDb3VudCsrOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmV1c2VGcm9udGVuZCgpCkBA
IC01OTcsOCArNTkwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcm9udGVuZC5jbGVhcigpOwogCi0gICAg
Y29ubmVjdGVkRnJvbnRlbmRDb3VudC0tOwotICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3Vu
dCkKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworICAg
IGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKICAgICAgICAg
U2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9u
cyhmYWxzZSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTIxMDMsNjQg
KzIwOTYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBhZ2UoKQogICAgIG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
UmVmcmVzaCh0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0
RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQotewotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnRE
YXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2Rl
LCBwYXJlbnQsICZldmVudERhdGEpKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYK
LX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRET01Ob2RlSW1wbChOb2Rl
KiBub2RlKQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRJ
bnNlcnRET01Ob2RlKG5vZGUpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxS
ZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYg
KG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7Ci0gICAgaWYgKG1fZG9tQWdl
bnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0
YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0g
ICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIo
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1v
ZGlmaWVkSW1wbChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQotewotICAgIGlmIChtX2Rv
bUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFj
dGVyRGF0YSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgS1VSTCYgdXJs
KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChtX2RlYnVnZ2Vy
QWdlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5ZTYz
ZjAxLi41NjE2ZTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKQEAgLTUxLDcgKzUwLDYgQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFz
cyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKQEAgLTE5OCwxNSArMTk2LDYgQEAgcHVibGljOgogICAgIHZvaWQg
bWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7
CiAgICAgdm9pZCBtYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmKTsKIAotICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5v
ZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJE
YXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSopOwotCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmKTsKLQogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29y
a2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI5MSw2ICsyODAsNyBAQCBwcml2
YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
IAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CkBAIC0zMzksMTkgKzMyOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7Ci0gICAgc3RhdGljIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCk7Ci0KLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBu
b2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSop
OwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIGRpZFJl
bW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChF
bGVtZW50Kik7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7Ci0gICAg
dm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKENoYXJhY3RlckRhdGEqKTsKLQotICAgIHZv
aWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmKTsKKyAg
ICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IEtVUkwmKTsKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OwpAQCAtMzYwLDggKzMzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
YXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsK
ICNlbmRpZgogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50
OwotCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9j
bGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwpAQCAtNDI4LDkyICs0MDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShOb2Rl
KiBub2RlLCBOb2RlKiBwYXJlbnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKHBhcmVudCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxJ
bnNlcnRET01Ob2RlSW1wbChub2RlLCBwYXJlbnQpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUobm9kZSkpCi0gICAgICAg
IGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEluc2VydERPTU5vZGVJbXBsKG5vZGUpOwotI2VuZGlm
Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2Rl
KE5vZGUqIG5vZGUpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKG5vZGUpKSB7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxSZW1vdmVET01O
b2RlSW1wbChub2RlKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkUmVtb3ZlRE9N
Tm9kZUltcGwobm9kZSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGVsZW1lbnQpKQotICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsTW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0j
ZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KiBlbGVtZW50KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yTm9kZShlbGVtZW50KSkKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlk
TW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqIGNo
YXJhY3RlckRhdGEpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JO
b2RlKGNoYXJhY3RlckRhdGEpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWRJbXBsKGNoYXJhY3RlckRhdGEpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmluc3RydW1lbnRXaWxs
U2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCh1cmwpOwotI2VuZGlmCi19Ci0KLWlubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ewotICAgIGlmICghc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgfHwgIWNvbnRleHQgfHwgIWNv
bnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
KTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFzX2lu
c3BlY3RvckNvbnRyb2xsZXJDb3VudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChub2RlLT5kb2N1bWVudCgpKTsKLX0KLQotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGRv
Y3VtZW50KTsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpbnNw
ZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBp
bnNwZWN0b3JDb250cm9sbGVyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250cm9sbGVyX2gpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mYmJjY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRlciA9IDA7
CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSwgTm9k
ZSogcGFyZW50KQoreworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGlmICgh
aW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9s
bGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAg
ICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9y
Q29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAgICAg
ICByZXR1cm47CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAg
IGlmIChkb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCAm
ZXZlbnREYXRhKSkKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFr
cG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWlu
c3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9k
b21BZ2VudC5nZXQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9kZSk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUlt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkK
K3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1
Z2dlckFnZW50LmdldCgpOworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJu
OworICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdl
bnQtPnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAg
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlw
ZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhh
c0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQq
IGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKKyAgICAg
ICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxlbWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zy
b250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgp
OworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0
KCk7CisgICAgaWYgKCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFr
T25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0YSkpCisgICAgICAgIGRl
YnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUs
IGV2ZW50RGF0YSk7CisjZW5kaWYKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVy
LT5oYXNGcm9udGVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFn
ZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisg
ICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQoreworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQorICAgICAgICBkb21BZ2VudC0+
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEpOworfQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEtVUkwmIHVybCkK
K3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnN0cnVtZW50V2lsbFNlbmRYTUxI
dHRwUmVxdWVzdCh1cmwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4MDRjZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0wLDAgKzEsMTY0IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZu
ZGVmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbl9oCisjZGVmaW5lIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbl9oCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JD
b250cm9sbGVyOworY2xhc3MgS1VSTDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5v
ZGUoRG9jdW1lbnQqLCBOb2RlKiwgTm9kZSogcGFyZW50KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJ
bnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1v
dmVET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlE
T01BdHRyKERvY3VtZW50KiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURP
TUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50Kik7CisgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0
YU1vZGlmaWVkKERvY3VtZW50KiwgQ2hhcmFjdGVyRGF0YSopOworCisgICAgc3RhdGljIHZvaWQg
aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IEtVUkwmKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CisgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CisgICAg
c3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0K
KyNlbmRpZgorCitwcml2YXRlOgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZv
aWQgd2lsbEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKiBub2Rl
LCBOb2RlKiBwYXJlbnQpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERPTU5vZGVJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURP
TU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIE5vZGUqKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEVs
ZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2Rp
ZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIENoYXJhY3RlckRhdGEqKTsKKworICAgIHN0
YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgY29uc3QgS1VSTCYpOworCisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqKTsKKworICAgIHN0
YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CisjZW5kaWYKK307CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIHdpbGxJbnNlcnRE
T01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlLCBwYXJlbnQpOworI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZEluc2Vy
dERPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOworI2VuZGlmCit9CisKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0
b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CisgICAgICAgIHdpbGxSZW1vdmVE
T01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlKTsKKyAgICAgICAgZGlkUmVtb3Zl
RE9NTm9kZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSk7CisgICAgfQorI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0
dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3
aWxsTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlE
T01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZGlkTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQorICAgICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNoYXJhY3RlckRhdGEpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dChjb250ZXh0KSkKKyAgICAgICAgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBj
b250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JQYWdlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2Uo
KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1
cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAg
cmV0dXJuIHBhZ2UgPyBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOworfQorI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCBiMjViMjhl
Li45OTdmOWNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAor
KysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69216</attachid>
            <date>2010-09-29 10:45:59 -0700</date>
            <delta_ts>2010-10-05 06:37:28 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41810</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDIxMDI0NGUuLjZlMzJkZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEwNiw2ICsxMTA2LDcgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisgICAgaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhYzJiYy4uOTAwNjg1NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAor
MjAxMC0wOS0yOSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3QgSW5zcGVjdG9yIEluc3RydW1lbnRhdGlvbiBBUEkgYXMgYSBjbGFzcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NjE0CisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2VuZCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKToKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJE
YXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNo
aWxkSW5zZXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVu
dHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5l
Y3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0
cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9k
ZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TW9kaWZ5RE9NQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRNb2RpZnlET01BdHRySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxI
dHRwUmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyb250ZW5kQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2Rp
ZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQ
YWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHA6CisKIDIwMTAtMDktMjkg
IERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQppbmRleCBjODBlOGVkLi5jNDkzYzIzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE3OTksNiAr
MTc5OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBc
CisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIFwKIAlXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhlNmFmNmIuLmRkMDE4MWEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODk3LDYg
KzE4OTcsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCcsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZTU5NWYzYi4uMmJiYzE2NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05OTcs
NiArOTk3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAorICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIFwKQEAg
LTE4NzEsNiArMTg3Miw3IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAorICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBmODFiNzdhLi4yYzQ3NmRlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTUyNzI5LDYgKzUyNzI5LDE0IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZDEwNDQ1NS4uYjJjZjNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYzMCw2ICs2MzAsOCBAQAogCQkxQ0Y2QkUxNTBFOUJCNDY3MDAyNUUxQ0QgLyog
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5oICovOyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2Jq
Yy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQkyMDBC
MTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDBCMTkwODExQzI3N0Q5MDBEQ0NE
M0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi87IH07CisJCTIwRDYyOTI2MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi87IH07CisJCTIwRDYyOTI3MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBF
IC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI0RjU0
RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1NEVBQTEwMUZFOTE0MDAw
QUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwICovOyB9OwogCQkyNEY1NEVBRDEwMUZF
OTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBB
cHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CkBAIC02NTYyLDYgKzY1NjQsOCBAQAogCQkxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyog
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGli
OyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NE
M0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRCcmVha3BvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMEQ2MjkyNTEyNTM2
OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3Jh
cHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNDQyQkJGODExOTRDOUQzMDBENDk0
NjkgLyogSGFzaENoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhc2hDaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVB
QTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMDUsNiArMTIwMDksOCBAQAogCQkJCTdBMEU3
NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovLAogCQkJ
CTdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLywK
IAkJCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bCAqLywKKwkJCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCAqLywKKwkJCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovLAogCQkJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4
OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmggKi8sCiAJCQkJNDFGMDYyMDAwRjVGMEI2NjAw
QTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNwcCAqLywKQEAgLTIwNzk4LDYgKzIwODA0LDcg
QEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjMzMTEsNiArMjMz
MTgsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUw
MEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTIwRDYyOTI2MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApp
bmRleCAyZGEzNzcxLi5jNDdiOWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgi
CiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9t
LmgiCkBAIC05Myw2ICs5NCw4IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVj
U3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgp
LT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkKICAgICAgICAgaW1wbCgpLT5zZW5kKGVjKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXgg
MjM1NWQyYS4uMWFkZDI5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRl
ICJWOERPTUZvcm1EYXRhLmgiCkBAIC0xMTQsNyArMTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhN
TEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdp
bGxTZW5kWE1MSHR0cFJlcXVlc3QoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgeG1sSHR0cFJlcXVlc3QtPnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KHhtbEh0dHBSZXF1ZXN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHhtbEh0dHBSZXF1ZXN0LT51cmwoKSk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuY3BwCmluZGV4IGJjOWVjNTYuLjBjYjI4NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDaGFyYWN0
ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogcHJldlZhbHVlKQogICAg
ICAgICBkaXNwYXRjaEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
Q2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZlbnQsIHRydWUsIDAsIHByZXZWYWx1ZSwgbV9kYXRhKSk7
CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKHRoaXMp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRv
Y3VtZW50KCksIHRoaXMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTE4
ZjZmZS4uODllYTdiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
KysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIklubGlu
ZVRleHRCb3guaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTE1NSw3ICsxNTUs
NyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0
RE9NTm9kZShjaGlsZCwgdGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKICAg
ICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0KCksIGNoaWxkKTsKQEAgLTIyNiw3ICsy
MjYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbAogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0
LT5nZXQoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRy
b2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhp
cyk7CiAjZW5kaWYKIAogICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hp
bGQpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAg
IEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxk
LmdldCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5z
ZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAg
ICAgICAvLyBBZGQgY2hpbGQgYWZ0ZXIgInByZXYiLgpAQCAtNTg0LDcgKzU4NCw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlKGNoaWxkLCB0aGlz
KTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShk
b2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAogICAgICAgICAvLyBBcHBlbmQgY2hp
bGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICBB
U1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8vIFVzZSBhcHBlbmRDaGlsZCBpZiB5b3UgbmVl
ZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERPTSBtdXRhdGlvbiBldmVudHMpLgog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5z
ZXJ0RE9NTm9kZShuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhp
cyk7CiAjZW5kaWYKIAogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKQEAgLTEwMDEsNyArMTAw
MSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAg
QVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRET01Ob2RlKGNoaWxkKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoY2hpbGQtPmRvY3Vt
ZW50KCksIGNoaWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKQEAg
LTEwMzcsNyArMTAzNyw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KE5vZGUqIGNoaWxkKQogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92
ZURPTU5vZGUoY2hpbGQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92
ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNoaWxkKTsKICNlbmRpZgogCiAgICAgUmVmUHRy
PE5vZGU+IGMgPSBjaGlsZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzQwODc5MC4uZmYwMzBiYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1
dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHIodGhp
cyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIo
ZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6
IG5hbWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRl
KCkpCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHIodGhpcyk7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1
bWVudCgpLCB0aGlzKTsKICNlbmRpZgogfQogCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBFbGVt
ZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSwKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5j
aHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIGRv
Y3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBF
bGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5
bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW4KIAogdm9pZCBFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCks
IHRoaXMpOwogCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNh
c2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2
b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgICAgICAgICAgZWMgPSAwOwogICAgIH0KICAgICAKLSAgICBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKHRoaXMpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmMmVlMmMxLi41Y2M3NzQ0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjYsNiArNjYsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yU3RvcmFnZUFnZW50LmgiCkBAIC0xMzcsOCArMTM4LDYgQEAgY29uc3QgY2hhciog
Y29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2NyaXB0c1BhbmVsID0gInNjcmlwdHMiOwogY29u
c3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6UHJvZmlsZXNQYW5lbCA9ICJwcm9m
aWxlcyI7CiAKIAotc3RhdGljIGludCBjb25uZWN0ZWRGcm9udGVuZENvdW50ID0gMDsKLQogY29u
c3QgU3RyaW5nJiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmdOYW1lKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2V0dGluZ05h
bWUsICgiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiKSk7CkBAIC0xNTEsOCArMTUwLDYgQEAgc3Rh
dGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvID0gMC43NWY7CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIAotdW5zaWdu
ZWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgPSAwOwot
CiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIElu
c3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDogbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCkBAIC0xNzgsNyArMTc1LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVu
dCkKIHsKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwogICAgIEFTU0VSVF9BUkcoY2xpZW50
LCBjbGllbnQpOwotICAgICsrc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQ7CiB9CiAKIEluc3Bl
Y3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKCkKQEAgLTE5MCw5ICsxODYsNiBA
QCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAKICAgICBkZWxl
dGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7CiAKLSAgICBBU1NFUlQoc19pbnNwZWN0b3JD
b250cm9sbGVyQ291bnQpOwotICAgIC0tc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQ7Ci0KICAg
ICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpOwogCiAgICAgbV9pbnNwZWN0b3JCYWNr
ZW5kLT5kaXNjb25uZWN0Q29udHJvbGxlcigpOwpAQCAtNTM3LDkgKzUzMCw5IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCA9IG5ldyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9u
dGVuZC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkK
KyAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCiAgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2Vw
dGlvbnModHJ1ZSk7Ci0gICAgY29ubmVjdGVkRnJvbnRlbmRDb3VudCsrOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cmV1c2VGcm9udGVuZCgpCkBAIC01OTcsOCArNTkwLDggQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9mcm9udGVuZC5jbGVhcigpOwogCi0gICAgY29ubmVjdGVkRnJvbnRlbmRDb3VudC0tOwot
ICAgIGlmICghY29ubmVjdGVkRnJvbnRlbmRDb3VudCkKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpoYXNGcm9udGVuZHMoKSkKICAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVy
ZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhmYWxzZSk7CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKQEAgLTIxMDMsNjQgKzIwOTYsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnJlbG9hZFBhZ2UoKQogICAgIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkt
PnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlUmVmcmVzaCh0cnVlKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9k
ZSogcGFyZW50KQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICgh
bV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5z
aG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJlbnQsICZldmVudERhdGEpKQotICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJF
dmVudFR5cGUsIGV2ZW50RGF0YSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBub2RlKQotewotICAgIGlmIChtX2RvbUFn
ZW50KQotICAgICAgICBtX2RvbUFnZW50LT5kaWRJbnNlcnRET01Ob2RlKG5vZGUpOwotfQotCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlSW1wbChOb2RlKiBub2Rl
KQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghbV9kZWJ1Z2dl
ckFnZW50IHx8ICFtX2RvbUFnZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVh
a09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRh
KTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5v
ZGVJbXBsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9t
QWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1f
ZG9tQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBldmVudERhdGE7Ci0gICAgaWYgKG1fZG9tQWdlbnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVN
b2RpZmljYXRpb24oZWxlbWVudCwgJmV2ZW50RGF0YSkpCi0gICAgICAgIG1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRh
KTsKLSNlbmRpZgotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0
dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAg
IG1fZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChDaGFyYWN0ZXJEYXRhKiBj
aGFyYWN0ZXJEYXRhKQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50
LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zdHJ1bWVudFdpbGxTZW5k
WE1MSHR0cFJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5ZTYzZjAxLi41NjE2ZTAyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
Q2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb29raWUu
aCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKQEAgLTUxLDcgKzUwLDYg
QEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKQEAgLTE5OCwx
NSArMTk2LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQo
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAgICAgdm9pZCBtYWluUmVzb3VyY2VGaXJl
ZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmKTsKIAotICAgIHN0
YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQg
d2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01B
dHRyKEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQq
KTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSop
OwotCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmKTsKLQogI2lmIEVOQUJMRShXT1JLRVJT
KQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29ya2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVk
IH07CiAKQEAgLTI5MSw2ICsyODAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIElu
c3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJp
ZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRP
YmplY3RzKCk7CkBAIC0zMzksMTkgKzMyOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEV2
YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJl
c3VsdCk7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCk7Ci0gICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JOb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCk7Ci0KLSAgICB2b2lk
IHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpOwotICAgIHZv
aWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSopOwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5v
ZGVJbXBsKE5vZGUqKTsKLSAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKLSAg
ICB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7Ci0gICAgdm9pZCBkaWRNb2Rp
ZnlET01BdHRySW1wbChFbGVtZW50Kik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJ
bXBsKENoYXJhY3RlckRhdGEqKTsKLQotICAgIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0
cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhN
TEh0dHBSZXF1ZXN0KGNvbnN0IEtVUkwmKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwpAQCAtMzYwLDgg
KzMzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsKICNlbmRpZgogCi0gICAgc3RhdGljIHVuc2ln
bmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50OwotCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQ
YWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtNDI4LDkyICs0
MDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCi17Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKHBhcmVudCkpCi0gICAg
ICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxJbnNlcnRET01Ob2RlSW1wbChub2RlLCBwYXJl
bnQpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZElu
c2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvck5vZGUobm9kZSkpCi0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZElu
c2VydERPTU5vZGVJbXBsKG5vZGUpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCi17Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKG5vZGUpKSB7Ci0gICAgICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXItPndpbGxSZW1vdmVET01Ob2RlSW1wbChub2RlKTsKLSAgICAgICAgaW5z
cGVjdG9yQ29udHJvbGxlci0+ZGlkUmVtb3ZlRE9NTm9kZUltcGwobm9kZSk7Ci0gICAgfQotI2Vu
ZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxNb2RpZnlET01B
dHRyKEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JOb2RlKGVsZW1lbnQpKQotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxs
TW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQotewot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yTm9kZShlbGVtZW50KSkKLSAg
ICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkTW9kaWZ5RE9NQXR0ckltcGwoZWxlbWVudCk7
Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2hhcmFjdGVy
RGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCi17Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKGNoYXJhY3RlckRhdGEpKQotICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGNoYXJhY3Rl
ckRhdGEpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIHVybCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXItPmluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCh1cmwp
OwotI2VuZGlmCi19Ci0KLWlubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIGlmICghc19pbnNwZWN0b3JDb250
cm9sbGVyQ291bnQgfHwgIWNvbnRleHQgfHwgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNv
bnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2Rl
KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFzX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVu
dChub2RlLT5kb2N1bWVudCgpKTsKLX0KLQotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250
cm9sbGVyX2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmJjY2U0Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisq
IG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzX2Zyb250ZW5kQ291bnRlciA9IDA7CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQoreworI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJv
bnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7
CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQo
KTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAgICAgICByZXR1cm47CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChkb21BZ2VudC0+c2hvdWxkQnJlYWtP
bk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZl
bnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
SW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFn
ZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKKyAgICAgICAgZG9t
QWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50
ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOworICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYg
KCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IGV2ZW50RGF0YTsKKyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFrT25Ob2RlUmVtb3Zh
bChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFt
KERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJv
bGxlci0+bV9kb21BZ2VudC5nZXQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5v
ZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5
RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxl
bWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBp
ZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOworICAgIGlmICghZGVidWdnZXJBZ2VudCkK
KyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3Bl
Y3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkb21BZ2VudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsK
KyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxl
bWVudCwgJmV2ZW50RGF0YSkpCisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShE
T01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CisjZW5kaWYKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNv
bnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCisgICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlE
T01BdHRyKGVsZW1lbnQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hh
cmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQoreworICAgIGlmICghaW5zcGVj
dG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFn
ZW50LmdldCgpKQorICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJh
Y3RlckRhdGEpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNvbnRy
b2xsZXItPmhhc0Zyb250ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnNwZWN0b3JDb250
cm9sbGVyLT5pbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdCh1cmwpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4MDRjZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0wLDAgKzEsMTY0IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bl9oCisjZGVmaW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbl9oCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2Ns
YXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xhc3MgS1VSTDsKK2Ns
YXNzIE5vZGU7CisKK2NsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKiwgTm9kZSog
cGFyZW50KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9k
ZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50KiwgTm9kZSop
OworICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKERvY3VtZW50KiwgRWxlbWVudCop
OworICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50Kik7
CisgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiwgQ2hhcmFj
dGVyRGF0YSopOworCisgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmKTsKKworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250
ZW5kQ291bnRlciArPSAxOyB9CisgICAgc3RhdGljIHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBz
X2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CisgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkg
eyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5vZGVJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpOworICAgIHN0YXRp
YyB2b2lkIGRpZEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBOb2RlKik7
CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0
ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRNb2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRWxlbWVudCopOworICAg
IHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciosIENoYXJhY3RlckRhdGEqKTsKKworICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgS1VSTCYpOwor
CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERv
Y3VtZW50Kik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXJGb3JQYWdlKFBhZ2UqKTsKKworICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7
CisjZW5kaWYKK307CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlLCBOb2RlKiBwYXJl
bnQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChk
b2N1bWVudCkpCisgICAgICAgIHdpbGxJbnNlcnRET01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBub2RlLCBwYXJlbnQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IG5vZGUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVu
dChkb2N1bWVudCkpCisgICAgICAgIGRpZEluc2VydERPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRy
b2xsZXIsIG5vZGUpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2Rl
KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKSB7CisgICAgICAgIHdpbGxSZW1vdmVET01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBub2RlKTsKKyAgICAgICAgZGlkUmVtb3ZlRE9NTm9kZUltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgbm9kZSk7CisgICAgfQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVt
ZW50KiBlbGVtZW50KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgZWxlbWVudCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxl
ckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkTW9kaWZ5RE9NQXR0ckltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgZWxlbWVudCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBjaGFy
YWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNoYXJhY3RlckRhdGEp
OworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgaW5zdHJ1
bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7
CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCitpbmxpbmUgSW5zcGVjdG9yQ29u
dHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu
bGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYg
KGhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBh
Z2UoZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkgOiAwOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyLmNwcAppbmRleCBiMjViMjhlLi45OTdmOWNkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69775</attachid>
            <date>2010-10-05 06:36:54 -0700</date>
            <delta_ts>2010-10-05 06:41:34 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>79365</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNjOWNmMS4uNTMzODYzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIwMTAtMTAtMDUgIFBhdmVsIFBvZGl2
aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBJbnNwZWN0b3Ig
SW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjYxNAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1
ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpldmFsdWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlm
eURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25J
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENo
YW5nZVhIUlJlYWR5U3RhdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0
ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRmlyZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1M
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0
cmlldmVUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omhhc0Zyb250ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OnJlbW92ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIpOgorCiAyMDEwLTEwLTA1ICBLd2FuZyBZdWwg
U2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEg
T3N6dHJvZ29uw6FjLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAKaW5kZXggYzQ3YjlmMy4uNDlkZmJhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbXBsKCktPnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggZDMxOGNiYi4uMTJjMGMwNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJI
VE1MUGx1Z0luRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTlBf
anNvYmplY3QuaCIKQEAgLTE0MiwxOSArMTQyLDEzIEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
CiAKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBtX2ZyYW1lOwogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IG1fZnJhbWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIDogMCkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEV2YWx1YXRlU2NyaXB0KHNvdXJj
ZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgp
KTsKIAogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAg
IENvbXBsZXRpb24gY29tcCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUoZXhlYywg
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIGpzU291cmNl
Q29kZSwgc2hlbGwpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRF
dmFsdWF0ZVNjcmlwdCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBjb29raWUpOwogCiAgICAgLy8gRXZhbHVhdGluZyB0
aGUgSmF2YVNjcmlwdCBjb3VsZCBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVhbGxvY2F0ZWQKICAg
ICAvLyBzbyB3ZSBzdGFydCB0aGUga2VlcCBhbGl2ZSB0aW1lciBoZXJlLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNGJkNGI0Mi4uODBiZjY4MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBmNjUzNWFhLi5l
ZjcyYjc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKQEAgLTM3NiwxMCArMzc2LDcgQEAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlLCBOb2RlKiBub2QKIAogICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdl
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxs
RXZhbHVhdGVTY3JpcHQoc291cmNlLnVybCgpLmlzTnVsbCgpID8gU3RyaW5nKCkgOiBzb3VyY2Uu
dXJsKCkuc3RyaW5nKCksIHNvdXJjZS5zdGFydExpbmUoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlLnVybCgpLmlzTnVsbCgpID8gU3Ry
aW5nKCkgOiBzb3VyY2UudXJsKCkuc3RyaW5nKCksIHNvdXJjZS5zdGFydExpbmUoKSk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CiAgICAgewpAQCAtNDE0LDEwICs0MTEsNyBA
QCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2UsIE5vZGUqIG5vZAogICAgIFBsYXRmb3JtQnJpZGdlOjp0cmFjZUV2ZW50
RW5kKCJ2OC5ydW4iLCBub2RlLCAiIik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2ZyYW1l
LT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDAp
Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEV2YWx1YXRlU2NyaXB0KCk7Ci0jZW5kaWYKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIGNv
b2tpZSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTA1LDMzICs0OTksMjMgQEAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiwgdjgKICAgICAgICAgLy8gZXhlY3V0aW9uIGZpbmlzaHMgYmVmb3Jl
IGZpcmluZyB0aGUgdGltZXIuCiAgICAgICAgIG1fZnJhbWUtPmtlZXBBbGl2ZSgpOwogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSA/IG1fZnJhbWUtPnBhZ2UoKTogMDsKLSAg
ICAgICAgaWYgKGluc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlNjcmlwdE9yaWdpbiBvcmlnaW4gPSBm
dW5jdGlvbi0+R2V0U2NyaXB0T3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHJlc291
cmNlTmFtZSgidW5kZWZpbmVkIik7Ci0gICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAx
OwotICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLlJlc291cmNlTmFtZSgpLklzRW1wdHkoKSkg
ewotICAgICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcob3Jp
Z2luLlJlc291cmNlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGZ1
bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVyKCkgKyAxOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2FsbEZ1bmN0aW9uKHJlc291cmNlTmFt
ZSwgbGluZU51bWJlcik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBpbnNw
ZWN0ZWRQYWdlID0gMDsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSA9IDA7CisgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kcygpKSB7CisgICAgICAgICAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbiA9IGZ1bmN0aW9u
LT5HZXRTY3JpcHRPcmlnaW4oKTsKKyAgICAgICAgICAgIFN0cmluZyByZXNvdXJjZU5hbWUoInVu
ZGVmaW5lZCIpOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAxOworICAgICAgICAgICAg
aWYgKCFvcmlnaW4uUmVzb3VyY2VOYW1lKCkuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2VOYW1lID0gdG9XZWJDb3JlU3RyaW5nKG9yaWdpbi5SZXNvdXJjZU5hbWUoKSk7Cisg
ICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVy
KCkgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIHJlc291cmNlTmFtZSwgbGlu
ZU51bWJlcik7CiAgICAgICAgIH0KLSNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKIAogICAg
ICAgICBtX3JlY3Vyc2lvbisrOwogICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbChyZWNl
aXZlciwgYXJnYywgYXJncyk7CiAgICAgICAgIG1fcmVjdXJzaW9uLS07CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgICAgICBpZiAoaW5zcGVjdGVkUGFnZSkKLSAgICAgICAgICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZENhbGxGdW5jdGlvbigpOwotI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVDVE9SKQotCisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIGNvb2tp
ZSk7CiAgICAgfQogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNh
YmxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcAppbmRleCAxYWRkMjkyLi44YWIzYWRhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTE0
LDcgKzExNCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBJTkNfU1RBVFMoIkRPTS5Y
TUxIdHRwUmVxdWVzdC5zZW5kKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVl
c3QgPSBWOFhNTEh0dHBSZXF1ZXN0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
eG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3Qt
PnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJl
cXVlc3QoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJl
cXVlc3QtPnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyMTkyZjExLi5iZDI5MDMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC04OCw3ICs4OCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IkltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgpAQCAtMTQ2MCwxMCArMTQ2MCw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAobV9p
blN0eWxlUmVjYWxjKQogICAgICAgICByZXR1cm47IC8vIEd1YXJkIGFnYWluc3QgcmUtZW50cmFu
Y3kuIC1kd2gKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAg
ICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSh0aGlzKTsKIAogICAgIG1faW5TdHlsZVJlY2Fs
YyA9IHRydWU7CiAgICAgc3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKTsKQEAgLTE1MTgsMTAg
KzE1MTUsNyBAQCBiYWlsX291dDoKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAgIH0KIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZSh0aGlzLCBjb29raWUpOwogfQogCiB2b2lk
IERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKQEAgLTQ2ODUsMTggKzQ2NzksNiBAQCBi
b29sIERvY3VtZW50Ojppc1hIVE1MTVBEb2N1bWVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50KiBEb2N1bWVudDo6aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0IAotewotICAgIHJldHVybiBwYWdlKCkgPyBwYWdl
KCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDA7Ci19Ci0KLUluc3BlY3RvckNvbnRyb2xs
ZXIqIERvY3VtZW50OjppbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgCi17Ci0gICAgcmV0dXJu
IHBhZ2UoKSA/IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKLX0KLSNlbmRpZgot
ICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9y
dCBmbGFncykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDM3MjA5MGMuLjJlYWFhNGIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtODgsNyAr
ODgsNiBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7Ci1jbGFzcyBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7
CiBjbGFzcyBKU05vZGU7CkBAIC00ODAsMTAgKzQ3OSw2IEBAIHB1YmxpYzoKICAgICBGcmFtZSog
ZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCiAgICAgUGFn
ZSogcGFnZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIFNldHRpbmdzKiBzZXR0aW5ncygp
IGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OyAvLyBjYW4g
YmUgTlVMTAotICAgIHZpcnR1YWwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlcigpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDY4NjY2YTAuLjFmZmZhMDMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjAy
LDcgKzI2MDIsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IHBycEV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRvdygpOwogICAg
IH0KIAotICAgIGludCBpbnN0cnVtZW50YXRpb25Db29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCAqZXZlbnQsIHRh
cmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0b3JzKTsKKyAgICBpbnQgaW5zdHJ1bWVu
dGF0aW9uQ29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dChkb2N1bWVudCgpLCAqZXZlbnQsIHRhcmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0
b3JzKTsKIAogICAgIC8vIEdpdmUgdGhlIHRhcmdldCBub2RlIGEgY2hhbmNlIHRvIGRvIHNvbWUg
d29yayBiZWZvcmUgRE9NIGV2ZW50IGhhbmRsZXJzIGdldCBhIGNyYWNrLgogICAgIHZvaWQqIGRh
dGEgPSBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CkBAIC0yNjg1LDcgKzI2
ODUsNyBAQCBkb25lRGlzcGF0Y2hpbmc6CiAKIGRvbmVXaXRoRGVmYXVsdDoKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudERpZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQo
KSwgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsKIAog
ICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2MzBiNmFhLi5kNjY4ZDVlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNiwxNSArMzYs
MTIgQEAKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFRyZWVC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw5ICsyMDcsMTIgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAg
ICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUgRG9j
dW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKIAotICAg
IC8vIFdlIHRlbGwgdGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgYWJvdXQgZXZlcnkgcHVtcCwg
ZXZlbiBpZiB3ZQorICAgIC8vIFdlIHRlbGwgdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBh
Ym91dCBldmVyeSBwdW1wLCBldmVuIGlmIHdlCiAgICAgLy8gZW5kIHVwIHB1bXBpbmcgbm90aGlu
Zy4gIEl0IGNhbiBmaWx0ZXIgb3V0IGVtcHR5IHB1bXBzIGl0c2VsZi4KLSAgICB3aWxsUHVtcExl
eGVyKCk7CisgICAgLy8gRklYTUU6IG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgpIGlzIG9ubHkg
YWNjdXJhdGUgaWYgd2UKKyAgICAvLyBlbmQgdXAgcGFyc2luZyB0aGUgd2hvbGUgYnVmZmVyIGlu
IHRoaXMgcHVtcC4gIFdlIHNob3VsZCBwYXNzIGhvdworICAgIC8vIG11Y2ggd2UgcGFyc2VkIGFz
IHBhcnQgb2YgZGlkV3JpdGVIVE1MIGluc3RlYWQgb2Ygd2lsbFdyaXRlSFRNTC4KKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3VtZW50KCksIG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgp
LCBtX3Rva2VuaXplci0+bGluZU51bWJlcigpKTsKIAogICAgIEhUTUxQYXJzZXJTY2hlZHVsZXI6
OlB1bXBTZXNzaW9uIHNlc3Npb247CiAgICAgLy8gRklYTUU6IFRoaXMgbG9vcCBib2R5IGhhcyBp
cyBub3cgdG9vIGxvbmcgYW5kIG5lZWRzIGNsZWFudXAuCkBAIC0yNTYsMjYgKzI1Niw3IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2Rl
KQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCk7CiAgICAgfQogCi0gICAgZGlkUHVt
cExleGVyKCk7Ci19Ci0KLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp3aWxsUHVtcExleGVyKCkK
LXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIC8vIEZJWE1FOiBtX2lucHV0LmN1cnJlbnQo
KS5sZW5ndGgoKSBpcyBvbmx5IGFjY3VyYXRlIGlmIHdlCi0gICAgLy8gZW5kIHVwIHBhcnNpbmcg
dGhlIHdob2xlIGJ1ZmZlciBpbiB0aGlzIHB1bXAuICBXZSBzaG91bGQgcGFzcyBob3cKLSAgICAv
LyBtdWNoIHdlIHBhcnNlZCBhcyBwYXJ0IG9mIGRpZFdyaXRlSFRNTCBpbnN0ZWFkIG9mIHdpbGxX
cml0ZUhUTUwuCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxXcml0ZUhUTUwobV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCksIG1fdG9rZW5p
emVyLT5saW5lTnVtYmVyKCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpkaWRQdW1wTGV4ZXIoKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFdyaXRlSFRNTChtX3Rv
a2VuaXplci0+bGluZU51bWJlcigpKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkV3JpdGVIVE1MKGRvY3VtZW50KCksIG1fdG9rZW5pemVyLT5saW5lTnVtYmVyKCks
IGNvb2tpZSk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpoYXNJbnNlcnRpb25Qb2lu
dCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
IGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBlNjVhNTgy
Li5kOTYyNWYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTEwMyw5ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKLSAgICB2
b2lkIHdpbGxQdW1wTGV4ZXIoKTsKLSAgICB2b2lkIGRpZFB1bXBMZXhlcigpOwotCiAgICAgZW51
bSBTeW5jaHJvbm91c01vZGUgewogICAgICAgICBBbGxvd1lpZWxkLAogICAgICAgICBGb3JjZVN5
bmNocm9ub3VzLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggZmI1NzY4YS4uM2ZmODBhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsOCArNjUsNiBAQCBzdGF0
aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RE9NV2luZG93KiB3aW5kb3csCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
c2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAg
ICAgIHJldHVybjsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVi
dWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtODAsOCArNzksNiBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlYwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0
RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9k
ZSogbm9kZSkKIHsKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkp
Ci0gICAgICAgIHJldHVybjsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKICAgICAgICAgZG9tQWdlbnQt
PmRpZEluc2VydERPTU5vZGUobm9kZSk7CiB9CkBAIC04OSw4ICs4Niw2IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURP
TU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIE5vZGUq
IG5vZGUpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKCFpbnNw
ZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CiAgICAgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwNSw4ICsxMDAsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlYwogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsK
ICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxl
ci0+bV9kb21BZ2VudC5nZXQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUo
bm9kZSk7CiB9CkBAIC0xMTQsOCArMTA3LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3QKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxlbWVudCogZWxlbWVudCkKIHsK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoIWluc3BlY3RvckNvbnRy
b2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsKICAgICBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dl
ckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTMwLDI3ICsxMjEsODYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxN
b2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWMKIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CiAg
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZG9tQWdlbnQuZ2V0KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVs
ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0
YU1vZGlmaWVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBD
aGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogewotICAgIGlmICghaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJuOwogICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgp
KQogICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEp
OwogfQogCi1pbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbERpc3Bh
dGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNv
bnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQo
KTsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
aW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkQnJlYWtPblhNTEh0dHBSZXF1ZXN0KHVybCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInR5
cGUiLCAiWEhSIik7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAg
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50
VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+
bV90aW1lbGluZUFnZW50LmdldCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdCh1cmwpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKK3sKKyAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNv
bnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludCB0aW1lcklkKQoreworICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxl
ci0+bV90aW1lbGluZUFnZW50LmdldCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1v
dmVUaW1lcih0aW1lcklkKTsKK30KKworCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUs
IGludCBzY3JpcHRMaW5lKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0TmFtZSwgc2Ny
aXB0TGluZSk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxG
dW5jdGlvbkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKIHsKLSAgICBpbnQgaW5zdHJ1bWVu
dGF0aW9uQ29va2llID0gMDsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29r
aWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDYWxsRnVuY3Rpb24oKTsKK30KIAotICAg
IGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJu
IGluc3RydW1lbnRhdGlvbkNvb2tpZTsKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBYTUxIdHRwUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
cGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpOworICAgIGlmICh0aW1lbGlu
ZUFnZW50ICYmIHJlcXVlc3QtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5yZWFkeXN0
YXRlY2hhbmdlRXZlbnQpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDaGFuZ2VYSFJS
ZWFkeVN0YXRlKHJlcXVlc3QtPnVybCgpLnN0cmluZygpLCByZXF1ZXN0LT5yZWFkeVN0YXRlKCkp
OworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFk
eVN0YXRlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENoYW5n
ZVhIUlJlYWR5U3RhdGUoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gPiYgYW5jZXN0b3JzKQorewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAg
IGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpKSB7CiAgICAgICAgIGlmIChpbnNwZWN0b3JD
b250cm9sbGVyLT5zaG91bGRCcmVha09uRXZlbnQoZXZlbnQudHlwZSgpKSkgewpAQCAtMTY1LDQ0
ICsyMTUsMTg2IEBAIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxs
RGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlCiAgICAgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVB
Z2VudC5nZXQoKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBldmVudEhhc0xpc3RlbmVycyhl
dmVudC50eXBlKCksIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKSkgewogICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgICAgIGluc3RydW1lbnRhdGlv
bkNvb2tpZSA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFn
ZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uQ29va2llOworICAg
IHJldHVybiAwOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dERpZERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIGludCBpbnN0cnVtZW50YXRpb25Db29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKIHsK
LSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJl
dHVybjsKLQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9k
ZWJ1Z2dlckFnZW50LmdldCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZU9u
TmV4dFN0YXRlbWVudCgpOwogI2VuZGlmCiAKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7
Cit9CisKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5k
b3cpCit7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Bl
Y3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKTsKLSAgICBpZiAodGltZWxpbmVB
Z2VudCAmJiB0aW1lbGluZUFnZW50LT5pZCgpID09IGluc3RydW1lbnRhdGlvbkNvb2tpZSkKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LnR5
cGUoKSkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQp
OworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlz
cGF0Y2hFdmVudCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbEV2YWx1YXRlU2NyaXB0KHVybCwgbGluZU51bWJlcik7CisgICAgICAg
IHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAot
ICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250
cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7Ci0gICAgaWYgKCFkZWJ1Z2dlckFnZW50KQot
ICAgICAgICByZXR1cm47Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVh
dGVTY3JpcHRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZh
bHVhdGVTY3JpcHQoKTsKK30KIAotICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxk
QnJlYWtPblhNTEh0dHBSZXF1ZXN0KHVybCkpCi0gICAgICAgIHJldHVybjsKK0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGlt
ZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludCB0aW1l
cklkKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7CisgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCk7CisgICAgICAgIHJldHVybiB0aW1l
bGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInR5cGUiLCAiWEhSIik7Ci0gICAgZXZlbnREYXRhLT5z
ZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5h
dGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUp
KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJlVGltZXIoKTsKK30KKworSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRy
b2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkgeworICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsTGF5b3V0KCk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExh
eW91dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0
b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRMYXlvdXQo
KTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5l
QWdlbnQuZ2V0KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVxdWVzdC0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbExvYWRYSFIocmVxdWVzdC0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
dGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZExvYWRYSFIoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBJbnRSZWN0JiByZWN0
KQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
cGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7CisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxQYWludChyZWN0KTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQt
PmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUGFpbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+ZGlkUGFpbnQoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5l
QWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRlU3R5
bGUoKTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxh
dGVTdHlsZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNw
ZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNh
bGN1bGF0ZVN0eWxlKCk7Cit9CisKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoaWRlbnRpZmllcik7CisgICAgICAg
IHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJv
bGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNl
RGF0YSgpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVs
aW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuIHRpbWVs
aW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29v
a2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
KTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSkK
K3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Bl
Y3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkgeworICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsV3JpdGVIVE1MKGxlbmd0aCwgc3RhcnRMaW5lKTsKKyAgICAgICAgcmV0dXJu
IHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0ZUhUTUwo
ZW5kTGluZSk7Cit9CisKKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgcmV0
dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCk7Cit9CisKK0luc3BlY3RvclRp
bWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFn
ZW50KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5n
ZXQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCAmJiB0aW1lbGluZUFnZW50LT5pZCgpID09IGNv
b2tpZSkKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQ7CisgICAgcmV0dXJuIDA7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKaW5kZXggNWI2NmEyZS4uZmU0MmY4NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogCkBAIC00MCw3ICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgTm9kZTsKK2Ns
YXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBYTUxI
dHRwUmVxdWVzdDsKKwordHlwZWRlZiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
OwogCiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gewogcHVibGljOgpAQCAtNTEsMTUg
KzU4LDQ0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3Vt
ZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChE
b2N1bWVudCosIENoYXJhY3RlckRhdGEqKTsKIAotICAgIHN0YXRpYyBpbnQgaW5zdHJ1bWVudFdp
bGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cqLCBOb2Rl
KiwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpOwotICAg
IHN0YXRpYyB2b2lkIGluc3RydW1lbnREaWREaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgaW50IGlu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHN0
YXRpYyB2b2lkIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nJiB1cmwpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBp
bnQgdGltZXJJZCk7CiAKLSAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1bmN0aW9uKEZyYW1l
KiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJl
cXVlc3QqIHJlcXVlc3QpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2lu
ZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFu
Y2VzdG9ycyk7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCosIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSos
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOworICAgIHN0YXRpYyB2b2lk
IGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5l
TnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSosIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgaW50IHRpbWVySWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0KEZyYW1l
Kik7CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVl
c3QqIHJlcXVlc3QpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFBhaW50KEZyYW1lKiwgY29u
c3QgSW50UmVjdCYgcmVjdCk7CisgICAgc3RhdGljIHZvaWQgZGlkUGFpbnQoRnJhbWUqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEo
RnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3Vt
ZW50KiwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CisgICAg
c3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWduZWQgaW50IGVuZExpbmUs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZENyZWF0ZWQoKSB7IHNfZnJvbnRlbmRD
b3VudGVyICs9IDE7IH0KICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQoKSB7IHNfZnJv
bnRlbmRDb3VudGVyIC09IDE7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZHMoKSB7IHJl
dHVybiBzX2Zyb250ZW5kQ291bnRlcjsgfQorI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBoYXNGcm9u
dGVuZHMoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC03MiwxNSAr
MTA4LDQ2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBjaGFyYWN0
ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBDaGFyYWN0ZXJEYXRhKik7
CiAKLSAgICBzdGF0aWMgaW50IGluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93KiwgTm9kZSosIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnN0cnVtZW50RGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGlu
dCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0
cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zdGFs
bFRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQsIGludCB0aW1lb3V0
LCBib29sIHNpbmdsZVNob3QpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOwogCi0gICAgc3RhdGljIHZvaWQgaW5z
dHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxDYWxsRnVuY3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcm
IHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVu
Y3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENo
YW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVz
dCogcmVxdWVzdCk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVu
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93
KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4g
PiYgYW5jZXN0b3JzKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50T25X
aW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogd2luZG93KTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUp
OworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRl
U2NyaXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBs
aW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVU
aW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5
b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMb2FkWEhS
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOworICAg
IHN0YXRpYyB2b2lkIGRpZExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgSW50
UmVjdCYgcmVjdCk7CisgICAgc3RhdGljIHZvaWQgZGlkUGFpbnRJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsK
KyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVz
b3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25l
ZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgZW5kTGlu
ZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKIAotICAgIHN0YXRpYyBJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZv
ckRvY3VtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShQYWdlKik7CiAKKyAgICBzdGF0
aWMgYm9vbCBoYXNGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3RhdGljIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250
cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKwogICAgIHN0YXRpYyBp
bnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0xMzUsMzMgKzIwMiwyNjQgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAKLWlubGluZSBpbnQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2Rl
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
dXJsKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB1cmwpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCB1cmwpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0
KSkKKyAgICAgICAgZGlkSW5zdGFsbFRpbWVySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
cklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lcklkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkUmVtb3ZlVGltZXJJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVySWQpOworI2VuZGlmCit9CisKKworaW5saW5lIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxDYWxsRnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSk7CisjZW5kaWYKKyAgICByZXR1
cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxs
RnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJh
bWUpKQorICAgICAgICBkaWRDYWxsRnVuY3Rpb25JbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNv
b2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCByZXF1ZXN0KTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCisgICAgICAgIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBh
bmNlc3RvcnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50V2lsbERpc3BhdGNoRXZl
bnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGV2ZW50LCB3aW5kb3csIG5vZGUsIGFuY2VzdG9y
cyk7CisgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgZXZlbnQsIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKTsKICNlbmRpZgogICAgIHJldHVy
biAwOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnREaWREaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGluc3RydW1lbnRhdGlv
bkNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIGluc3RydW1lbnREaWREaXNwYXRjaEV2ZW50SW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAgICAgICBkaWRE
aXNwYXRjaEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOwogI2VuZGlmCiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB1cmwpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJh
bWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgdXJsKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAg
ICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBldmVudCwgd2luZG93KTsKICNlbmRpZgorICAgIHJldHVybiAwOwogfQogCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhG
cmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLWlubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgICAgICBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikK
K3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkK
KyAgICAgICAgcmV0dXJuIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgdXJsLCBsaW5lTnVtYmVyKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KEZyYW1lKiBm
cmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlk
RXZhbHVhdGVTY3JpcHRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYK
K30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgaW50IHRpbWVySWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gd2lsbEZpcmVUaW1lckltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgdGltZXJJZCk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKwor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCisgICAgICAgIGRpZEZpcmVUaW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChGcmFtZSogZnJhbWUp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybiB3aWxsTGF5b3V0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyNl
bmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZExheW91dChGcmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JG
cmFtZShmcmFtZSkpCisgICAgICAgIGRpZExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gd2lsbExvYWRYSFJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVlc3QpOworI2Vu
ZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkTG9hZFhIUklt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFBhaW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJu
IHdpbGxQYWludEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgcmVjdCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQ
YWludChGcmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIGRpZFBhaW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworI2Vu
ZGlmCit9CisKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1
bWVudCkpCisgICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoaW5zcGVjdG9y
Q29udHJvbGxlcik7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50KiBkb2N1
bWVudCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqIGZyYW1l
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJl
c291cmNlRGF0YUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllcik7CisjZW5kaWYK
KyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlRGF0YUltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHdp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRp
ZmllciwgcmVzcG9uc2UpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJh
bWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAg
ICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29v
a2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChEb2N1bWVudCogZG9jdW1l
bnQsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCit7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisg
ICAgICAgIHJldHVybiB3aWxsV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBsZW5n
dGgsIHN0YXJ0TGluZSk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoRG9jdW1lbnQqIGRvY3VtZW50
LCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50
KGRvY3VtZW50KSkKKyAgICAgICAgZGlkV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JDb250cm9sbGVy
LCBlbmRMaW5lLCBjb29raWUpOworI2VuZGlmCit9CisKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewogICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlz
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CkBAIC0xNzAsMTQgKzQ2OCwy
NyBAQCBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaQogCiBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxl
ciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmIChoYXNGcm9udGVuZHMoKSkKKyAgICBp
ZiAoaGFzRnJvbnRlbmRzKCkgJiYgZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JD
b250cm9sbGVyRm9yUGFnZShkb2N1bWVudC0+cGFnZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAor
aW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
cGVjdG9yQ29udHJvbGxlckZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoaGFzRnJv
bnRlbmRzKCkgJiYgZnJhbWUpCisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyRm9y
UGFnZShmcmFtZS0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKwogaW5saW5lIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxl
ckZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSA6IDA7CisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChoYXNGcm9udGVuZChpbnNwZWN0b3JDb250cm9sbGVy
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDFkZDg2YWQuLjY0NWI2OTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC00NCwxNCAr
NDQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbnQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c19pbnN0YW5jZUNvdW50ID0gMDsKIGludCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
X2lkID0gMDsKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5k
KQogICAgICwgbV9pZCgrK3NfaWQpCiB7Ci0gICAgKytzX2luc3RhbmNlQ291bnQ7CiAgICAgU2Ny
aXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICBBU1NFUlQobV9mcm9udGVu
ZCk7CiB9CkBAIC03OCw4ICs3Niw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
R0MoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIHNpemVfdCBjb2xsCiAKIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKLSAgICBBU1NF
UlQoc19pbnN0YW5jZUNvdW50KTsKLSAgICAtLXNfaW5zdGFuY2VDb3VudDsKICAgICBTY3JpcHRH
Q0V2ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggOTk2OWExNC4uYmMxZTAyNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMzMsOSArMzMsNyBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNjcmlwdEdDRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMzAsOSArMTI4LDYgQEAg
cHVibGljOgogICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkR0MoZG91YmxlLCBkb3VibGUs
IHNpemVfdCk7CiAKLSAgICBzdGF0aWMgaW50IGluc3RhbmNlQ291bnQoKSB7IHJldHVybiBzX2lu
c3RhbmNlQ291bnQ7IH0KLSAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmll
dmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiBwcml2YXRlOgogICAgIHN0cnVjdCBUaW1l
bGluZVJlY29yZEVudHJ5IHsKICAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0
YSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlw
ZSB0eXBlKQpAQCAtMTU3LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJvbnRl
bmQqIG1fZnJvbnRlbmQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNv
cmRTdGFjazsKLSAgICBzdGF0aWMgaW50IHNfaW5zdGFuY2VDb3VudDsKKwogICAgIHN0YXRpYyBp
bnQgc19pZDsKICAgICBjb25zdCBpbnQgbV9pZDsKICAgICBzdHJ1Y3QgR0NFdmVudCB7CkBAIC0x
NzMsMTMgKzE2OCw2IEBAIHByaXZhdGU6CiAgICAgR0NFdmVudHMgbV9nY0V2ZW50czsKIH07CiAK
LWlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpy
ZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIGlmIChjb250
ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICByZXR1
cm4gMDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDkwYmMzMC4uNTQ5NmQ5
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzYsOCArMzYsNyBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00MDEsNDQgKzQwMCwyMCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Omluc3RhbmNlQ291bnQoKSkgewotICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKSA/IG1fZnJhbWUtPnBhZ2Uo
KS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsKLSAgICAgICAgaWYgKHRpbWVsaW5lQWdl
bnQpCi0gICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoaWRlbnRpZmllcigpLCByZXNwb25zZSk7Ci0gICAgfQotI2VuZGlmCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGlkZW50aWZpZXIoKSwg
cmVzcG9uc2UpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgaWYg
KGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSkgewotICAg
ICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gKG1fZnJhbWUgJiYg
bV9mcmFtZS0+cGFnZSgpKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIDogMDsKLSAgICAgICAgaWYgKHRpbWVsaW5lQWdlbnQpCi0gICAgICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIH0KLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9m
cmFtZS5nZXQoKSwgY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6aW5zdGFuY2VDb3VudCgpKSB7Ci0gICAgICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkp
ID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOwotICAgICAg
ICBpZiAodGltZWxpbmVBZ2VudCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNl
aXZlUmVzb3VyY2VEYXRhKGlkZW50aWZpZXIoKSk7Ci0gICAgfQotI2VuZGlmCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEobV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpKTsK
ICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGxlbmd0aFJlY2VpdmVkLCBmYWxzZSk7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
aW5zdGFuY2VDb3VudCgpKSB7Ci0gICAgICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpID8gbV9mcmFtZS0+cGFnZSgp
LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOwotICAgICAgICBpZiAodGltZWxpbmVBZ2Vu
dCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoKTsK
LSAgICB9Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZURhdGEobV9mcmFtZS5nZXQoKSwgY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1l
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L2xvYWRlci5jcHAKaW5kZXggM2Y2ZmFkMi4uOGYyNjJlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvbG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKQEAgLTE0OSwxMyArMTQ5LDcgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNv
dXJjZSogcmUKICAgICAgICAgaG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEhhbmRsZSBhc3luY2hyb25vdXNseSBzbyBlYXJseSBs
b3cgcHJpb3JpdHkgcmVxdWVzdHMgZG9uJ3QgZ2V0IHNjaGVkdWxlZCBiZWZvcmUgbGF0ZXIgaGln
aCBwcmlvcml0eSBvbmVzCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSkgewotICAgICAgICAgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogYWdlbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jKCktPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICAgICAgICAgIGlmIChhZ2VudCkKLSAgICAgICAg
ICAgICAgICBhZ2VudC0+ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UtPnVybCgp
KTsKLSAgICAgICAgfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvYygpLCByZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICBzY2hlZHVsZVNl
cnZlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggM2FjNmQxNS4u
MTQwMmRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTgxLDEwICs4MSw3IEBAIGludCBET01UaW1l
cjo6aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNj
aGVkdWxlZEFjdGlvCiAgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQg
aGFzIGZpcmVkIChET01UaW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBE
T01UaW1lcihjb250ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJldHJpZXZlKGNvbnRleHQpKQotICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRJbnN0YWxsVGltZXIodGltZXItPm1fdGltZW91dElkLCB0aW1l
b3V0LCBzaW5nbGVTaG90KTsKLSNlbmRpZiAgICAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEluc3RhbGxUaW1lcihjb250ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQs
IHNpbmdsZVNob3QpOwogCiAgICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKIH0KQEAgLTk3
LDEwICs5NCw3IEBAIHZvaWQgRE9NVGltZXI6OnJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50IHRpbWVvdXRJZCkKICAgICBpZiAodGltZW91dElkIDw9IDApCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpy
ZXRyaWV2ZShjb250ZXh0KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVtb3ZlVGltZXIo
dGltZW91dElkKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVt
b3ZlVGltZXIoY29udGV4dCwgdGltZW91dElkKTsKIAogICAgIGRlbGV0ZSBjb250ZXh0LT5maW5k
VGltZW91dCh0aW1lb3V0SWQpOwogfQpAQCAtMTEwLDEwICsxMDQsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVs
OwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJldHJpZXZlKGNvbnRl
eHQpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKG1fdGltZW91dElkKTsK
LSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQp
OwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYg
KGlzQWN0aXZlKCkpIHsKQEAgLTEyNSwxMCArMTE2LDkgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQo
KQogCiAgICAgICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMg
cG9pbnQsIGl0IGNhbiBkZWxldGUgdGhlIHRpbWVyLgogICAgICAgICBtX2FjdGlvbi0+ZXhlY3V0
ZShjb250ZXh0KTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJl
dHJpZXZlKGNvbnRleHQpKQotICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZVRpbWVy
KCk7Ci0jZW5kaWYKKworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVU
aW1lcihjb250ZXh0LCBjb29raWUpOworCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0
MCwxMCArMTMwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgYWN0aW9uLT5leGVj
dXRlKGNvbnRleHQpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJl
dHJpZXZlKGNvbnRleHQpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJlVGltZXIoKTsK
LSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRl
eHQsIGNvb2tpZSk7CiAKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaCBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCmluZGV4
IGMxZDhkOWUuLjRmYzZhYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCkBAIC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7Ci0KICAgICBj
bGFzcyBET01UaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDVlOGE1N2YuLjMx
MDBjMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSAiSURCRmFj
dG9yeS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZU1lZGlhLmgiCkBA
IC0xNTIyLDE1ICsxNTIyLDYgQEAgdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkK
ICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLUluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIERPTVdpbmRvdzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIAotewotICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lKCktPnBhZ2UoKS0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIGJv
b2wgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBwcnBUYXJnZXQpCiB7CiAgICAgUmVmUHRyPEV2ZW50VGFy
Z2V0PiBwcm90ZWN0ID0gdGhpczsKQEAgLTE1NDAsMjMgKzE1MzEsMTEgQEAgYm9vbCBET01XaW5k
b3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKICAgICBldmVu
dC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFSR0VUKTsKIAotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
c3RhbmNlQ291bnQoKSAmJiBmcmFtZSgpID8gZnJhbWUoKS0+cGFnZSgpIDogMDsKLSAgICBpZiAo
aW5zcGVjdGVkUGFnZSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LT50eXBlKCkpID8gaW5zcGVjdGVk
UGFnZS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMCkKLSAgICAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KCpldmVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGluc3BlY3RlZFBhZ2UgPSAwOwotICAgIH0KLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3coZnJhbWUoKSwgKmV2ZW50LCB0aGlzKTsKIAogICAgIGJvb2wg
cmVzdWx0ID0gZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LmdldCgpKTsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgaWYgKGluc3BlY3RlZFBhZ2UpCi0gICAgICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQotICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hFdmVu
dCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3coZnJhbWUoKSwgY29va2llKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKaW5kZXggNmZkMzc3NS4uY2E0NWY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNTcsNyArNTcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSGlzdG9y
eTsKICAgICBjbGFzcyBJREJGYWN0b3J5OwotICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ7CiAgICAgY2xhc3MgTG9jYXRpb247CiAgICAgY2xhc3MgU3R5bGVNZWRpYTsKICAgICBjbGFz
cyBOYXZpZ2F0b3I7CkBAIC00MDcsNyArNDA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogICAgICAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLSAgICAgICAg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCiAgICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICAgICAgS1VS
TCBtX3VybDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDM5OWEwMS4uMjk0MWYyMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAt
NjE3LDEwICs2MTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
KQogICAgIGlmIChpc1BhaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpICAgIAotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsTGF5b3V0KCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KG1fZnJhbWUuZ2V0
KCkpOwogCiAgICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgbV9sYXlvdXRSb290KSB7CiAgICAgICAg
IG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwpAQCAt
ODQwLDEwICs4MzcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
KQogICAgICAgICBBU1NFUlQobV9lbnF1ZXVlRXZlbnRzKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRM
YXlvdXQoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0
KG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CiAKICAgICBtX25lc3RlZExheW91dENvdW50LS07CiB9
CkBAIC0xOTMyLDEwICsxOTI2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICghZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlY3QpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFBhaW50KG1fZnJhbWUuZ2V0KCksIHJlY3QpOwogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIApAQCAtMjAwOSwxMCArMjAwMCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKICAgICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJy
ZW50UGFpbnRUaW1lU3RhbXAgPSAwOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQoKTsKLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQobV9mcmFtZS5nZXQoKSwgY29va2ll
KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvciBi
ZWhhdmlvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMmMwNWJlLi41ZTI3NDMzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0y
NSw5ICsyNSw5IEBACiAjaWZuZGVmIEZyYW1lVmlld19oCiAjZGVmaW5lIEZyYW1lVmlld19oCiAK
LSNpbmNsdWRlICJGcmFtZS5oIiAvLyBPbmx5IHVzZWQgYnkgRnJhbWVWaWV3OjppbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJQYWdlLmgiIC8vIE9ubHkgdXNlZCBieSBGcmFtZVZpZXc6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKQorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIgLy8gRm9yIFBhaW50QmVoYXZpb3IKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ29sb3I7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lVmlld1ByaXZhdGU7Ci1jbGFz
cyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CkBAIC0yOTMsMTAgKzI5Miw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOwogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2Vk
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdDsKLSNlbmRpZgotICAgIAogICAgIGJvb2wg
aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNj
cm9sbENvcm5lcigpOwpAQCAtMzg2LDEzICszODEsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBk
b3VibGUgc19kZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmc7CiB9Owog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLWlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBG
cmFtZVZpZXc6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSA6IDA7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RnJhbWVWaWV3X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCBmYjBhOWM5Li42MTRmMzJiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC00Niw3ICs0Niw2
IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtODQxLDEzICs4NDAsNiBA
QCBib29sIFBhZ2U6OmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1famF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LUluc3BlY3RvclRpbWVsaW5lQWdlbnQqIFBhZ2U6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPnRpbWVsaW5lQWdlbnQo
KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIFNwZWVjaElucHV0KiBQ
YWdlOjpzcGVlY2hJbnB1dCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmNzgzMGRiLi42ZmY2NGNmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYxLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhpc3RvcnlJdGVtOwogICAgIGNs
YXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwotICAg
IGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiAgICAgY2xhc3MgTWVkaWFDYW5TdGFydExp
c3RlbmVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwpAQCAtMjg5LDEw
ICsyODgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRVUkxzQXJlQWxs
b3dlZCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OwotI2VuZGlmCi0K
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIGEgY2VydGFpbiBudW1iZXIgb2YgZnJh
bWVzIGluIGEgcGFnZS4KICAgICAgICAgLy8gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSB1
cHBlciBib3VuZCwgYW5kIG90aGVyd2lzZSBtdXR1YWxseQogICAgICAgICAvLyByZWN1cnNpdmUg
ZnJhbWVzZXQgcGFnZXMgY2FuIHF1aWNrbHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtuZWVz
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmOWUyMzY3Li5m
MjFiNjcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTEwNTksMjYgKzEwNTksMTAgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IEdyYXBoaWNzQ29udGV4dCoKICAgICBBU1NFUlQoIW1fb3duaW5nTGF5ZXItPm1fdXNlZFRyYW5z
cGFyZW5jeSk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKLXsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsK
LSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwYWdlLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7Ci19Ci0jZW5kaWYKLQogLy8gVXAtY2FsbCBmcm9tIGNvbXBv
c2l0aW5nIGxheWVyIGRyYXdpbmcgY2FsbGJhY2suCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBJbnRS
ZWN0JiBjbGlwKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KG1fb3du
aW5nTGF5ZXItPnJlbmRlcmVyKCkpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUGFpbnQo
Y2xpcCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQobV9vd25pbmdMYXllci0+cmVu
ZGVyZXIoKS0+ZnJhbWUoKSwgY2xpcCk7CiAKICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2Ft
ZSByb290IGFzIGZvciBoaXQgdGVzdGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMKICAgICAvLyBj
YW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgpAQCAtMTA5OCwxMCArMTA4Miw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmIGNvCiAKICAgICBwYWludEludG9MYXllcihtX293bmluZ0xheWVy
LCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNl
LCByZW5kZXJlcigpKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KG1f
b3duaW5nTGF5ZXItPnJlbmRlcmVyKCkpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRQYWlu
dCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChtX293
bmluZ0xheWVyLT5yZW5kZXJlcigpLT5mcmFtZSgpLCBjb29raWUpOwogfQogCiBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c2hvd0RlYnVnQm9yZGVycygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggMDdhODE2ZC4uZWZiZTA3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0zMDMsMzUgKzMwMywxNyBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBib29sIGNhbGxUaW1lbGluZUFnZW50T25SZWFkeVN0YXRlQ2hhbmdlID0gdGltZWxpbmVBZ2Vu
dCAmJiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50
KTsKLSAgICBpZiAoY2FsbFRpbWVsaW5lQWdlbnRPblJlYWR5U3RhdGVDaGFuZ2UpCi0gICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKG1fdXJsLnN0cmluZygpLCBt
X3N0YXRlKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAKICAgICBpZiAobV9hc3luYyB8fCAobV9z
dGF0ZSA8PSBPUEVORUQgfHwgbV9zdGF0ZSA9PSBET05FKSkKICAgICAgICAgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUuZGlzcGF0Y2hFdmVudChYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSwgbV9zdGF0ZSA9PSBET05F
ID8gRmx1c2hQcm9ncmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOwogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoY2FsbFRpbWVsaW5lQWdlbnRPblJlYWR5U3RhdGVD
aGFuZ2UgJiYgKHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29v
a2llKTsKIAogICAgIGlmIChtX3N0YXRlID09IERPTkUgJiYgIW1fZXJyb3IpIHsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgICAgICB0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAgICAgYm9vbCBj
YWxsVGltZWxpbmVBZ2VudE9uTG9hZCA9IHRpbWVsaW5lQWdlbnQgJiYgaGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7Ci0gICAgICAgIGlmIChjYWxsVGltZWxpbmVBZ2Vu
dE9uTG9hZCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxMb2FkWEhSKG1fdXJsLnN0
cmluZygpKTsKLSNlbmRpZgotCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxl
LmRpc3BhdGNoRXZlbnQoWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCkpOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYg
KGNhbGxUaW1lbGluZUFnZW50T25Mb2FkICYmICh0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRMb2FkWEhSKCk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
Y29va2llKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>