<?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>52282</bug_id>
          
          <creation_ts>2011-01-12 01:52:54 -0800</creation_ts>
          <short_desc>Web Inspector: extract console related functionality into InspectorConsoleAgent</short_desc>
          <delta_ts>2011-01-14 06:57:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332969</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 01:52:54 -0800</bug_when>
    <thetext>Web Inspector: extract console related functionality into InspectorConsoleAgent. There are several methods and fields in InspectorController that deal with console messages and they should be moved into their own class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333677</commentid>
    <comment_count>1</comment_count>
      <attachid>78808</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-13 07:19:22 -0800</bug_when>
    <thetext>Created attachment 78808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333691</commentid>
    <comment_count>2</comment_count>
      <attachid>78808</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-13 08:03:18 -0800</bug_when>
    <thetext>Comment on attachment 78808
Patch

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


&gt; Source/WebCore/inspector/Inspector.idl:83
&gt;          [domain=Inspector] void clearConsoleMessages();

I think it also should be a member of Console domain.


other looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333699</commentid>
    <comment_count>3</comment_count>
      <attachid>78813</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-13 08:26:33 -0800</bug_when>
    <thetext>Created attachment 78813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333700</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-13 08:27:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 78808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78808&amp;action=review
&gt; 
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.idl:83
&gt; &gt;          [domain=Inspector] void clearConsoleMessages();
&gt; 
&gt; I think it also should be a member of Console domain.
&gt; 
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333710</commentid>
    <comment_count>5</comment_count>
      <attachid>78813</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-13 08:34:52 -0800</bug_when>
    <thetext>Comment on attachment 78813
Patch

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:252
&gt; +    addConsoleMessage: function(payload)

I know Ilya has been doing it earlier, but I think it is wrong. We should dispatch against private closure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333714</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 08:45:01 -0800</bug_when>
    <thetext>Attachment 78813 did not build on chromium:
Build output: http://queues.webkit.org/results/7597014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333727</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 09:02:45 -0800</bug_when>
    <thetext>Attachment 78813 did not build on gtk:
Build output: http://queues.webkit.org/results/7547013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333731</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-13 09:12:37 -0800</bug_when>
    <thetext>Attachment 78813 did not build on win:
Build output: http://queues.webkit.org/results/7576015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333772</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-13 10:24:45 -0800</bug_when>
    <thetext>Attachment 78813 did not build on qt:
Build output: http://queues.webkit.org/results/7621006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333806</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 11:05:42 -0800</bug_when>
    <thetext>Attachment 78813 did not build on chromium:
Build output: http://queues.webkit.org/results/7539017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333853</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 12:01:33 -0800</bug_when>
    <thetext>Attachment 78813 did not build on mac:
Build output: http://queues.webkit.org/results/7496015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333862</commentid>
    <comment_count>12</comment_count>
      <attachid>78813</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-13 12:06:49 -0800</bug_when>
    <thetext>Comment on attachment 78813
Patch

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

Please fix these two comments before landing.

&gt; Source/WebCore/inspector/Inspector.idl:79
&gt; +        [domain=Console] void setConsoleMessagesEnabled(in boolean enabled, out boolean newState);

I think this should belong to the &quot;Inspector&quot; domain. Upon this call, inspector controller should provide console agent with the InspectorFrontend instance.

&gt; Source/WebCore/inspector/InspectorConsoleAgent.cpp:188
&gt; +    m_state-&gt;setBoolean(InspectorState::consoleMessagesEnabled, enabled);

If you do what I suggest above, you would no longer need this property (it&apos;ll be m_frontend != 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333868</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-13 12:18:48 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 78813 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78813&amp;action=review

This patch broke every EWS bot. It might be better to post another iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334195</commentid>
    <comment_count>14</comment_count>
      <attachid>78813</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-14 01:58:50 -0800</bug_when>
    <thetext>Comment on attachment 78813
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorConsoleAgent.cpp:188

&gt; 
&gt; If you do what I suggest above, you would no longer need this property (it&apos;ll be m_frontend != 0).

This won&apos;t work since we need to restore console state after navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334242</commentid>
    <comment_count>15</comment_count>
      <attachid>78926</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-14 05:02:11 -0800</bug_when>
    <thetext>Created attachment 78926
Patch that I&apos;m going to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334286</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-14 06:57:57 -0800</bug_when>
    <thetext>Committed r75792</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78808</attachid>
            <date>2011-01-13 07:19:22 -0800</date>
            <delta_ts>2011-01-13 08:26:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52282-20110113181918.patch</filename>
            <type>text/plain</type>
            <size>57964</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjIxMmZiODYxMzc5YWY0NzZkMzRlOTY4MTdmY2YzYWM2
NjRjZjNjMy4uOGFmMWI0ZmQxYTkxMWU4NjdlMjZlMzkxNzUzMjRkMDMyMjdlYTQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTExNTIsNiArMTE1Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNWJmMTA3M2Y5ZWEwN2UxZmEwNWI3MGQ5ZGM5NzgwM2VlMDc5MmM1NS4uYmY5
OGI3NGM3MGU2Y2VjMmM1YmFkYWNiYjMxNzk2ZGQ1MmI0MDIxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc0IEBACisyMDExLTAxLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGV4dHJhY3QgY29uc29sZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgaW50byBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyMjgyCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG06
CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGVNZXNzYWdlOjp+Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3Rv
ckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjpjbGVhckNvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29uc29sZUFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFRpbWluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmlsaW5nTWVz
c2FnZVRvQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5p
c2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuYWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZS51cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAq
IHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0aW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGU6Omdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwQ29sbGFwc2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwRW5kKToKKyAgICAgICAgKiBwYWdl
L0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDEwLTEyLTI5ICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDQyNTFmYmVlMTcyN2Zi
ZjU1Y2M5ZGY1NDZlYzgzNjYxMjhlMWM1ZTAuLmVkYTM2MzM3NTUxNTc1MDM4MjM2NjMxYjlhYjQ0
NjQ3NGE1NzMwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTQ1LDYgKzE5NDUsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4
M2U1NWQ0NmQ3Yzk2OTM3M2E2MWFiODc1ZTkxOGUwNDgxNzVmNjkwLi40NGVhOWRmZWIxOWNhMTIw
ZWI5YWJhZDFmNDMzNjIxNzNhY2JjNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDAxLDYgKzIw
MDEsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCcsCisgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjdjZDU4MjI3MTIxNTA3NDU5ZDQ0NmZkZWY3MWM4NmE5
NmQ1NDA0OS4uYmJiOGE2YjgzNmNhOTY2NGI2YTkwZjYzMWI0ODZjYzVlY2JlNzA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTEwNDQsNiArMTA0NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBc
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgXApAQCAtMTkzMyw2ICsxOTM0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIFwKKyAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggYjhhZWEwZTQxNDA1
YWE3YjdhZDk3ZTdmMGI1ZTY3MGVjMTU3NGRhNi4uN2EyNzYxMDk1MDNlMDI4ZGYwNjk0ZGU4NWZi
YjQwYWMzMmViZDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTIwLDYgKzIwLDExIEBAICR0eXBlVHJhbnNmb3JteyJD
U1MifSA9IHsKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIsCiAgICAgImRv
bWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2Nzc0FnZW50IiwKIH07
CiskdHlwZVRyYW5zZm9ybXsiQ29uc29sZSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVj
dG9yQ29uc29sZUFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9j
b25zb2xlQWdlbnQiLAorfTsKICR0eXBlVHJhbnNmb3JteyJEZWJ1Z2dlciJ9ID0gewogICAgICJm
b3J3YXJkIiA9PiAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudCIsCiAgICAgImhlYWRlciIgPT4gIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAppbmRleCBiMjJhNmVmYTEwY2FmYmIxM2E1NDE5MmM0ODU2OTJjNjdkZTZm
ZjhhLi44ZDU2YTVhNDFiZTQ4ZjdlMTBhZjY0OWIzOGE1YWMzZjhmODc0YTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTgyLDYgKzgyLDEwIEBA
IENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VU
eXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjCiB7CiB9CiAKK0NvbnNvbGVNZXNzYWdlOjp+Q29uc29s
ZU1lc3NhZ2UoKQoreworfQorCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNj
cmlwdEhvc3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iaiA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5oCmluZGV4IDA2YTE3ZDRjNTc0OTlkYjY5ODhiZmIzNTM5OGNmNzVhMDU0YmNkMTguLjMx
MGFhOGViY2UwODU4YTlhMzAzNGQwMTE0ZDk4NmZjNmNkMjhlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUpOwogICAgIENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4pOwogICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgY29uc3QgU3RyaW5nJiByZXNw
b25zZVVybCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB+Q29uc29sZU1lc3NhZ2Uo
KTsKIAogICAgIHZvaWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCosIEluamVjdGVk
U2NyaXB0SG9zdCopOwogICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5p
ZGwKaW5kZXggZWQwMGNjNzZkMzY3OTI0MjU0ZmYzMzI5YTRhNjM2MGM3ZmY0OTJiNC4uYjY5NjU2
ZTNiZWJmMzg0ZjA0MDRhMmRjOWE4ZDQ0OGRhMDI0MzIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTc2LDEyICs3NiwxMiBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIC8vIENvbnNvbGUgQVBJCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLSAgICAgICAgW2Rv
bWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChpbiBib29sZWFu
IGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0YXRlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCBhZGRDb25zb2xlTWVzc2FnZShvdXQgT2JqZWN0IG1lc3NhZ2VPYmop
OwotICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIHVwZGF0ZUNvbnNvbGVN
ZXNzYWdlRXhwaXJlZENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICAgICAgW25v
dGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENv
dW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICAgICAgW2RvbWFpbj1Db25zb2xlXSB2
b2lkIHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkLCBvdXQgYm9v
bGVhbiBuZXdTdGF0ZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1Db25zb2xlXSB2b2lkIGFk
ZENvbnNvbGVNZXNzYWdlKG91dCBPYmplY3QgbWVzc2FnZU9iaik7CisgICAgICAgIFtub3RpZnks
IGRvbWFpbj1Db25zb2xlXSB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KG91
dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUNvbnNvbGVd
IHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudChvdXQgdW5zaWduZWQgbG9uZyBj
b3VudCk7CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGNsZWFyQ29uc29sZU1lc3Nh
Z2VzKCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3JdIHZvaWQgY29uc29sZU1l
c3NhZ2VzQ2xlYXJlZCgpOworICAgICAgICBbbm90aWZ5LCBkb21haW49Q29uc29sZV0gdm9pZCBj
b25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CiAKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAg
ICAgLy8gTmV0d29yayBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA1YTZmNTE4NzdjZGEyNmM2YWMwMmFi
NGQ2Njk2MWQ5M2E4MThkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xl
QWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiQ29uc29sZS5oIgor
I2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJPd25Q
dHIuaCIKKyNpbmNsdWRlICJQYXNzT3duUHRyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ29uc29sZU1l
c3NhZ2VzID0gMTAwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBpcmVDb25zb2xlTWVzc2Fn
ZXNTdGVwID0gMTAwOworCitJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVB
Z2VudChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JT
dGF0ZSogc3RhdGUpCisgICAgOiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVjdG9yQ29udHJv
bGxlcikKKyAgICAsIG1fc3RhdGUoc3RhdGUpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBt
X3ByZXZpb3VzTWVzc2FnZSgwKQorICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgw
KQoreworfQorCitJbnNwZWN0b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQo
KQoreworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0Q29uc29sZU1lc3NhZ2Vz
RW5hYmxlZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKQoreworICAgICpuZXdTdGF0ZSA9
IGVuYWJsZWQ7CisgICAgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChlbmFibGVkKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKK3sKKyAg
ICBtX2NvbnNvbGVNZXNzYWdlcy5jbGVhcigpOworICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdl
Q291bnQgPSAwOworICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKKyAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3Vw
KDAgLyogcmVsZWFzZSB0aGUgZ3JvdXAgaW4gYWxsIHNjcmlwdHMgKi8sICJjb25zb2xlIik7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNldCgpCit7CisgICAgY2xlYXJDb25z
b2xlTWVzc2FnZXMoKTsKKyAgICBtX3RpbWVzLmNsZWFyKCk7CisgICAgbV9jb3VudHMuY2xlYXIo
KTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgYWRkQ29u
c29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgYWRkQ29u
c29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjpzdGFydFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIC8vIEZvbGxvdyBG
aXJlYnVnJ3MgYmVoYXZpb3Igb2YgcmVxdWlyaW5nIGEgdGl0bGUgdGhhdCBpcyBub3QgbnVsbCBv
cgorICAgIC8vIHVuZGVmaW5lZCBmb3IgdGltaW5nIGZ1bmN0aW9ucworICAgIGlmICh0aXRsZS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90aW1lcy5hZGQodGl0bGUsIGN1cnJl
bnRUaW1lKCkgKiAxMDAwKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BU
aW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VOYW1lKQoreworICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVoYXZpb3Igb2Yg
cmVxdWlyaW5nIGEgdGl0bGUgdGhhdCBpcyBub3QgbnVsbCBvcgorICAgIC8vIHVuZGVmaW5lZCBm
b3IgdGltaW5nIGZ1bmN0aW9ucworICAgIGlmICh0aXRsZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT46Oml0ZXJhdG9yIGl0ID0gbV90aW1l
cy5maW5kKHRpdGxlKTsKKyAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZG91YmxlIHN0YXJ0VGltZSA9IGl0LT5zZWNvbmQ7CisgICAgbV90aW1lcy5y
ZW1vdmUoaXQpOworCisgICAgZG91YmxlIGVsYXBzZWQgPSBjdXJyZW50VGltZSgpICogMTAwMCAt
IHN0YXJ0VGltZTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IHRpdGxlICsgU3RyaW5nOjpmb3JtYXQo
IjogJS4wZm1zIiwgZWxhcHNlZCk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIHNvdXJjZU5hbWUpOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCkKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1ha2VTdHJpbmcodGl0bGUsICdA
Jywgc291cmNlSUQsICc6JywgU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOworICAgIEhhc2hN
YXA8U3RyaW5nLCB1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ID0gbV9jb3VudHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpbnQgY291bnQ7CisgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKQorICAg
ICAgICBjb3VudCA9IDE7CisgICAgZWxzZSB7CisgICAgICAgIGNvdW50ID0gaXQtPnNlY29uZCAr
IDE7CisgICAgICAgIG1fY291bnRzLnJlbW92ZShpdCk7CisgICAgfQorCisgICAgbV9jb3VudHMu
YWRkKGlkZW50aWZpZXIsIGNvdW50KTsKKworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
Zyh0aXRsZSwgIjogIiwgU3RyaW5nOjpudW1iZXIoY291bnQpKTsKKyAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOworfQorCit2b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQorewor
ICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6bW9uaXRvcmlu
Z1hIUikpCisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6IFwiIiAr
IHVybCArICJcIi4iLCBzZW5kTGluZU51bWJlciwgc2VuZFVSTCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKKyAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKKyAgICAg
ICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJj
ZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgaWRlbnRpZmllcikpOworICAgIH0KK30KKwordm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiOworICAgIGlmICghZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCisgICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENv
bnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZp
ZXIpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldENvbnNvbGVNZXNzYWdl
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5zcGVj
dG9yU3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQsIGVuYWJsZWQpOworICAgIGlmICghbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkKKyAgICAgICAgbV9mcm9udGVuZC0+dXBkYXRl
Q29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCk7
CisgICAgdW5zaWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKKyAgICAgICAg
bV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5pbmplY3RlZFNjcmlwdEhvc3QoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdl
PiBjb25zb2xlTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JDb250cm9sbGVyLT5l
bmFibGVkKCkpOworICAgIEFTU0VSVF9BUkcoY29uc29sZU1lc3NhZ2UsIGNvbnNvbGVNZXNzYWdl
KTsKKworICAgIGlmIChtX3ByZXZpb3VzTWVzc2FnZSAmJiBtX3ByZXZpb3VzTWVzc2FnZS0+aXNF
cXVhbChjb25zb2xlTWVzc2FnZS5nZXQoKSkpIHsKKyAgICAgICAgbV9wcmV2aW91c01lc3NhZ2Ut
PmluY3JlbWVudENvdW50KCk7CisgICAgICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3Bl
Y3RvclN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSAmJiBtX2Zyb250ZW5kKQorICAgICAg
ICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJv
bnRlbmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29s
ZU1lc3NhZ2UuZ2V0KCk7CisgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xl
TWVzc2FnZSk7CisgICAgICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRl
Ojpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSAmJiBtX2Zyb250ZW5kKQorICAgICAgICAgICAgbV9w
cmV2aW91c01lc3NhZ2UtPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbnNwZWN0b3JDb250
cm9sbGVyLT5pbmplY3RlZFNjcmlwdEhvc3QoKSk7CisgICAgfQorCisgICAgaWYgKCFtX2Zyb250
ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhpbXVtQ29uc29sZU1lc3NhZ2Vz
KSB7CisgICAgICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgKz0gZXhwaXJlQ29uc29s
ZU1lc3NhZ2VzU3RlcDsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMucmVtb3ZlKDAsIGV4cGly
ZUNvbnNvbGVNZXNzYWdlc1N0ZXApOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjU0Yjg0OTE4Y2E1
ODg0ODY1YjVlZGZmZDU5ZjliMjBhZTE0YzE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQ29uc29sZUFnZW50X2gKKyNkZWZpbmUg
SW5zcGVjdG9yQ29uc29sZUFnZW50X2gKKworI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCitjbGFzcyBDb25zb2xlTWVzc2FnZTsK
K2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKK2Ns
YXNzIEluc3BlY3RvclN0YXRlOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7
CitjbGFzcyBTY3JpcHRQcm9maWxlOworCitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBw
dWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9yU3RhdGUqKTsKKyAgICB+SW5zcGVjdG9yQ29u
c29sZUFnZW50KCk7CisKKyAgICB2b2lkIHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBl
bmFibGVkLCBib29sKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygp
OworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kKik7CisKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCk7CisKKyAgICB2b2lkIHN0YXJ0VGltaW5nKGNvbnN0IFN0cmluZyYg
dGl0bGUpOworICAgIHZvaWQgc3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU5hbWUpOworICAgIHZvaWQgY291bnQo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCk7CisKKyAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1l
c3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkU3RhcnRQcm9maWxp
bmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZv
aWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sKTsKKyAgICB2b2lkIGFkZENvbnNvbGVN
ZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlKTsKKworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBJbnNwZWN0
b3JTdGF0ZSogbV9zdGF0ZTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAg
ICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CisgICAgVmVjdG9yPE93blB0cjxD
b25zb2xlTWVzc2FnZT4gPiBtX2NvbnNvbGVNZXNzYWdlczsKKyAgICB1bnNpZ25lZCBtX2V4cGly
ZWRDb25zb2xlTWVzc2FnZUNvdW50OworICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9j
b3VudHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1lczsKK307CisKKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JDb25zb2xlQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCBlZTE1MzZmN2M3NjMyYWRmMDBhYmVmZDhlMTBhOTg3YjJm
NjhhNTZiLi4wOGZjMGQ2OWQyMTYwMTM5N2RhMDIxZjA2MjAzM2Q0ZTVjNWY0MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0z
NSw4ICszNSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNvbnNv
bGUuaCIKLSNpbmNsdWRlICJDb25zb2xlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgog
I2luY2x1ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtNjAsNiAr
NTgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01B
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKQEAgLTEzMiwyNiArMTMxLDIyIEBAIGNv
bnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlByb2ZpbGVzUGFuZWwgPSAicHJv
ZmlsZXMiOwogCiBjb25zdCB1bnNpZ25lZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkZWZhdWx0QXR0
YWNoZWRIZWlnaHQgPSAzMDA7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ29uc29s
ZU1lc3NhZ2VzID0gMTAwMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBpcmVDb25zb2xlTWVz
c2FnZXNTdGVwID0gMTAwOwotCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDogbV9pbnNwZWN0
ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9u
dGVuZChmYWxzZSkKICAgICAsIG1fY3NzQWdlbnQobmV3IEluc3BlY3RvckNTU0FnZW50KCkpCi0g
ICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCi0gICAgLCBtX3ByZXZpb3VzTWVz
c2FnZSgwKQorICAgICwgbV9zdGF0ZShuZXcgSW5zcGVjdG9yU3RhdGUoY2xpZW50KSkKICAgICAs
IG1fc2V0dGluZ3NMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKG5ldyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcih0aGlzKSkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRIb3N0KEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9j
b25zb2xlQWdlbnQobmV3IEluc3BlY3RvckNvbnNvbGVBZ2VudCh0aGlzLCBtX3N0YXRlLmdldCgp
KSkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fYXR0YWNoRGVidWdn
ZXJXaGVuU2hvd24oZmFsc2UpCiAgICAgLCBtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlVUkwo
ZmFsc2UpCiAgICAgLCBtX3Byb2ZpbGVyQWdlbnQoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3Jl
YXRlKHRoaXMpKQogI2VuZGlmCiB7Ci0gICAgbV9zdGF0ZSA9IG5ldyBJbnNwZWN0b3JTdGF0ZShj
bGllbnQpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAgICAgQVNTRVJUX0FSRyhjbGll
bnQsIGNsaWVudCk7CiB9CkBAIC0zMTMsODUgKzMwOCwxNSBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmhpZGVIaWdobGlnaHQoKQogICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChi
b29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKQotewotICAgICpuZXdTdGF0ZSA9IGVuYWJsZWQ7
Ci0gICAgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkK
LXsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjpjb25zb2xlTWVzc2Fn
ZXNFbmFibGVkLCBlbmFibGVkKTsKLSAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KQotICAgICAgICBtX2Zyb250
ZW5kLT51cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudChtX2V4cGlyZWRDb25zb2xlTWVz
c2FnZUNvdW50KTsKLSAgICB1bnNpZ25lZCBtZXNzYWdlQ291bnQgPSBtX2NvbnNvbGVNZXNzYWdl
cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgKytp
KQotICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5k
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2spCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2Us
IHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjaykpOwotfQotCi12b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQot
ewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlSUQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2Fn
ZSkKLXsKLSAgICBBU1NFUlQoZW5hYmxlZCgpKTsKLSAgICBBU1NFUlRfQVJHKGNvbnNvbGVNZXNz
YWdlLCBjb25zb2xlTWVzc2FnZSk7Ci0KLSAgICBpZiAobV9wcmV2aW91c01lc3NhZ2UgJiYgbV9w
cmV2aW91c01lc3NhZ2UtPmlzRXF1YWwoY29uc29sZU1lc3NhZ2UuZ2V0KCkpKSB7Ci0gICAgICAg
IG1fcHJldmlvdXNNZXNzYWdlLT5pbmNyZW1lbnRDb3VudCgpOwotICAgICAgICBpZiAobV9zdGF0
ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCkgJiYg
bV9mcm9udGVuZCkKLSAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRD
b3VudEluQ29uc29sZShtX2Zyb250ZW5kLmdldCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBt
X3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlLmdldCgpOwotICAgICAgICBtX2NvbnNv
bGVNZXNzYWdlcy5hcHBlbmQoY29uc29sZU1lc3NhZ2UpOwotICAgICAgICBpZiAobV9zdGF0ZS0+
Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCkgJiYgbV9m
cm9udGVuZCkKLSAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKG1f
ZnJvbnRlbmQuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fZnJvbnRlbmQgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGltdW1D
b25zb2xlTWVzc2FnZXMpIHsKLSAgICAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCAr
PSBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwOwotICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5y
ZW1vdmUoMCwgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCk7Ci0gICAgfQotfQotCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIHsKLSAgICBtX2NvbnNv
bGVNZXNzYWdlcy5jbGVhcigpOwotICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgPSAw
OwotICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKLSAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+
cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCgwIC8qIHJlbGVhc2UgdGhlIGdyb3VwIGluIGFsbCBz
Y3JpcHRzICovLCAiY29uc29sZSIpOworICAgIG1fY29uc29sZUFnZW50LT5jbGVhckNvbnNvbGVN
ZXNzYWdlcygpOwogICAgIGlmIChtX2RvbUFnZW50KQogICAgICAgICBtX2RvbUFnZW50LT5yZWxl
YXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICBtX2Zyb250
ZW5kLT5jb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c3RhcnRHcm91cChQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKLXsK
LSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdyb3Vw
TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0YWNrKSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewot
ICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIEVuZEdyb3Vw
TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCkpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1hcmtUaW1lbGluZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQoKSkKQEAgLTQ5NCw2
ICs0MTksOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAg
ICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKICAgICAgICAgbV90aW1lbGluZUFnZW50LT5yZXNldEZy
b250ZW5kUHJveHlPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiAKKyAgICBtX2NvbnNvbGVBZ2Vu
dC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSk7CisKICAgICAvLyBJbml0aWFsaXplIFdl
YiBJbnNwZWN0b3IgdGl0bGUuCiAgICAgbV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZCht
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOwog
CkBAIC01NzcsNiArNTA0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0
RnJvbnRlbmQoKQogICAgIG1fcHJvZmlsZXJBZ2VudC0+c2V0RnJvbnRlbmQoMCk7CiAgICAgbV9w
cm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyh0cnVlKTsKICNlbmRpZgor
ICAgIG1fY29uc29sZUFnZW50LT5zZXRGcm9udGVuZCgwKTsKIAogICAgIHJlbGVhc2VGcm9udGVu
ZExpZmV0aW1lQWdlbnRzKCk7CiAgICAgbV90aW1lbGluZUFnZW50LmNsZWFyKCk7CkBAIC03MjIs
OSArNjUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICAgICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmRpc2Nh
cmRJbmplY3RlZFNjcmlwdHMoKTsKICAgICAgICAgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKLQot
ICAgICAgICBtX3RpbWVzLmNsZWFyKCk7Ci0gICAgICAgIG1fY291bnRzLmNsZWFyKCk7CisgICAg
ICAgIG1fY29uc29sZUFnZW50LT5yZXNldCgpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpIHsKQEAgLTgxOCwzNyArNzQ0LDYg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRo
ZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgU3RyaW5nOjpudW1iZXIocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCks
ICcpJyk7Ci0gICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShPdGhl
ck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGlkZW50aWZpZXIpKTsKLSAgICB9
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAo
IWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSAiRmFp
bGVkIHRvIGxvYWQgcmVzb3VyY2UiOwotICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKS5pc0VtcHR5KCkpCi0gICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCk7Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZpZXIpKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2Vu
ZExpbmVOdW1iZXIpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjptb25pdG9yaW5nWEhS
KSkKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsgdXJs
ICsgIlwiLiIsIHNlbmRMaW5lTnVtYmVyLCBzZW5kVVJMKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjplbnN1cmVTZXR0aW5nc0xvYWRlZCgpCiB7CiAgICAgaWYgKG1fc2V0dGluZ3NM
b2FkZWQpCkBAIC0xMTE2LDE3ICsxMDExLDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWcKICAg
ICBtX3Byb2ZpbGVyQWdlbnQtPmFkZFByb2ZpbGUocHJwUHJvZmlsZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlRmluaXNo
ZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9w
cm9maWxlckFnZW50LT5hZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKHBycFByb2Zp
bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIG1f
cHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwpOwotfQotCi0KIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cHJvZmlsZXJBZ2VudC0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOwpAQCAtMTY1
NSw0MiArMTUzOSw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6b3BlbkluSW5zcGVjdGVk
V2luZG93KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdl
TG9jYXRpb24obWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdGcmFt
ZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVybCksICIiLCBmYWxzZSwgZmFsc2UpOwogfQogCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvdW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCi17Ci0gICAgU3RyaW5nIGlk
ZW50aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlELCAnOicsIFN0cmluZzo6
bnVtYmVyKGxpbmVOdW1iZXIpKTsKLSAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+OjppdGVy
YXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaW50IGNvdW50OwotICAg
IGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKLSAgICAgICAgY291bnQgPSAxOwotICAgIGVsc2Ug
ewotICAgICAgICBjb3VudCA9IGl0LT5zZWNvbmQgKyAxOwotICAgICAgICBtX2NvdW50cy5yZW1v
dmUoaXQpOwotICAgIH0KLQotICAgIG1fY291bnRzLmFkZChpZGVudGlmaWVyLCBjb3VudCk7Ci0K
LSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcodGl0bGUsICI6ICIsIFN0cmluZzo6bnVt
YmVyKGNvdW50KSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZUlEKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWluZyhjb25zdCBT
dHJpbmcmIHRpdGxlKQotewotICAgIG1fdGltZXMuYWRkKHRpdGxlLCBjdXJyZW50VGltZSgpICog
MTAwMCk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWluZyhjb25zdCBT
dHJpbmcmIHRpdGxlLCBkb3VibGUmIGVsYXBzZWQpCi17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIGRv
dWJsZT46Oml0ZXJhdG9yIGl0ID0gbV90aW1lcy5maW5kKHRpdGxlKTsKLSAgICBpZiAoaXQgPT0g
bV90aW1lcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91YmxlIHN0YXJ0
VGltZSA9IGl0LT5zZWNvbmQ7Ci0gICAgbV90aW1lcy5yZW1vdmUoaXQpOwotCi0gICAgZWxhcHNl
ZCA9IGN1cnJlbnRUaW1lKCkgKiAxMDAwIC0gc3RhcnRUaW1lOwotICAgIHJldHVybiB0cnVlOwot
fQotCiBJbmplY3RlZFNjcmlwdCBJbnNwZWN0b3JDb250cm9sbGVyOjppbmplY3RlZFNjcmlwdEZv
ck5vZGVJZChsb25nIGlkKQogewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCBmZWYyYTZkMzcwZDNkZmM4M2VmMzRlMzUzODA2OTI1YzM5
MDgyMWNjLi42MTgzOTZkNGFkYWEzNDZiZTc3ODEzOWJiNmRjYTc1MzYyY2VlOWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ1LDcg
KzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNs
YXNzIENoYXJhY3RlckRhdGE7Ci1jbGFzcyBDb25zb2xlTWVzc2FnZTsKIGNsYXNzIERhdGFiYXNl
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTU4LDYgKzU3LDcg
QEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKK2Ns
YXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OwogY2xh
c3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CkBA
IC0xNDEsMTEgKzE0MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldXNlRnJvbnRlbmQoKTsKICAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCi0gICAgdm9pZCBzZXRDb25zb2xlTWVzc2Fn
ZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwotICAgIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJik7CisgICAg
SW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnNvbGVBZ2VudC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKLSAg
ICBjb25zdCBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+JiBjb25zb2xlTWVzc2FnZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnNvbGVNZXNzYWdlczsgfQogCiAgICAgYm9vbCBzZWFyY2hp
bmdGb3JOb2RlSW5QYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CkBAIC0yMDQs
MjAgKzIwMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuSW5JbnNwZWN0ZWRXaW5kb3coY29u
c3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBib3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBvdmVybGF5
UmVjdCwgV2ViQ29yZTo6U2V0dGluZ3MqKSBjb25zdDsKIAotICAgIHZvaWQgY291bnQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCk7Ci0KLSAgICB2b2lkIHN0YXJ0VGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIGJv
b2wgc3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUmIGVsYXBzZWQpOwotCi0g
ICAgdm9pZCBzdGFydEdyb3VwKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxGcmFtZSwgYm9vbCBjb2xsYXBzZWQgPSBmYWxzZSk7Ci0g
ICAgdm9pZCBlbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotCiAgICAgdm9pZCBtYXJrVGltZWxpbmUoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdm9pZCBhZGRQcm9maWxl
RmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFkZFN0
YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgYm9vbCBpc1JlY29y
ZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldEN1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFs
c2UpOwogICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKSB7IHN0YXJ0VXNlckluaXRpYXRlZFByb2Zp
bGluZygpOyB9CkBAIC0yNzAsMTQgKzI1NywxMCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBJbmplY3RlZFNjcmlwdEhvc3Q7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAg
IHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKIAogICAg
IHZvaWQgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKIAogICAgIHZvaWQgZ2V0SW5zcGVjdG9yU3Rh
dGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKTsKLSAgICB2b2lkIHNldENvbnNvbGVN
ZXNzYWdlc0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHBvcHVsYXRlU2NyaXB0T2JqZWN0cygp
OwogICAgIHZvaWQgcmVzdG9yZURlYnVnZ2VyKCk7CkBAIC0zMDcsOCArMjkwLDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZm9jdXNOb2RlKCk7CiAKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdl
KFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+KTsKLQogICAgIGJvb2wgaXNNYWluUmVzb3VyY2VM
b2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVxdWVzdFVybCk7CiAK
ICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0
IFN0cmluZyYganNvblJlc3VsdCk7CkBAIC0zNDIsMTAgKzMyMyw2IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OwotICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3Nh
Z2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7Ci0gICAgdW5zaWduZWQgbV9leHBpcmVkQ29uc29sZU1l
c3NhZ2VDb3VudDsKLSAgICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwotICAgIEhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9jb3VudHM7CiAKICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U+ID4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CkBAIC0zNTgsMTAgKzMzNSwxMCBAQCBwcml2YXRl
OgogCiAgICAgU3RyaW5nIG1fc2hvd0FmdGVyVmlzaWJsZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9o
aWdobGlnaHRlZE5vZGU7Ci0gICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwog
ICAgIGJvb2wgbV9zZXR0aW5nc0xvYWRlZDsKICAgICBPd25QdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluamVj
dGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAgT3duUHRyPEluc3BlY3Rv
ckNvbnNvbGVBZ2VudD4gbV9jb25zb2xlQWdlbnQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IFNldHRpbmdzOwogICAgIG11dGFibGUgU2V0dGluZ3MgbV9zZXR0aW5nczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggOTM5NWRkNWQ3NjM4NjFhZTMxYzE4Y2JiMzgwODQ4MjlmMDExNmExNi4u
Y2ZhNWE3NmMzODJkYjU4ZGQ4ZDI4MGRjOGNhMTdlNzY3ZTI5ZDI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTM4LDExICszOCwxNSBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00NDIsOCArNDQ2LDcgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJ
bnNwZWN0b3JJbnMKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGNvb2tpZS5maXJzdDsK
ICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZl
UmVzb3VyY2VBZ2VudChpYykpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKLSAgICAvLyBGSVhNRSg1MjI4Mik6
IG1vdmUgdGhpcyB0byBjb25zb2xlIGFnZW50LgotICAgIGljLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgIGljLT5tX2NvbnNvbGVBZ2VudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwogfQpA
QCAtNDY0LDggKzQ2Nyw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zCiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7Ci0gICAgLy8gRklYTUUoNTIyODIpOiBtb3ZlIHRoaXMgdG8gY29uc29sZSBhZ2VudC4K
LSAgICBpYy0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOworICAgIGljLT5tX2Nv
bnNvbGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOwogICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFn
ZW50KGljKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNl
KGlkZW50aWZpZXIsIHRydWUsIDApOwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBy
ZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKQEAgLTQ3NCw3ICs0NzYs
NyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWdu
ZWQgc2VuZExpbmVOdW1iZXIpCiB7Ci0gICAgaWMtPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBpYy0+bV9jb25zb2xl
QWdlbnQtPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNl
bmRMaW5lTnVtYmVyKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VB
Z2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCiAgICAgICAgIHJlc291cmNlQWdlbnQt
PnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIpOwogfQpA
QCAtNTM4LDYgKzU0MCw0OSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoSW5zcGVjdG9yQ29udHJvbAogfQogI2VuZGlmCiAK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2Uq
IHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3sK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmNvbnNvbGVBZ2VudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSogcGFnZSwgTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKQoreworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwor
fQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y291bnQoUGFnZSogcGFnZSwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCkKK3sKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmNvbnNvbGVBZ2VudCgpLT5jb3VudCh0aXRsZSwgbGluZU51bWJl
ciwgc291cmNlSUQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRU
aW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNv
bGVBZ2VudCgpLT5zdGFydFRpbWluZyh0aXRsZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzdG9wVGltaW5nKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlTmFtZSkKK3sKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmNvbnNvbGVBZ2VudCgpLT5zdG9wVGltaW5nKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VOYW1l
KTsKK30KKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShJbnNwZWN0
b3JDb250cm9sbGVyKiBpYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgaWYgKEluc3BlY3RvclByb2ZpbGVy
QWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBpYy0+bV9wcm9maWxlckFnZW50LmdldCgpKQorICAgICAg
ICBwcm9maWxlckFnZW50LT5hZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUs
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisjZW5kaWYKKwogYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggM2I4NmIxOTJmYjQzM2M0MzZmNzg2ODVlNDZiZjdjNTBhNWRmNThkOC4u
M2Q4MmY5ZmQzMjQ1Y2E4NWVjNjQzMDZjODk5ZDMwZDNjMzYzYjdiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDks
NiArNDksOCBAQCBjbGFzcyBLVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CitjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3Mg
WE1MSHR0cFJlcXVlc3Q7CiAKQEAgLTEyMCw2ICsxMjIsMTkgQEAgcHVibGljOgogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogI2VuZGlmCisKKyAgICBzdGF0aWMgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYpOworCisgICAgc3RhdGljIHZvaWQgY291bnQoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0
bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAgIHN0
YXRpYyB2b2lkIHN0YXJ0VGltaW5nKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBz
dGF0aWMgdm9pZCBzdG9wVGltaW5nKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU5hbWUpOworCisjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCisgICAgLy9zdGF0aWMgdm9pZCBhZGRQcm9maWxlRmluaXNoZWRN
ZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRTdGFy
dFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0
cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBzdGF0aWMgdm9pZCBmcm9u
dGVuZENyZWF0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyICs9IDE7IH0KICAgICBzdGF0aWMgdm9p
ZCBmcm9udGVuZERlbGV0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyIC09IDE7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRl
eCBhYzY3YTFhYjBjN2NhNjI4ZWNjYWI3M2YyNWIzNDFjMTdmMmY1OTZlLi5kYTliNjdkNzdhZWMx
YWYxOTk0ZmUxNjZiOTdlODlkYzNmOWU4NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNp
bmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCkBAIC05MCwxMyArOTEsMTMgQEAg
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9D
b25zb2xlKFBhc3NSZWZQdHI8U2NyaXAKICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmls
ZSA9IHBycFByb2ZpbGU7CiAgICAgU3RyaW5nIHRpdGxlID0gcHJvZmlsZS0+dGl0bGUoKTsKICAg
ICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCJ3ZWJraXQtcHJvZmlsZTov
LyIsIENQVVByb2ZpbGVUeXBlLCAnLycsIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0
bGUpLCAnIycsIFN0cmluZzo6bnVtYmVyKHByb2ZpbGUtPnVpZCgpKSwgIlwiIGZpbmlzaGVkLiIp
OwotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQWdl
bnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQogewogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJv
ZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICIjMFwiIHN0YXJ0ZWQuIik7Ci0gICAgbV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVBZ2VudCgpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2ZpbGVIZWFk
ZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYgcHJvZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGM5ODU1MmRhNThlZDdhZWNl
NjhkY2IyNWMyNWEyMTc1N2FmZDk2YzIuLmIxOGZjYzUzMTU3YTU5ZGYyZWQ0ZDllMmU1YTc0MDc3
MzA0NzUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwpAQCAtOTcsNiArOTcsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcg
PSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgICAgICJub2RlIjogICB0aGlzLl9mb3JtYXRub2RlLAog
ICAgICAgICAic3RyaW5nIjogdGhpcy5fZm9ybWF0c3RyaW5nCiAgICAgfTsKKworICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJDb25zb2xlIiwgdGhpcyk7CiB9
CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CkBAIC0yNDcsNiArMjQ5
LDI4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9zY2hlZHVsZVNjcm9sbEludG9WaWV3KCk7CiAgICAgfSwKIAorICAgIGFkZENvbnNv
bGVNZXNzYWdlOiBmdW5jdGlvbihwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnNvbGVN
ZXNzYWdlID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSgKKyAgICAgICAgICAgIHBh
eWxvYWQuc291cmNlLAorICAgICAgICAgICAgcGF5bG9hZC50eXBlLAorICAgICAgICAgICAgcGF5
bG9hZC5sZXZlbCwKKyAgICAgICAgICAgIHBheWxvYWQubGluZSwKKyAgICAgICAgICAgIHBheWxv
YWQudXJsLAorICAgICAgICAgICAgcGF5bG9hZC5yZXBlYXRDb3VudCwKKyAgICAgICAgICAgIHBh
eWxvYWQubWVzc2FnZSwKKyAgICAgICAgICAgIHBheWxvYWQucGFyYW1ldGVycywKKyAgICAgICAg
ICAgIHBheWxvYWQuc3RhY2tUcmFjZSwKKyAgICAgICAgICAgIHBheWxvYWQucmVxdWVzdElkKTsK
KyAgICAgICAgdGhpcy5hZGRNZXNzYWdlKGNvbnNvbGVNZXNzYWdlKTsKKyAgICB9LAorCisgICAg
dXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQ6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsK
KyAgICAgICAgdmFyIG1lc3NhZ2UgPSBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiVkIGNvbnNvbGUgbWVzc2FnZXMgYXJlIG5vdCBzaG93bi4iKSwgY291bnQpOworICAgICAg
ICB0aGlzLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRN
ZXNzYWdlKG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwu
V2FybmluZykpOworICAgIH0sCisKICAgICB1cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQ6IGZ1bmN0
aW9uKGNvdW50KQogICAgIHsKICAgICAgICAgdmFyIG1zZyA9IHRoaXMucHJldmlvdXNNZXNzYWdl
OwpAQCAtMjY2LDYgKzI5MCwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIGNvbnNvbGVNZXNzYWdlc0NsZWFyZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xlYXJNZXNzYWdlcygpOworICAgIH0sCisK
ICAgICBfaW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQ6IGZ1bmN0aW9uKG1zZykKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobXNnLmxldmVsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGIxZjBjNzg3NmJlNzhmMjk0NDk2YTBmNWVj
YTBiODMzNWRiYTlmM2MuLjQyZGFjMmQ2YmZmZmUxYjQ2N2E1ZmQ1ODg0N2MyNTk0YjlkNWFiOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CkBAIC0xMTc1LDExICsxMTc1LDYgQEAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCA9IGZ1bmN0aW9u
KHBhbmVsKQogICAgIHRoaXMuY3VycmVudFBhbmVsID0gdGhpcy5wYW5lbHNbcGFuZWxdOwogfQog
Ci1XZWJJbnNwZWN0b3IuY29uc29sZU1lc3NhZ2VzQ2xlYXJlZCA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICBXZWJJbnNwZWN0b3IuY29uc29sZS5jbGVhck1lc3NhZ2VzKCk7Ci19Ci0KIFdlYkluc3BlY3Rv
ci5kb21Db250ZW50RXZlbnRGaXJlZCA9IGZ1bmN0aW9uKHRpbWUpCiB7CiAgICAgdGhpcy5wYW5l
bHMuYXVkaXRzLm1haW5SZXNvdXJjZURPTUNvbnRlbnRUaW1lID0gdGltZTsKQEAgLTEyMzcsMzMg
KzEyMzIsNiBAQCBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkVVJMQ2hhbmdlZCA9IGZ1bmN0aW9uKHVy
bCkKICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5ub3RpZnlJbnNwZWN0ZWRVUkxDaGFuZ2VkKCk7
CiB9CiAKLVdlYkluc3BlY3Rvci51cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCA9IGZ1
bmN0aW9uKGNvdW50KQotewotICAgIHZhciBtZXNzYWdlID0gU3RyaW5nLnNwcmludGYoV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlZCBjb25zb2xlIG1lc3NhZ2VzIGFyZSBub3Qgc2hvd24uIiksIGNv
dW50KTsKLSAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZShtZXNzYWdlLCBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcpKTsKLX0KLQotV2ViSW5zcGVjdG9yLmFk
ZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICB2YXIgY29uc29sZU1l
c3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKAotICAgICAgICBwYXlsb2Fk
LnNvdXJjZSwKLSAgICAgICAgcGF5bG9hZC50eXBlLAotICAgICAgICBwYXlsb2FkLmxldmVsLAot
ICAgICAgICBwYXlsb2FkLmxpbmUsCi0gICAgICAgIHBheWxvYWQudXJsLAotICAgICAgICBwYXls
b2FkLnJlcGVhdENvdW50LAotICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsCi0gICAgICAgIHBheWxv
YWQucGFyYW1ldGVycywKLSAgICAgICAgcGF5bG9hZC5zdGFja1RyYWNlLAotICAgICAgICBwYXls
b2FkLnJlcXVlc3RJZCk7Ci0gICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29sZU1lc3Nh
Z2UpOwotfQotCi1XZWJJbnNwZWN0b3IudXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCA9
IGZ1bmN0aW9uKGNvdW50KQotewotICAgIHRoaXMuY29uc29sZS51cGRhdGVNZXNzYWdlUmVwZWF0
Q291bnQoY291bnQpOwotfQotCiBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSwg
bWVzc2FnZUxldmVsKQogewogICAgIC8vIHJlbWVtYmVyICd0aGlzJyBmb3Igc2V0SW50ZXJ2YWwo
KSBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggMjE5NjQ3ZGRjMGJmZjM4YjBk
MGVmNjg3ZGJjZGMxZTA2YTNjMzc0Mi4uY2Y5MTU1OWRlYjlkMGJiMzRkOTNjYjFhYzc2OTBkMjll
ZWU0ZDNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKIAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUg
IkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5o
IgpAQCAtMTQ4LDkgKzE0OCw5IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxlCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCAwLCBjYWxsU3RhY2spOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
MCwgY2FsbFN0YWNrKTsKICAgICBlbHNlCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKICNlbmRpZgogCiAgICAgaWYgKCFDb25zb2xlOjpzaG91
bGRQcmludEV4Y2VwdGlvbnMoKSkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIENvbnNvbGU6OmFk
ZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBQYXNzUmVmUHRy
PFNjcmlwdAogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5s
aW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxs
U3RhY2spOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29s
ZShwYWdlLCBKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMs
IGNhbGxTdGFjayk7CiAjZW5kaWYKIH0KIApAQCAtMjYwLDggKzI2MCw3IEBAIHZvaWQgQ29uc29s
ZTo6Y291bnQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3VtZW50CiAgICAg
U3RyaW5nIHRpdGxlOwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKHRp
dGxlKTsKLQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y291bnQodGl0bGUsIGxh
c3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvdW50KHBhZ2UsIHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVO
dW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjYWxsU3RhY2spOwogI2VuZGlmCkBAIC0yODMsMzMgKzI4Miw2IEBAIHZvaWQgQ29uc29sZTo6
bWFya1RpbWVsaW5lKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NS
ZWZQdHI8U2NyCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShXTUwpCi1TdHJpbmcgQ29uc29sZTo6
bGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgY29uc3QgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4g
PiYgY29uc29sZU1lc3NhZ2VzID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xl
TWVzc2FnZXMoKTsKLSAgICBpZiAoY29uc29sZU1lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjb25zb2xlTWVzc2FnZXMuYmVnaW4oKTsKLSAgICBjb25zdCBW
ZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb25z
b2xlTWVzc2FnZXMuZW5kKCk7Ci0KLSAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIENvbnNvbGVNZXNzYWdlKiBtZXNzYWdlID0gaXQtPmdldCgpOwotICAgICAgICBpZiAobWVz
c2FnZS0+c291cmNlKCkgIT0gV01MTWVzc2FnZVNvdXJjZSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIHJldHVybiBtZXNzYWdlLT5tZXNzYWdlKCk7Ci0gICAgfQotI2VuZGlmCi0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKIAogdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNj
cmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykK
QEAgLTMzNyw3ICszMDksNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdAogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxs
U3RhY2stPmF0KDApOwotICAgIGNvbnRyb2xsZXItPmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRv
Q29uc29sZShyZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxl
ci5zb3VyY2VVUkwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFBy
b2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29udHJvbGxlciwgcmVzb2x2ZWRUaXRsZSwgbGFzdENh
bGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogI2VuZGlmCiB9CiAK
QEAgLTM3MCwxNiArMzQyLDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3IKIHZvaWQgQ29uc29s
ZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVoYXZpb3Igb2YgcmVxdWlyaW5nIGEg
dGl0bGUgdGhhdCBpcyBub3QgbnVsbCBvcgotICAgIC8vIHVuZGVmaW5lZCBmb3IgdGltaW5nIGZ1
bmN0aW9ucwotICAgIGlmICh0aXRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydFRpbWluZyh0aXRsZSk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFRpbWluZyhwYWdlKCksIHRpdGxlKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICNlbmRpZgpAQCAtMzg4LDIzICszNTEsOCBAQCB2
b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHZvaWQgQ29uc29sZTo6dGlt
ZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRm9sbG93IEZpcmVidWcncyBiZWhhdmlvciBvZiByZXF1
aXJpbmcgYSB0aXRsZSB0aGF0IGlzIG5vdCBudWxsIG9yCi0gICAgLy8gdW5kZWZpbmVkIGZvciB0
aW1pbmcgZnVuY3Rpb25zCi0gICAgaWYgKHRpdGxlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBkb3VibGUgZWxhcHNlZDsKLSAgICBpZiAoIXBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c3RvcFRpbWluZyh0aXRsZSwgZWxhcHNlZCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFN0cmluZyBtZXNzYWdlID0gdGl0bGUgKyBTdHJpbmc6OmZvcm1hdCgiOiAlLjBmbXMiLCBlbGFw
c2VkKTsKLQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFj
ay0+YXQoMCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwg
bWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFRpbWluZyhwYWdlKCksIHRpdGxl
LCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7
CkBAIC00MTQsMTEgKzM2Miw3IEBAIHZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcm
IHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQCiB2b2lkIENvbnNv
bGU6Omdyb3VwKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3VwKGFy
Z3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2UsIFN0YXJ0R3JvdXBNZXNzYWdl
VHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bFN0YWNrKTsKQEAgLTQyOCwxMSArMzcyLDcgQEAgdm9pZCBDb25zb2xlOjpncm91cChQYXNzUmVm
UHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGwKIHZv
aWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNv
dXJjZSwgU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0
cmluZygpLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShh
cmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwpAQCAtNDQyLDExICszODIs
NyBAQCB2b2lkIENvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8Uwogdm9pZCBDb25zb2xlOjpncm91cEVuZCgpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwot
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5lbmRHcm91cChKU01lc3NhZ2VTb3VyY2UsIDAsIFN0cmluZygpKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01l
c3NhZ2VTb3VyY2UsIEVuZEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5n
KCksIDAsIFN0cmluZygpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IGRk
NjkyYTJmN2MwMTI1ZDYzMWNmMTIxM2JlNzVjNGQ1Y2I4NWYwODEuLmNlZWZiMzg3MmViMDNhZGVj
OTM0N2E5OTdmMzYzOTEzZWJhY2Q5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0xMDEsOSAr
MTAxLDYgQEAgcHVibGljOgogICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9u
LCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
Pik7CiAgICAgdm9pZCBjb3VudChQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBtYXJrVGltZWxpbmUoUGFzc1JlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotI2lmIEVOQUJM
RShXTUwpCi0gICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsKLSNlbmRpZgog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGNvbnN0IFByb2ZpbGVzQXJyYXkm
IHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQogICAgIHZvaWQgcHJvZmls
ZShjb25zdCBTdHJpbmcmLCBTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAppbmRleCA1MDNiYjkxYTA2M2VhNmIzNzFlMzMxYTlj
NmRkZjdjMjA4OWVmZTE2Li4xODkyODBkMmQ4ZTc0MDUyOWNiZTE3OWQzNjdlYmJmMjAwY2MyYjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKQEAgLTQyLDEwICs0Miw2IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBjb3VudCgpOwogICAg
ICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBtYXJrVGltZWxpbmUoKTsKIAotI2lm
IGRlZmluZWQoRU5BQkxFX1dNTCkgJiYgRU5BQkxFX1dNTAotICAgICAgICBbRG9udEVudW1dIERP
TVN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCk7Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwcm9maWxlczsK
ICAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlKGluIERPTVN0cmluZyB0aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78813</attachid>
            <date>2011-01-13 08:26:33 -0800</date>
            <delta_ts>2011-01-14 05:02:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52282-20110113192630.patch</filename>
            <type>text/plain</type>
            <size>59133</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjIxMmZiODYxMzc5YWY0NzZkMzRlOTY4MTdmY2YzYWM2
NjRjZjNjMy4uOGFmMWI0ZmQxYTkxMWU4NjdlMjZlMzkxNzUzMjRkMDMyMjdlYTQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTExNTIsNiArMTE1Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOThmNTk3OTBjNTJiN2NhODZkZjVjMDczMzE4ZjFkMTVhMjk5ZWFhOC4uNjRj
ZjU3MGM5ZWQ4OGYzZjY2ZmQwMGVhYTdlZGFlMWMwOGQwOTRhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc0IEBACisyMDExLTAxLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGV4dHJhY3QgY29uc29sZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgaW50byBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyMjgyCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG06
CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGVNZXNzYWdlOjp+Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3Rv
ckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjpjbGVhckNvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29uc29sZUFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFRpbWluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmlsaW5nTWVz
c2FnZVRvQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5p
c2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuYWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZS51cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAq
IHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0aW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGU6Omdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwQ29sbGFwc2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwRW5kKToKKyAgICAgICAgKiBwYWdl
L0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDExLTAxLTEzICBN
aWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0MjUxZmJlZTE3
MjdmYmY1NWNjOWRmNTQ2ZWM4MzY2MTI4ZTFjNWUwLi5lZGEzNjMzNzU1MTU3NTAzODIzNjYzMWI5
YWI0NDY0NzRhNTczMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTk0NSw2ICsxOTQ1LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggODNlNTVkNDZkN2M5NjkzNzNhNjFhYjg3NWU5MThlMDQ4MTc1ZjY5MC4uNDRlYTlkZmViMTlj
YTEyMGViOWFiYWQxZjQzMzYyMTczYWNiYzY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAwMSw2
ICsyMDAxLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDA5YTZlMmE3YjgwNTcxMmVjODQ5NmQ4NWUxNjBk
Y2Y4MDQxN2EwYWIuLmY3MWNkNjUwNzdiNjM5ZjFiMTc0ZjNhOGNmMTFmNTcxZGMwOTJhYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5j
cHAgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuY3BwIFwKQEAgLTE5MzMsNiArMTkzNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IGI4YWVhMGU0
MTQwNWFhN2I3YWQ5N2U3ZjBiNWU2NzBlYzE1NzRkYTYuLjdhMjc2MTA5NTAzZTAyOGRmMDY5NGRl
ODVmYmI0MGFjMzJlYmQxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0yMCw2ICsyMCwxMSBAQCAkdHlwZVRyYW5zZm9y
bXsiQ1NTIn0gPSB7CiAgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckNTU0FnZW50LmgiLAogICAg
ICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9jc3NBZ2VudCIs
CiB9OworJHR5cGVUcmFuc2Zvcm17IkNvbnNvbGUifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4gIklu
c3BlY3RvckNvbnNvbGVBZ2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckNvbnNvbGVB
Z2VudC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXIt
Pm1fY29uc29sZUFnZW50IiwKK307CiAkdHlwZVRyYW5zZm9ybXsiRGVidWdnZXIifSA9IHsKICAg
ICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQiLAogICAgICJoZWFkZXIiID0+
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKaW5kZXggYjIyYTZlZmExMGNhZmJiMTNhNTQxOTJjNDg1NjkyYzY3
ZGU2ZmY4YS4uOGQ1NmE1YTQxYmU0OGY3ZTEwYWY2NDliMzhhNWFjM2Y4Zjg3NGE1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC04Miw2ICs4Miwx
MCBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNz
YWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgYwogewogfQogCitDb25zb2xlTWVzc2FnZTo6fkNv
bnNvbGVNZXNzYWdlKCkKK3sKK30KKwogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0
ZWRTY3JpcHRIb3N0KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25PYmogPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaAppbmRleCAwNmExN2Q0YzU3NDk5ZGI2OTg4YmZiMzUzOThjZjc1YTA1NGJjZDE4
Li4zMTBhYThlYmNlMDg1OGE5YTMwMzRkMDExNGQ5ODZmYzZjZDI4ZTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6
CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1KTsKICAg
ICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG0sIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIGNvbnN0IFN0cmluZyYg
cmVzcG9uc2VVcmwsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgfkNvbnNvbGVNZXNz
YWdlKCk7CiAKICAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqLCBJbmpl
Y3RlZFNjcmlwdEhvc3QqKTsKICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGE0YTBjNmZiNzJlMjg4NDVmYTcxMGNhMmNj
YjM4YTMxZGIzNDM1OWYuLjRmOTU2MGEzNzQ5ODdhYmQ4ZDM5NDM5N2NhYzYxN2U0NzgxMzU2MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgpAQCAtODIsNyArODMsNyBAQCBJbmplY3RlZFNjcmlwdEhvc3Q6
On5JbmplY3RlZFNjcmlwdEhvc3QoKQogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFyQ29u
c29sZU1lc3NhZ2VzKCkKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAg
ICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUFnZW50KCktPmNsZWFyQ29uc29sZU1lc3Nh
Z2VzKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJp
bmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IGVkMDBj
Yzc2ZDM2NzkyNDI1NGZmMzMyOWE0YTYzNjBjN2ZmNDkyYjQuLjU0Mjc5MmJkNTY2MjBiMGJlYzU1
MzNiYzQ4NDVmMWVjMmRkNTQyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsCkBAIC03NiwxMiArNzYsMTIgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAvLyBDb25zb2xl
IEFQSQogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9y
XSB2b2lkIHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkLCBvdXQg
Ym9vbGVhbiBuZXdTdGF0ZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3JdIHZv
aWQgYWRkQ29uc29sZU1lc3NhZ2Uob3V0IE9iamVjdCBtZXNzYWdlT2JqKTsKLSAgICAgICAgW25v
dGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRD
b3VudChvdXQgdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1J
bnNwZWN0b3JdIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudChvdXQgdW5zaWdu
ZWQgbG9uZyBjb3VudCk7Ci0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGNsZWFyQ29u
c29sZU1lc3NhZ2VzKCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOworICAgICAgICBbZG9tYWluPUNvbnNvbGVdIHZvaWQg
c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQsIG91dCBib29sZWFu
IG5ld1N0YXRlKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUNvbnNvbGVdIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2Uob3V0IE9iamVjdCBtZXNzYWdlT2JqKTsKKyAgICAgICAgW25vdGlmeSwgZG9t
YWluPUNvbnNvbGVdIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQob3V0IHVu
c2lnbmVkIGxvbmcgY291bnQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49Q29uc29sZV0gdm9p
ZCB1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50
KTsKKyAgICAgICAgW2RvbWFpbj1Db25zb2xlXSB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1Db25zb2xlXSB2b2lkIGNvbnNvbGVNZXNzYWdlc0Ns
ZWFyZWQoKTsKIAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICAvLyBOZXR3b3JrIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWVhZDFiZTY0OTYwNDllZGZjMjA4MzJiNjU5OTlkYzc2M2MzOTYz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29uc29s
ZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgi
CisjaW5jbHVkZSAiT3duUHRyLmgiCisjaW5jbHVkZSAiUGFzc093blB0ci5oIgorI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiU2NyaXB0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhw
aXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKKworSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQorICAgIDogbV9pbnNwZWN0b3JDb250cm9sbGVy
KGluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgICwgbV9mcm9u
dGVuZCgwKQorICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKKyAgICAsIG1fZXhwaXJlZENvbnNv
bGVNZXNzYWdlQ291bnQoMCkKK3sKK30KKworSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+SW5zcGVj
dG9yQ29uc29sZUFnZW50KCkKK3sKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOworfQor
Cit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChi
b29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKQoreworICAgICpuZXdTdGF0ZSA9IGVuYWJsZWQ7
CisgICAgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKK3sKKyAgICBtX2NvbnNv
bGVNZXNzYWdlcy5jbGVhcigpOworICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgPSAw
OworICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmluamVjdGVkU2NyaXB0SG9zdCgpLT5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKDAgLyogcmVs
ZWFzZSB0aGUgZ3JvdXAgaW4gYWxsIHNjcmlwdHMgKi8sICJjb25zb2xlIik7CisgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZG9tQWdl
bnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CisgICAgaWYg
KG1fZnJvbnRlbmQpCisgICAgICAgIG1fZnJvbnRlbmQtPmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQo
KTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KCkKK3sKKyAgICBjbGVh
ckNvbnNvbGVNZXNzYWdlcygpOworICAgIG1fdGltZXMuY2xlYXIoKTsKKyAgICBtX2NvdW50cy5j
bGVhcigpOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZDsK
K30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1l
bnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQoreworICAgIGlmICgh
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
ZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIGlmICgh
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
ZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnN0YXJ0VGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgLy8gRm9s
bG93IEZpcmVidWcncyBiZWhhdmlvciBvZiByZXF1aXJpbmcgYSB0aXRsZSB0aGF0IGlzIG5vdCBu
dWxsIG9yCisgICAgLy8gdW5kZWZpbmVkIGZvciB0aW1pbmcgZnVuY3Rpb25zCisgICAgaWYgKHRp
dGxlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVzLmFkZCh0aXRsZSwg
Y3VycmVudFRpbWUoKSAqIDEwMDApOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU5hbWUpCit7CisgICAgLy8gRm9sbG93IEZpcmVidWcncyBiZWhhdmlv
ciBvZiByZXF1aXJpbmcgYSB0aXRsZSB0aGF0IGlzIG5vdCBudWxsIG9yCisgICAgLy8gdW5kZWZp
bmVkIGZvciB0aW1pbmcgZnVuY3Rpb25zCisgICAgaWYgKHRpdGxlLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBIYXNoTWFwPFN0cmluZywgZG91YmxlPjo6aXRlcmF0b3IgaXQgPSBt
X3RpbWVzLmZpbmQodGl0bGUpOworICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gaXQtPnNlY29uZDsKKyAgICBtX3Rp
bWVzLnJlbW92ZShpdCk7CisKKyAgICBkb3VibGUgZWxhcHNlZCA9IGN1cnJlbnRUaW1lKCkgKiAx
MDAwIC0gc3RhcnRUaW1lOworICAgIFN0cmluZyBtZXNzYWdlID0gdGl0bGUgKyBTdHJpbmc6OmZv
cm1hdCgiOiAlLjBmbXMiLCBlbGFwc2VkKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlTmFtZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpj
b3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUlEKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbWFrZVN0cmluZyh0aXRs
ZSwgJ0AnLCBzb3VyY2VJRCwgJzonLCBTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7CisgICAg
SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPjo6aXRlcmF0b3IgaXQgPSBtX2NvdW50cy5maW5kKGlk
ZW50aWZpZXIpOworICAgIGludCBjb3VudDsKKyAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkp
CisgICAgICAgIGNvdW50ID0gMTsKKyAgICBlbHNlIHsKKyAgICAgICAgY291bnQgPSBpdC0+c2Vj
b25kICsgMTsKKyAgICAgICAgbV9jb3VudHMucmVtb3ZlKGl0KTsKKyAgICB9CisKKyAgICBtX2Nv
dW50cy5hZGQoaWRlbnRpZmllciwgY291bnQpOworCisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJlcihjb3VudCkpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIp
Cit7CisgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjptb25p
dG9yaW5nWEhSKSkKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzog
XCIiICsgdXJsICsgIlwiLiIsIHNlbmRMaW5lTnVtYmVyLCBzZW5kVVJMKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICgh
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgeworICAgICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwor
ICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBpZGVudGlmaWVyKSk7CisgICAgfQorfQorCit2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJp
bmcgbWVzc2FnZSA9ICJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSI7CisgICAgaWYgKCFlcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgbWVzc2FnZSArPSAiOiAi
ICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShu
ZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdVUkwoKSwgaWRl
bnRpZmllcikpOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0Q29uc29sZU1l
c3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJ
bnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgZW5hYmxlZCk7CisgICAgaWYg
KCFtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KQorICAgICAgICBtX2Zyb250ZW5kLT51
cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudChtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNv
dW50KTsKKyAgICB1bnNpZ25lZCBtZXNzYWdlQ291bnQgPSBtX2NvbnNvbGVNZXNzYWdlcy5zaXpl
KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgKytpKQorICAg
ICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmluamVjdGVkU2NyaXB0SG9zdCgpKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1l
c3NhZ2U+IGNvbnNvbGVNZXNzYWdlKQoreworICAgIEFTU0VSVChtX2luc3BlY3RvckNvbnRyb2xs
ZXItPmVuYWJsZWQoKSk7CisgICAgQVNTRVJUX0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29sZU1l
c3NhZ2UpOworCisgICAgaWYgKG1fcHJldmlvdXNNZXNzYWdlICYmIG1fcHJldmlvdXNNZXNzYWdl
LT5pc0VxdWFsKGNvbnNvbGVNZXNzYWdlLmdldCgpKSkgeworICAgICAgICBtX3ByZXZpb3VzTWVz
c2FnZS0+aW5jcmVtZW50Q291bnQoKTsKKyAgICAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yU3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQpCisg
ICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUo
bV9mcm9udGVuZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBj
b25zb2xlTWVzc2FnZS5nZXQoKTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNv
bnNvbGVNZXNzYWdlKTsKKyAgICAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9y
U3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQpCisgICAgICAgICAg
ICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmluamVjdGVkU2NyaXB0SG9zdCgpKTsKKyAgICB9CisKKyAgICBpZiAoIW1f
ZnJvbnRlbmQgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGltdW1Db25zb2xlTWVz
c2FnZXMpIHsKKyAgICAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCArPSBleHBpcmVD
b25zb2xlTWVzc2FnZXNTdGVwOworICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5yZW1vdmUoMCwg
ZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZDFjYzhi
ZDNhYWVlZjQ2ZDBjMjk2MzE1YzFhMmE0OTRhNzEyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTAsMCArMSw5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JDb25zb2xlQWdlbnRfaAorI2Rl
ZmluZSBJbnNwZWN0b3JDb25zb2xlQWdlbnRfaAorCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK2NsYXNzIENvbnNvbGVNZXNz
YWdlOworY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5k
OworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKK2NsYXNzIFNjcmlwdEFyZ3VtZW50czsKK2NsYXNzIFNjcmlwdENhbGxT
dGFjazsKK2NsYXNzIFNjcmlwdFByb2ZpbGU7CisKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQ29uc29sZUFn
ZW50KEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JTdGF0ZSopOworICAgIH5JbnNwZWN0
b3JDb25zb2xlQWdlbnQoKTsKKworICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChi
b29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKTsKKyAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3Nh
Z2VzKCk7CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmQqKTsKKworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKworICAgIHZvaWQgc3RhcnRUaW1pbmcoY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgdm9pZCBzdG9wVGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlTmFtZSk7CisgICAgdm9pZCBj
b3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUlEKTsKKworICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNl
bmRMaW5lTnVtYmVyKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwor
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlz
aGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdm9pZCBhZGRTdGFydFBy
b2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wpOworICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVzc2FnZT4pOworCisgICAgSW5zcGVjdG9y
Q29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOworICAgIEluc3BlY3RvclN0YXRlKiBt
X3N0YXRlOworICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOworICAgIENvbnNvbGVN
ZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKKyAgICBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNz
YWdlPiA+IG1fY29uc29sZU1lc3NhZ2VzOworICAgIHVuc2lnbmVkIG1fZXhwaXJlZENvbnNvbGVN
ZXNzYWdlQ291bnQ7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2NvdW50czsKKyAg
ICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOworfTsKKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckNvbnNvbGVB
Z2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCmluZGV4IGVlMTUzNmY3Yzc2MzJhZGYwMGFiZWZkOGUxMGE5ODdiMmY2OGE1NmIuLmJk
OTZhNTRmMzMyODkxZDk2NmJkZGMxZGQ0OWFkNGNlYTkxM2RmYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM1LDggKzM1LDYg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ29uc29sZS5oIgotI2lu
Y2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC02MCw2ICs1OCw3IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5oIgpAQCAtMTMyLDI2ICsxMzEsMjIgQEAgY29uc3QgY2hhciog
Y29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6UHJvZmlsZXNQYW5lbCA9ICJwcm9maWxlcyI7CiAK
IGNvbnN0IHVuc2lnbmVkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRlZmF1bHRBdHRhY2hlZEhlaWdo
dCA9IDMwMDsKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1Db25zb2xlTWVzc2FnZXMg
PSAxMDAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAg
PSAxMDA7Ci0KIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFn
ZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNl
KQogICAgICwgbV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAsIG1fZXhw
aXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKLSAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCisg
ICAgLCBtX3N0YXRlKG5ldyBJbnNwZWN0b3JTdGF0ZShjbGllbnQpKQogICAgICwgbV9zZXR0aW5n
c0xvYWRlZChmYWxzZSkKICAgICAsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIobmV3IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhv
c3QoSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCisgICAgLCBtX2NvbnNvbGVBZ2Vu
dChuZXcgSW5zcGVjdG9yQ29uc29sZUFnZW50KHRoaXMsIG1fc3RhdGUuZ2V0KCkpKQogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93
bihmYWxzZSkKICAgICAsIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTChmYWxzZSkKICAg
ICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUodGhpcykp
CiAjZW5kaWYKIHsKLSAgICBtX3N0YXRlID0gbmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCk7CiAg
ICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50
KTsKIH0KQEAgLTMxMyw4NSArMzA4LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRl
SGlnaGxpZ2h0KCkKICAgICBtX2NsaWVudC0+aGlkZUhpZ2hsaWdodCgpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBib29sKiBuZXdTdGF0ZSkKLXsKLSAgICAqbmV3U3RhdGUgPSBlbmFibGVkOwotICAgIHNldENv
bnNvbGVNZXNzYWdlc0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCwg
ZW5hYmxlZCk7Ci0gICAgaWYgKCFlbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkKLSAgICAgICAgbV9mcm9udGVuZC0+dXBkYXRl
Q29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCk7
Ci0gICAgdW5zaWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAg
bV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSwgbV9p
bmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKLXsKLSAgICBpZiAo
IWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3
IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIs
IHNvdXJjZUlEKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1l
c3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCi17Ci0gICAg
QVNTRVJUKGVuYWJsZWQoKSk7Ci0gICAgQVNTRVJUX0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29s
ZU1lc3NhZ2UpOwotCi0gICAgaWYgKG1fcHJldmlvdXNNZXNzYWdlICYmIG1fcHJldmlvdXNNZXNz
YWdlLT5pc0VxdWFsKGNvbnNvbGVNZXNzYWdlLmdldCgpKSkgewotICAgICAgICBtX3ByZXZpb3Vz
TWVzc2FnZS0+aW5jcmVtZW50Q291bnQoKTsKLSAgICAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xl
YW4oSW5zcGVjdG9yU3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQp
Ci0gICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNv
bGUobV9mcm9udGVuZC5nZXQoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcmV2aW91c01l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZS5nZXQoKTsKLSAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMu
YXBwZW5kKGNvbnNvbGVNZXNzYWdlKTsKLSAgICAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yU3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQpCi0g
ICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLmdl
dCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2Zy
b250ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhpbXVtQ29uc29sZU1lc3Nh
Z2VzKSB7Ci0gICAgICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgKz0gZXhwaXJlQ29u
c29sZU1lc3NhZ2VzU3RlcDsKLSAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMucmVtb3ZlKDAsIGV4
cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXApOwotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCi17Ci0gICAgbV9jb25zb2xlTWVzc2FnZXMu
Y2xlYXIoKTsKLSAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50ID0gMDsKLSAgICBtX3By
ZXZpb3VzTWVzc2FnZSA9IDA7Ci0gICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPnJlbGVhc2VXcmFw
cGVyT2JqZWN0R3JvdXAoMCAvKiByZWxlYXNlIHRoZSBncm91cCBpbiBhbGwgc2NyaXB0cyAqLywg
ImNvbnNvbGUiKTsKLSAgICBpZiAobV9kb21BZ2VudCkKLSAgICAgICAgbV9kb21BZ2VudC0+cmVs
ZWFzZURhbmdsaW5nTm9kZXMoKTsKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgbV9mcm9u
dGVuZC0+Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnN0YXJ0R3JvdXAoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgYm9vbCBjb2xsYXBzZWQpCi17
Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgY29sbGFwc2VkID8gU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91
cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjaykp
OwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsK
LSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBFbmRHcm91
cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYXJrVGltZWxpbmUoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICh0aW1lbGluZUFnZW50KCkpCkBAIC00OTQs
NiArNDEwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQog
ICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzZXRG
cm9udGVuZFByb3h5T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogCisgICAgbV9jb25zb2xlQWdl
bnQtPnNldEZyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOworCiAgICAgLy8gSW5pdGlhbGl6ZSBX
ZWIgSW5zcGVjdG9yIHRpdGxlLgogICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFVSTENoYW5nZWQo
bV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpKTsK
IApAQCAtNTc3LDYgKzQ5NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEZyb250ZW5kKCkKICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldEZyb250ZW5kKDApOwogICAgIG1f
cHJvZmlsZXJBZ2VudC0+c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcodHJ1ZSk7CiAjZW5kaWYK
KyAgICBtX2NvbnNvbGVBZ2VudC0+c2V0RnJvbnRlbmQoMCk7CiAKICAgICByZWxlYXNlRnJvbnRl
bmRMaWZldGltZUFnZW50cygpOwogICAgIG1fdGltZWxpbmVBZ2VudC5jbGVhcigpOwpAQCAtNzIx
LDEwICs2NDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFVS
TENoYW5nZWQobG9hZGVyLT51cmwoKS5zdHJpbmcoKSk7CiAKICAgICAgICAgbV9pbmplY3RlZFNj
cmlwdEhvc3QtPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsKLSAgICAgICAgY2xlYXJDb25zb2xl
TWVzc2FnZXMoKTsKLQotICAgICAgICBtX3RpbWVzLmNsZWFyKCk7Ci0gICAgICAgIG1fY291bnRz
LmNsZWFyKCk7CisgICAgICAgIG1fY29uc29sZUFnZW50LT5yZXNldCgpOwogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpIHsKQEAg
LTgxOCwzNyArNzM0LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxv
YWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgU3Ry
aW5nOjpudW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSksICIgKCIsIHJlc3BvbnNlLmh0
dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25z
b2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGlkZW50
aWZpZXIpKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExv
YWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5n
IG1lc3NhZ2UgPSAiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiOwotICAgIGlmICghZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCi0gICAgICAgIG1lc3NhZ2UgKz0gIjogIiAr
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3
IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50
aWZpZXIpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVS
TCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRl
Ojptb25pdG9yaW5nWEhSKSkKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9h
ZGluZzogXCIiICsgdXJsICsgIlwiLiIsIHNlbmRMaW5lTnVtYmVyLCBzZW5kVVJMKTsKLX0KLQog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVTZXR0aW5nc0xvYWRlZCgpCiB7CiAgICAg
aWYgKG1fc2V0dGluZ3NMb2FkZWQpCkBAIC0xMTE2LDE3ICsxMDAxLDYgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJv
ZmlsZSwgdW5zaWcKICAgICBtX3Byb2ZpbGVyQWdlbnQtPmFkZFByb2ZpbGUocHJwUHJvZmlsZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmls
ZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCi17Ci0gICAgbV9wcm9maWxlckFnZW50LT5hZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9D
b25zb2xlKHBycFByb2ZpbGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQotewotICAgIG1fcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwotfQotCi0KIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcHJvZmlsZXJBZ2VudC0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJv
ZmlsZSgpOwpAQCAtMTY1NSw0MiArMTUyOSw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
b3BlbkluSW5zcGVjdGVkV2luZG93KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIG5ld0ZyYW1lLT5s
b2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24obWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCBuZXdGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVybCksICIiLCBmYWxzZSwg
ZmFsc2UpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvdW50KGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCi17
Ci0gICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlE
LCAnOicsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKLSAgICBIYXNoTWFwPFN0cmluZywg
dW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aW50IGNvdW50OwotICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKLSAgICAgICAgY291bnQg
PSAxOwotICAgIGVsc2UgewotICAgICAgICBjb3VudCA9IGl0LT5zZWNvbmQgKyAxOwotICAgICAg
ICBtX2NvdW50cy5yZW1vdmUoaXQpOwotICAgIH0KLQotICAgIG1fY291bnRzLmFkZChpZGVudGlm
aWVyLCBjb3VudCk7Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcodGl0bGUsICI6
ICIsIFN0cmluZzo6bnVtYmVyKGNvdW50KSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZUlEKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFy
dFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlKQotewotICAgIG1fdGltZXMuYWRkKHRpdGxlLCBj
dXJyZW50VGltZSgpICogMTAwMCk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3Rv
cFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUmIGVsYXBzZWQpCi17Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIGRvdWJsZT46Oml0ZXJhdG9yIGl0ID0gbV90aW1lcy5maW5kKHRpdGxlKTsK
LSAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZG91YmxlIHN0YXJ0VGltZSA9IGl0LT5zZWNvbmQ7Ci0gICAgbV90aW1lcy5yZW1vdmUoaXQp
OwotCi0gICAgZWxhcHNlZCA9IGN1cnJlbnRUaW1lKCkgKiAxMDAwIC0gc3RhcnRUaW1lOwotICAg
IHJldHVybiB0cnVlOwotfQotCiBJbmplY3RlZFNjcmlwdCBJbnNwZWN0b3JDb250cm9sbGVyOjpp
bmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIGlkKQogewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZWYyYTZkMzcwZDNkZmM4M2Vm
MzRlMzUzODA2OTI1YzM5MDgyMWNjLi4xYTNiMWE0MzAxZjFmZGNlZjA2NWRhOGMxMTUxYWEwMGM2
YzZkNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIENoYXJhY3RlckRhdGE7Ci1jbGFzcyBDb25zb2xlTWVzc2FnZTsK
IGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsK
QEAgLTU4LDYgKzU3LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVj
dG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckNTU0FnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ7CkBAIC0xNDEsMTEgKzE0MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldXNl
RnJvbnRlbmQoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCi0gICAgdm9pZCBz
ZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwot
ICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJn
dW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwotICAgIGNvbnN0IFZl
Y3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4mIGNvbnNvbGVNZXNzYWdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc29sZU1lc3NhZ2VzOyB9CisgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBj
b25zb2xlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnNvbGVBZ2VudC5nZXQoKTsgfQorICAg
IEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQWdlbnQu
Z2V0KCk7IH0KIAogICAgIGJvb2wgc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIGNvbnN0OwogICAg
IHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2ln
bmVkIG1vZGlmaWVyRmxhZ3MpOwpAQCAtMjA0LDIwICsyMDEsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgb3BlbkluSW5zcGVjdGVkV2luZG93KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRy
YXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgYm91bmRpbmdC
b3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6OlNldHRpbmdzKikgY29u
c3Q7CiAKLSAgICB2b2lkIGNvdW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwotCi0gICAgdm9pZCBzdGFydFRpbWluZyhj
b25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBib29sIHN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0
aXRsZSwgZG91YmxlJiBlbGFwc2VkKTsKLQotICAgIHZvaWQgc3RhcnRHcm91cChQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsRnJhbWUs
IGJvb2wgY29sbGFwc2VkID0gZmFsc2UpOwotICAgIHZvaWQgZW5kR3JvdXAoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsK
LQogICAgIHZvaWQgbWFya1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0
cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOwotICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNz
UmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7Ci0gICAgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogICAgIGJvb2wgaXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNv
bnN0OwogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wg
aW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKICAgICB2b2lkIHN0YXJ0UHJvZmlsaW5n
KCkgeyBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQpAQCAtMjcwLDE0ICsyNTcsMTAg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNp
Z25lZCBzZW5kTGluZU51bWJlcik7CiAKICAgICB2b2lkIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7
CiAKICAgICB2b2lkIGdldEluc3BlY3RvclN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBz
dGF0ZSk7Ci0gICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wpOwogCiAgICAg
dm9pZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsKICAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigp
OwpAQCAtMzA3LDggKzI5MCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZvY3VzTm9kZSgpOwog
Ci0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPik7
Ci0KICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwpOwogCiAgICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGpzb25SZXN1bHQpOwpAQCAtMzQy
LDEwICszMjMsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRvRm9jdXM7
CiAgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IG1fcmVzb3VyY2VBZ2VudDsKLSAg
ICBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+IG1fY29uc29sZU1lc3NhZ2VzOwotICAg
IHVuc2lnbmVkIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQ7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIGRvdWJsZT4gbV90aW1lczsKLSAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fY291
bnRzOwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJl
ZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiA+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwpA
QCAtMzU4LDEwICszMzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3Nob3dBZnRlclZp
c2libGU7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwotICAgIENvbnNvbGVN
ZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKICAgICBib29sIG1fc2V0dGluZ3NMb2FkZWQ7CiAg
ICAgT3duUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3Jp
cHRIb3N0OworICAgIE93blB0cjxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+IG1fY29uc29sZUFnZW50
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBTZXR0aW5nczsKICAgICBt
dXRhYmxlIFNldHRpbmdzIG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDkzOTVkZDVkNzYzODYx
YWUzMWMxOGNiYjM4MDg0ODI5ZjAxMTZhMTYuLmNmYTVhNzZjMzgyZGI1OGRkOGQyODBkYzhjYTE3
ZTc2N2UyOWQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zOCwxMSArMzgsMTUgQEAKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JE
T01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
ICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NDQyLDggKzQ0Niw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zCiAgICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogaWMgPSBjb29raWUuZmlyc3Q7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdl
bnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQogICAgICAgICBy
ZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNw
b25zZSk7Ci0gICAgLy8gRklYTUUoNTIyODIpOiBtb3ZlIHRoaXMgdG8gY29uc29sZSBhZ2VudC4K
LSAgICBpYy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBp
Yy0+bV9jb25zb2xlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsKIH0KQEAgLTQ2NCw4ICs0NjcsNyBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciogaWMsIHVucwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIC8vIEZJWE1FKDUyMjgyKTog
bW92ZSB0aGlzIHRvIGNvbnNvbGUgYWdlbnQuCi0gICAgaWMtPmRpZEZhaWxMb2FkaW5nKGlkZW50
aWZpZXIsIGVycm9yKTsKKyAgICBpYy0+bV9jb25zb2xlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlk
ZW50aWZpZXIsIGVycm9yKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKICAgICBp
ZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3Vy
Y2VBZ2VudChpYykpCkBAIC00NzQsNyArNDc2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWcK
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQogewotICAgIGlj
LT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5kTGlu
ZU51bWJlcik7CisgICAgaWMtPm1fY29uc29sZUFnZW50LT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlcik7CiAgICAgaWYgKEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQo
aWMpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVy
LCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKIH0KQEAgLTUzOCw2ICs1NDAsNDkgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKElu
c3BlY3RvckNvbnRyb2wKIH0KICNlbmRpZgogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xlQWdlbnQoKS0+YWRk
TWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMs
IGNhbGxTdGFjayk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNz
YWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNv
bGVBZ2VudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNvdW50KFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm47CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xlQWdl
bnQoKS0+Y291bnQodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xlQWdlbnQoKS0+c3RhcnRUaW1pbmcodGl0bGUp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFRpbWluZyhQYWdlKiBw
YWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU5hbWUpCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xlQWdlbnQoKS0+c3RvcFRpbWluZyh0
aXRsZSwgbGluZU51bWJlciwgc291cmNlTmFtZSk7Cit9CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2Zp
bGluZ01lc3NhZ2VUb0NvbnNvbGUoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaWMtPm1f
cHJvZmlsZXJBZ2VudC5nZXQoKSkKKyAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQor
I2VuZGlmCisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogewogICAgIHJldHVybiBpbnNw
ZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGEwMzc3OTQ0N2NkMDE4
NTZmN2RmMzVmYTFlM2U4MzhjYTVlODMxNDIuLmJkM2JiY2Q1NTUyN2U5ZmRhYzJhZWZmYmU3OTdh
YzAyOTUwNjVmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgS1VSTDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwor
Y2xhc3MgU2NyaXB0QXJndW1lbnRzOworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCkBAIC0xMTgsNiAr
MTIwLDE5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNo
YW5nZWQoUGFnZSopOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0
dXMoRnJhbWUqKTsKKyNlbmRpZgorCisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQ
YWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKTsKKworICAg
IHN0YXRpYyB2b2lkIGNvdW50KFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFy
dFRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3RhdGljIHZvaWQgc3Rv
cFRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VOYW1lKTsKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQorICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShJ
bnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworI2VuZGlmCisKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kQ3JlYXRlZCgpIHsgc19mcm9udGVuZENv
dW50ZXIgKz0gMTsgfQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kRGVsZXRlZCgpIHsgc19mcm9u
dGVuZENvdW50ZXIgLT0gMTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGFjNjdhMWFiMGM3Y2E2MjhlY2NhYjczZjI1
YjM0MWMxN2YyZjU5NmUuLmRhOWI2N2Q3N2FlYzFhZjE5OTRmZTE2NmI5N2U4OWRjM2Y5ZTg2M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKQEAgLTkwLDEzICs5MSwxMyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxTY3JpcAogICAg
IFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKICAgICBTdHJpbmcg
dGl0bGUgPSBwcm9maWxlLT50aXRsZSgpOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICcjJywgU3RyaW5nOjpudW1iZXIocHJv
ZmlsZS0+dWlkKCkpLCAiXCIgZmluaXNoZWQuIik7Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVBZ2VudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpT
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgU3Ry
aW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJQcm9maWxlIFwid2Via2l0LXByb2ZpbGU6Ly8iLCBD
UFVQcm9maWxlVHlwZSwgJy8nLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHRpdGxlKSwg
IiMwXCIgc3RhcnRlZC4iKTsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+Y29uc29sZUFnZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9m
aWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanMKaW5kZXggYzk4NTUyZGE1OGVkN2FlY2U2OGRjYjI1YzI1YTIxNzU3YWZkOTZjMi4uYjE4
ZmNjNTMxNTdhNTlkZjJlZDRkOWUyZTVhNzQwNzczMDQ3NTBiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC05Nyw2ICs5Nyw4
IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGRyYXdlcikKICAgICAgICAg
Im5vZGUiOiAgIHRoaXMuX2Zvcm1hdG5vZGUsCiAgICAgICAgICJzdHJpbmciOiB0aGlzLl9mb3Jt
YXRzdHJpbmcKICAgICB9OworCisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXIoIkNvbnNvbGUiLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKQEAgLTI0Nyw2ICsyNDksMjggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlU2Nyb2xsSW50b1Zp
ZXcoKTsKICAgICB9LAogCisgICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKHBheWxvYWQp
CisgICAgeworICAgICAgICB2YXIgY29uc29sZU1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlKAorICAgICAgICAgICAgcGF5bG9hZC5zb3VyY2UsCisgICAgICAgICAgICBw
YXlsb2FkLnR5cGUsCisgICAgICAgICAgICBwYXlsb2FkLmxldmVsLAorICAgICAgICAgICAgcGF5
bG9hZC5saW5lLAorICAgICAgICAgICAgcGF5bG9hZC51cmwsCisgICAgICAgICAgICBwYXlsb2Fk
LnJlcGVhdENvdW50LAorICAgICAgICAgICAgcGF5bG9hZC5tZXNzYWdlLAorICAgICAgICAgICAg
cGF5bG9hZC5wYXJhbWV0ZXJzLAorICAgICAgICAgICAgcGF5bG9hZC5zdGFja1RyYWNlLAorICAg
ICAgICAgICAgcGF5bG9hZC5yZXF1ZXN0SWQpOworICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoY29u
c29sZU1lc3NhZ2UpOworICAgIH0sCisKKyAgICB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRD
b3VudDogZnVuY3Rpb24oY291bnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IFN0cmlu
Zy5zcHJpbnRmKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgY29uc29sZSBtZXNzYWdlcyBhcmUg
bm90IHNob3duLiIpLCBjb3VudCk7CisgICAgICAgIHRoaXMuYWRkTWVzc2FnZShXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UobWVzc2FnZSwgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nKSk7CisgICAgfSwKKwogICAgIHVw
ZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudDogZnVuY3Rpb24oY291bnQpCiAgICAgewogICAgICAgICB2
YXIgbXNnID0gdGhpcy5wcmV2aW91c01lc3NhZ2U7CkBAIC0yNjYsNiArMjkwLDExIEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisg
ICAgY29uc29sZU1lc3NhZ2VzQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5jbGVhck1lc3NhZ2VzKCk7CisgICAgfSwKKwogICAgIF9pbmNyZW1lbnRFcnJvcldhcm5pbmdD
b3VudDogZnVuY3Rpb24obXNnKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtc2cubGV2ZWwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5k
ZXggYjFmMGM3ODc2YmU3OGYyOTQ0OTZhMGY1ZWNhMGI4MzM1ZGJhOWYzYy4uNDJkYWMyZDZiZmZm
ZTFiNDY3YTVmZDU4ODQ3YzI1OTRiOWQ1YWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTExNzUsMTEgKzExNzUsNiBAQCBXZWJJ
bnNwZWN0b3Iuc2hvd1BhbmVsID0gZnVuY3Rpb24ocGFuZWwpCiAgICAgdGhpcy5jdXJyZW50UGFu
ZWwgPSB0aGlzLnBhbmVsc1twYW5lbF07CiB9CiAKLVdlYkluc3BlY3Rvci5jb25zb2xlTWVzc2Fn
ZXNDbGVhcmVkID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmNsZWFy
TWVzc2FnZXMoKTsKLX0KLQogV2ViSW5zcGVjdG9yLmRvbUNvbnRlbnRFdmVudEZpcmVkID0gZnVu
Y3Rpb24odGltZSkKIHsKICAgICB0aGlzLnBhbmVscy5hdWRpdHMubWFpblJlc291cmNlRE9NQ29u
dGVudFRpbWUgPSB0aW1lOwpAQCAtMTIzNywzMyArMTIzMiw2IEBAIFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRVUkxDaGFuZ2VkID0gZnVuY3Rpb24odXJsKQogICAgIHRoaXMuZXh0ZW5zaW9uU2VydmVy
Lm5vdGlmeUluc3BlY3RlZFVSTENoYW5nZWQoKTsKIH0KIAotV2ViSW5zcGVjdG9yLnVwZGF0ZUNv
bnNvbGVNZXNzYWdlRXhwaXJlZENvdW50ID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgdmFyIG1l
c3NhZ2UgPSBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIGNvbnNvbGUg
bWVzc2FnZXMgYXJlIG5vdCBzaG93bi4iKSwgY291bnQpOwotICAgIFdlYkluc3BlY3Rvci5jb25z
b2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRNZXNz
YWdlKG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2Fy
bmluZykpOwotfQotCi1XZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihw
YXlsb2FkKQotewotICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UoCi0gICAgICAgIHBheWxvYWQuc291cmNlLAotICAgICAgICBwYXlsb2FkLnR5
cGUsCi0gICAgICAgIHBheWxvYWQubGV2ZWwsCi0gICAgICAgIHBheWxvYWQubGluZSwKLSAgICAg
ICAgcGF5bG9hZC51cmwsCi0gICAgICAgIHBheWxvYWQucmVwZWF0Q291bnQsCi0gICAgICAgIHBh
eWxvYWQubWVzc2FnZSwKLSAgICAgICAgcGF5bG9hZC5wYXJhbWV0ZXJzLAotICAgICAgICBwYXls
b2FkLnN0YWNrVHJhY2UsCi0gICAgICAgIHBheWxvYWQucmVxdWVzdElkKTsKLSAgICB0aGlzLmNv
bnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7Ci19Ci0KLVdlYkluc3BlY3Rvci51cGRh
dGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50ID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgdGhp
cy5jb25zb2xlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudChjb3VudCk7Ci19Ci0KIFdlYkluc3Bl
Y3Rvci5sb2cgPSBmdW5jdGlvbihtZXNzYWdlLCBtZXNzYWdlTGV2ZWwpCiB7CiAgICAgLy8gcmVt
ZW1iZXIgJ3RoaXMnIGZvciBzZXRJbnRlcnZhbCgpIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAppbmRleCAyMTk2NDdkZGMwYmZmMzhiMGQwZWY2ODdkYmNkYzFlMDZhM2MzNzQyLi5jZjkx
NTU5ZGViOWQwYmIzNGQ5M2NiMWFjNzY5MGQyOWVlZTRkM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5jcHAKQEAgLTMxLDExICszMSwxMSBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ29uc29sZU1lc3NhZ2UuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC0xNDgsOSArMTQ4LDkgQEAgdm9pZCBD
b25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
LCBNZXNzYWdlTGV2ZWwgbGUKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGNhbGxT
dGFjaykKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIDAsIGNhbGxTdGFjayk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBz
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOwogICAgIGVsc2UKLSAg
ICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNv
dXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBz
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogI2Vu
ZGlmCiAKICAgICBpZiAoIUNvbnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQpAQCAtMTkw
LDcgKzE5MCw3IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIFBhc3NSZWZQdHI8U2NyaXB0CiAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3Vy
Y2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKHBhZ2UsIEpTTWVzc2FnZVNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICNlbmRpZgogfQogCkBA
IC0yNjAsOCArMjYwLDcgQEAgdm9pZCBDb25zb2xlOjpjb3VudChQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGwKICAgICAvLyB0aGUgc2Ft
ZSBidWNrZXQgYXMgbm8gYXJndW1lbnQKICAgICBTdHJpbmcgdGl0bGU7CiAgICAgYXJndW1lbnRz
LT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcodGl0bGUpOwotCi0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5jb3VudCh0aXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RD
YWxsZXIuc291cmNlVVJMKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y291bnQo
cGFnZSwgdGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVS
TCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7CiAjZW5kaWYKQEAgLTI4
MywzMyArMjgyLDYgQEAgdm9pZCBDb25zb2xlOjptYXJrVGltZWxpbmUoUGFzc1JlZlB0cjxTY3Jp
cHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3IKICNlbmRpZgogfQogCi0jaWYg
RU5BQkxFKFdNTCkKLVN0cmluZyBDb25zb2xlOjpsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7
Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBjb25zdCBW
ZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+JiBjb25zb2xlTWVzc2FnZXMgPSBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNvbGVNZXNzYWdlcygpOwotICAgIGlmIChjb25zb2xl
TWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBWZWN0
b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnNvbGVN
ZXNzYWdlcy5iZWdpbigpOwotICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+
ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvbnNvbGVNZXNzYWdlcy5lbmQoKTsKLQotICAgIGZv
ciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ29uc29sZU1lc3NhZ2UqIG1lc3NhZ2Ug
PSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChtZXNzYWdlLT5zb3VyY2UoKSAhPSBXTUxNZXNzYWdl
U291cmNlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgcmV0dXJuIG1lc3NhZ2Ut
Pm1lc3NhZ2UoKTsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCiB2b2lkIENvbnNvbGU6OnBy
b2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQpAQCAtMzM3LDcgKzMwOSw3IEBAIHZvaWQgQ29u
c29sZTo6cHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRTdGF0ZSogc3RhdGUsIFBh
c3NSZWZQdHI8U2NyaXB0CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNvbnN0IFNjcmlw
dENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7Ci0gICAgY29udHJvbGxl
ci0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHJlc29sdmVkVGl0bGUsIGxhc3RD
YWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb250
cm9sbGVyLCByZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxl
ci5zb3VyY2VVUkwoKSk7CiAjZW5kaWYKIH0KIApAQCAtMzcwLDE2ICszNDIsNyBAQCB2b2lkIENv
bnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRl
LCBQYXNzUmVmUHRyPFNjcgogdm9pZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgp
OwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRm9sbG93IEZpcmVi
dWcncyBiZWhhdmlvciBvZiByZXF1aXJpbmcgYSB0aXRsZSB0aGF0IGlzIG5vdCBudWxsIG9yCi0g
ICAgLy8gdW5kZWZpbmVkIGZvciB0aW1pbmcgZnVuY3Rpb25zCi0gICAgaWYgKHRpdGxlLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnN0YXJ0VGltaW5nKHRpdGxlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0
VGltaW5nKHBhZ2UoKSwgdGl0bGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGl0bGUpOwog
I2VuZGlmCkBAIC0zODgsMjMgKzM1MSw4IEBAIHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJp
bmcmIHRpdGxlKQogdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBh
c3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGb2xs
b3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIHJlcXVpcmluZyBhIHRpdGxlIHRoYXQgaXMgbm90IG51
bGwgb3IKLSAgICAvLyB1bmRlZmluZWQgZm9yIHRpbWluZyBmdW5jdGlvbnMKLSAgICBpZiAodGl0
bGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBlbGFwc2VkOwotICAg
IGlmICghcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdG9wVGltaW5nKHRpdGxlLCBlbGFw
c2VkKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSB0aXRsZSArIFN0
cmluZzo6Zm9ybWF0KCI6ICUuMGZtcyIsIGVsYXBzZWQpOwotCiAgICAgY29uc3QgU2NyaXB0Q2Fs
bEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKLSAgICBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1i
ZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wVGltaW5nKHBhZ2UoKSwgdGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBs
YXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKQEAgLTQxNCwxMSArMzYyLDcgQEAgdm9pZCBD
b25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJn
dW1lbnRzPiwgUGFzc1JlZlAKIHZvaWQgQ29uc29sZTo6Z3JvdXAoUGFzc1JlZlB0cjxTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVz
c2FnZVNvdXJjZSwgU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmlu
ZygpLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhcmd1
bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwpAQCAtNDI4LDExICszNzIsNyBA
QCB2b2lkIENvbnNvbGU6Omdyb3VwKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbAogdm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFnZSog
cGFnZSA9IHRoaXMtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChhcmd1bWVudHMsIGNh
bGxTdGFjaywgdHJ1ZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKHBhZ2UoKSwgSlNNZXNzYWdlU291cmNlLCBTdGFydEdyb3VwQ29sbGFwc2VkTWVz
c2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGFyZ3VtZW50cywgY2FsbFN0YWNr
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxTdGFjayk7CkBAIC00NDIsMTEgKzM4Miw3IEBAIHZvaWQgQ29uc29sZTo6Z3JvdXBDb2xs
YXBzZWQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxT
CiB2b2lkIENvbnNvbGU6Omdyb3VwRW5kKCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmVuZEdyb3VwKEpTTWVzc2Fn
ZVNvdXJjZSwgMCwgU3RyaW5nKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgRW5kR3JvdXBNZXNzYWdl
VHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db25zb2xlLmgKaW5kZXggZGQ2OTJhMmY3YzAxMjVkNjMxY2YxMjEzYmU3NWM0
ZDVjYjg1ZjA4MS4uY2VlZmIzODcyZWIwM2FkZWM5MzQ3YTk5N2YzNjM5MTNlYmFjZDlmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmgKQEAgLTEwMSw5ICsxMDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
c3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICB2b2lkIGNvdW50KFBhc3NSZWZQ
dHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICB2
b2lkIG1hcmtUaW1lbGluZShQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPik7Ci0jaWYgRU5BQkxFKFdNTCkKLSAgICBTdHJpbmcgbGFzdFdNTEVy
cm9yTWVzc2FnZSgpIGNvbnN0OwotI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCiAgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBt
X3Byb2ZpbGVzOyB9CiAgICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0cmluZyYsIFNjcmlwdFN0YXRl
KiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCmlu
ZGV4IDUwM2JiOTFhMDYzZWE2YjM3MWUzMzFhOWM2ZGRmN2MyMDg5ZWZlMTYuLjE4OTI4MGQyZDhl
NzQwNTI5Y2JlMTc5ZDM2N2ViYmYyMDBjYzJiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbApA
QCAtNDIsMTAgKzQyLDYgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVu
dEhhbmRsaW5nXSB2b2lkIGNvdW50KCk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5n
XSB2b2lkIG1hcmtUaW1lbGluZSgpOwogCi0jaWYgZGVmaW5lZChFTkFCTEVfV01MKSAmJiBFTkFC
TEVfV01MCi0gICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2Uo
KTsKLSNlbmRpZgotCiAjaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtD
dXN0b21HZXR0ZXJdIEFycmF5IHByb2ZpbGVzOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2Zp
bGUoaW4gRE9NU3RyaW5nIHRpdGxlKTsK
</data>
<flag name="review"
          id="70182"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78926</attachid>
            <date>2011-01-14 05:02:11 -0800</date>
            <delta_ts>2011-01-14 05:02:11 -0800</delta_ts>
            <desc>Patch that I&apos;m going to land</desc>
            <filename>console-agent.patch</filename>
            <type>text/plain</type>
            <size>65944</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNGE2YzJjMS4uNjJjZDRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNTQsNiArMTE1NCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAor
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYjQ5ZDdlZi4uZDYwNmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDExLTAx
LTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJh
Y3QgY29uc29sZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgaW50byBJbnNwZWN0b3JDb25zb2xlQWdl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMjgy
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG06CisgICAgICAgICogaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
Ojp+Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldENvbnNvbGVNZXNzYWdl
c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVh
ckNvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRN
ZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50
OjpzdG9wVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6
Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RvcFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuYWRkQ29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVD
b25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcucHJvdG90eXBlLmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjp0aW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6Omdyb3VwRW5kKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAg
ICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDExLTAxLTE0ICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggODdiZjQzNS4uYmI5MmM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTE5NTAsNiArMTk1MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGMxY2I2ZGUuLjAxYmYyMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwMDQsNiArMjAwNCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCcs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiMDQwOWYxLi41ZGYx
YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTA0NSw2ICsxMDQ1LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcCBcCkBAIC0xOTM2LDYgKzE5MzcsNyBAQCBIRUFERVJTICs9IFwKICAgICBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmgg
XAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4NDMwNjg3Li5iYzE4
NThkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNjUwMTgsNiArNjUwMTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhNDMxYjVjLi4xMjYxMWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTkwLDYgKzU1
OTAsOCBAQAogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYw
MDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVDOTgw
MjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OwogCQlGMzNGMDI4MjEy
MDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDI4MTEyMDk0N0YyMDBFNTc0M0EgLyogU2Ny
aXB0UHJvZmlsZS5jcHAgKi87IH07CisJCUYzMzM1QkY4MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgKi87IH07CisJCUYzMzM1QkY5MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JD
b25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzMzM1QkY3MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCAq
LzsgfTsKIAkJRjMzRjA1M0QxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMz
RjA1M0IxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9
OwogCQlGMzNGMDUzRTEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMzRjA1M0Mx
MjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKIAkJRjM0
NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ0QzcxMjExMjVCODJD
MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE5MjYsNiArMTE5MjgsOCBAQAogCQlF
REUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CiAJCUYzM0YwMjgxMTIwOTQ3RjIw
MEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdFByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGMzMzNUJGNjEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzMzM1QkY3MTJFMDdEQzMwMEQz
MzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYzM0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzNGMDUzQzEyMEIw
REE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MjUsNiAr
MTI5MjksOCBAQAogCQkJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCAqLywKIAkJCQk3QTFGMkI1MTEyNkM2MUIyMDAwNkE3RTYgLyog
SW5zcGVjdG9yQ2xpZW50LmNwcCAqLywKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyog
SW5zcGVjdG9yQ2xpZW50LmggKi8sCisJCQkJRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIElu
c3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgKi8sCisJCQkJRjMzMzVCRjcxMkUwN0RDMzAwRDMzMDEx
IC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oICovLAogCQkJCTFDODFCOTU3MEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKIAkJCQkxQzgxQjk1NjBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovLAogCQkJCTgyQUIxNzQxMTI0Qjk5
RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgKi8sCkBAIC0yMDgwOCw2ICsyMDgx
NCw3IEBACiAJCQkJQjg4NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3MDdBOUExMUVGNjc5NDAwQUNE
QTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGMzMzNUJGOTEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODJBQjE3NDQxMjRCOTlFQzAwQzUw
NjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUIwQjFDMTEy
MTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMjMyNyw3ICsyMjMzNCw2IEBACiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIz
MyAvKiBET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEZDMjg0MjQxMkRERjI3RTAwQkY0
MkU0IC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTU2NDBDMDEyREY5RTVFMDBGNDUzNkQgLyogSW5zcGVjdG9yU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwpAQCAtMjM1NDAsNiArMjM1NDYsNyBAQAogCQkJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAv
KiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdBMUYyQjUyMTI2QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0
b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjMzMzVCRjgxMkUwN0RDMzAwRDMzMDEx
IC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQjk1
QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4MkFCMTc0MzEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0FCMEIxQzAxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTAxNCw3ICsyNTAyMSw2IEBA
CiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNEZDMjg0MjUxMkRERjI3RTAwQkY0MkU0IC8qIEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTY0MEJGMTJERjlF
NUUwMEY0NTM2RCAvKiBJbnNwZWN0b3JTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggYjhh
ZWEwZS4uN2EyNzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTIwLDYgKzIwLDExIEBAICR0eXBlVHJhbnNmb3JteyJD
U1MifSA9IHsKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIsCiAgICAgImRv
bWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2Nzc0FnZW50IiwKIH07
CiskdHlwZVRyYW5zZm9ybXsiQ29uc29sZSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVj
dG9yQ29uc29sZUFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9j
b25zb2xlQWdlbnQiLAorfTsKICR0eXBlVHJhbnNmb3JteyJEZWJ1Z2dlciJ9ID0gewogICAgICJm
b3J3YXJkIiA9PiAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudCIsCiAgICAgImhlYWRlciIgPT4gIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAppbmRleCBiMjJhNmVmLi44ZDU2YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTgyLDYgKzgyLDEwIEBAIENvbnNvbGVN
ZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1l
c3NhZ2VMZXZlbCBsLCBjCiB7CiB9CiAKK0NvbnNvbGVNZXNzYWdlOjp+Q29uc29sZU1lc3NhZ2Uo
KQoreworfQorCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3Qp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iaiA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCmlu
ZGV4IDA2YTE3ZDQuLjMxMGFhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0s
IHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUpOwogICAgIENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwog
ICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbSwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVybCwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKKyAgICB+Q29uc29sZU1lc3NhZ2UoKTsKIAogICAgIHZvaWQgYWRk
VG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCosIEluamVjdGVkU2NyaXB0SG9zdCopOwogICAg
IHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5j
cHAKaW5kZXggOGQ2YzhlNy4uM2ZkNzBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCkBAIC04Myw3ICs4
NCw3IEBAIEluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCgpCiB2b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQogewogICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y2xlYXJD
b25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xl
QWdlbnQoKS0+Y2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggM2RiYzAwNy4uZmNlM2MzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTc1LDEyICs3NSwxMiBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIC8vIENvbnNvbGUgQVBJCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLSAgICAgICAg
W2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChpbiBib29s
ZWFuIGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0YXRlKTsKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPUluc3BlY3Rvcl0gdm9pZCBhZGRDb25zb2xlTWVzc2FnZShvdXQgT2JqZWN0IG1lc3NhZ2VP
YmopOwotICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIHVwZGF0ZUNvbnNv
bGVNZXNzYWdlRXhwaXJlZENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICAgICAg
W25vdGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVh
dENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0
b3JdIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCBjb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CisgICAgICAgIFtkb21h
aW49Q29uc29sZV0gdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5h
YmxlZCwgb3V0IGJvb2xlYW4gbmV3U3RhdGUpOworICAgICAgICBbbm90aWZ5LCBkb21haW49Q29u
c29sZV0gdm9pZCBhZGRDb25zb2xlTWVzc2FnZShvdXQgT2JqZWN0IG1lc3NhZ2VPYmopOworICAg
ICAgICBbbm90aWZ5LCBkb21haW49Q29uc29sZV0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4
cGlyZWRDb3VudChvdXQgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgICAgIFtub3RpZnksIGRv
bWFpbj1Db25zb2xlXSB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQob3V0IHVu
c2lnbmVkIGxvbmcgY291bnQpOworICAgICAgICBbZG9tYWluPUNvbnNvbGVdIHZvaWQgY2xlYXJD
b25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUNvbnNvbGVdIHZvaWQg
Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOwogCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAg
ICAgIC8vIE5ldHdvcmsgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjllZWFkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50Lmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRl
ICJDb25zb2xlTWVzc2FnZS5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
U3RhdGUuaCIKKyNpbmNsdWRlICJPd25QdHIuaCIKKyNpbmNsdWRlICJQYXNzT3duUHRyLmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAwMDsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTAwOworCitJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCisgICAgOiBtX2luc3BlY3RvckNv
bnRyb2xsZXIoaW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAsIG1fc3RhdGUoc3RhdGUpCisgICAg
LCBtX2Zyb250ZW5kKDApCisgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQorICAgICwgbV9leHBp
cmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQoreworfQorCitJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQoreworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9
IDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzZXRDb25zb2xlTWVzc2FnZXNF
bmFibGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpCit7CisgICAgKm5ld1N0YXRlID0g
ZW5hYmxlZDsKKyAgICBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGVuYWJsZWQpOworfQorCit2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQoreworICAg
IG1fY29uc29sZU1lc3NhZ2VzLmNsZWFyKCk7CisgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VD
b3VudCA9IDA7CisgICAgbV9wcmV2aW91c01lc3NhZ2UgPSAwOworICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAo
MCAvKiByZWxlYXNlIHRoZSBncm91cCBpbiBhbGwgc2NyaXB0cyAqLywgImNvbnNvbGUiKTsKKyAg
ICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5kb21BZ2VudCgpKQorICAgICAgICBkb21BZ2VudC0+cmVsZWFzZURhbmdsaW5nTm9kZXMoKTsK
KyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9udGVuZC0+Y29uc29sZU1lc3NhZ2Vz
Q2xlYXJlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQoKQorewor
ICAgIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgbV90aW1lcy5jbGVhcigpOworICAgIG1f
Y291bnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgbV9mcm9udGVuZCA9IGZy
b250ZW5kOworfQorCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit7Cisg
ICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjaykpOworfQorCit2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit7Cisg
ICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCkpOworfQorCit2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIHJlcXVpcmluZyBhIHRpdGxlIHRoYXQg
aXMgbm90IG51bGwgb3IKKyAgICAvLyB1bmRlZmluZWQgZm9yIHRpbWluZyBmdW5jdGlvbnMKKyAg
ICBpZiAodGl0bGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGltZXMuYWRk
KHRpdGxlLCBjdXJyZW50VGltZSgpICogMTAwMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpzdG9wVGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlTmFtZSkKK3sKKyAgICAvLyBGb2xsb3cgRmlyZWJ1Zydz
IGJlaGF2aW9yIG9mIHJlcXVpcmluZyBhIHRpdGxlIHRoYXQgaXMgbm90IG51bGwgb3IKKyAgICAv
LyB1bmRlZmluZWQgZm9yIHRpbWluZyBmdW5jdGlvbnMKKyAgICBpZiAodGl0bGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+OjppdGVyYXRv
ciBpdCA9IG1fdGltZXMuZmluZCh0aXRsZSk7CisgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBpdC0+c2Vjb25kOwor
ICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKKworICAgIGRvdWJsZSBlbGFwc2VkID0gY3VycmVudFRp
bWUoKSAqIDEwMDAgLSBzdGFydFRpbWU7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSB0aXRsZSArIFN0
cmluZzo6Zm9ybWF0KCI6ICUuMGZtcyIsIGVsYXBzZWQpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VOYW1lKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmNvdW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlSUQpCit7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtYWtlU3Ry
aW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlELCAnOicsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIp
KTsKKyAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaW50IGNvdW50OworICAgIGlmIChpdCA9PSBtX2NvdW50
cy5lbmQoKSkKKyAgICAgICAgY291bnQgPSAxOworICAgIGVsc2UgeworICAgICAgICBjb3VudCA9
IGl0LT5zZWNvbmQgKyAxOworICAgICAgICBtX2NvdW50cy5yZW1vdmUoaXQpOworICAgIH0KKwor
ICAgIG1fY291bnRzLmFkZChpZGVudGlmaWVyLCBjb3VudCk7CisKKyAgICBTdHJpbmcgbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcodGl0bGUsICI6ICIsIFN0cmluZzo6bnVtYmVyKGNvdW50KSk7CisgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dN
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcikKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yU3Rh
dGU6Om1vbml0b3JpbmdYSFIpKQorICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBs
b2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIiwgc2VuZExpbmVOdW1iZXIsIHNlbmRVUkwpOworfQor
Cit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7Cisg
ICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CisgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRo
ZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgU3RyaW5nOjpudW1iZXIocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCks
ICcpJyk7CisgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShPdGhl
ck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGlkZW50aWZpZXIpKTsKKyAgICB9
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlm
ICghbV9pbnNwZWN0b3JDb250cm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFN0cmluZyBtZXNzYWdlID0gIkZhaWxlZCB0byBsb2FkIHJlc291cmNlIjsKKyAgICBpZiAo
IWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQorICAgICAgICBtZXNzYWdl
ICs9ICI6ICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOworICAgIGFkZENvbnNvbGVN
ZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJv
ck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VS
TCgpLCBpZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzZXRD
b25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKEluc3BlY3RvclN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkLCBlbmFibGVkKTsK
KyAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQpCisgICAgICAgIG1fZnJv
bnRlbmQtPnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KG1fZXhwaXJlZENvbnNvbGVN
ZXNzYWdlQ291bnQpOworICAgIHVuc2lnbmVkIG1lc3NhZ2VDb3VudCA9IG1fY29uc29sZU1lc3Nh
Z2VzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWVzc2FnZUNvdW50OyAr
K2kpCisgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzW2ldLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRl
bmQsIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkpOworfQorCit2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxD
b25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9y
Q29udHJvbGxlci0+ZW5hYmxlZCgpKTsKKyAgICBBU1NFUlRfQVJHKGNvbnNvbGVNZXNzYWdlLCBj
b25zb2xlTWVzc2FnZSk7CisKKyAgICBpZiAobV9wcmV2aW91c01lc3NhZ2UgJiYgbV9wcmV2aW91
c01lc3NhZ2UtPmlzRXF1YWwoY29uc29sZU1lc3NhZ2UuZ2V0KCkpKSB7CisgICAgICAgIG1fcHJl
dmlvdXNNZXNzYWdlLT5pbmNyZW1lbnRDb3VudCgpOworICAgICAgICBpZiAobV9zdGF0ZS0+Z2V0
Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCkgJiYgbV9mcm9u
dGVuZCkKKyAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRDb3VudElu
Q29uc29sZShtX2Zyb250ZW5kKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3ByZXZpb3VzTWVz
c2FnZSA9IGNvbnNvbGVNZXNzYWdlLmdldCgpOworICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5h
cHBlbmQoY29uc29sZU1lc3NhZ2UpOworICAgICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJ
bnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCkgJiYgbV9mcm9udGVuZCkKKyAg
ICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmQsIG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkpOworICAgIH0KKworICAg
IGlmICghbV9mcm9udGVuZCAmJiBtX2NvbnNvbGVNZXNzYWdlcy5zaXplKCkgPj0gbWF4aW11bUNv
bnNvbGVNZXNzYWdlcykgeworICAgICAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50ICs9
IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXA7CisgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLnJl
bW92ZSgwLCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwKTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFkMWNjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckNvbnNvbGVBZ2VudF9oCisjZGVm
aW5lIEluc3BlY3RvckNvbnNvbGVBZ2VudF9oCisKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworY2xhc3MgQ29uc29sZU1lc3Nh
Z2U7CitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0QXJndW1lbnRzOworY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrOworY2xhc3MgU2NyaXB0UHJvZmlsZTsKKworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JDb25zb2xlQWdl
bnQoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3RvclN0YXRlKik7CisgICAgfkluc3BlY3Rv
ckNvbnNvbGVBZ2VudCgpOworCisgICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOworICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2Fn
ZXMoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworCisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAg
IHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlSUQpOworCisgICAgdm9pZCBzdGFydFRpbWluZyhjb25zdCBTdHJp
bmcmIHRpdGxlKTsKKyAgICB2b2lkIHN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VOYW1lKTsKKyAgICB2b2lkIGNv
dW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQpOworCisgICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2Vu
ZExpbmVOdW1iZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Cisj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgdm9pZCBhZGRQcm9maWxlRmluaXNo
ZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2b2lkIGFkZFN0YXJ0UHJv
ZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPik7CisKKyAgICBJbnNwZWN0b3JD
b250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CisgICAgSW5zcGVjdG9yU3RhdGUqIG1f
c3RhdGU7CisgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7CisgICAgQ29uc29sZU1l
c3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOworICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3Nh
Z2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7CisgICAgdW5zaWduZWQgbV9leHBpcmVkQ29uc29sZU1l
c3NhZ2VDb3VudDsKKyAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fY291bnRzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7Cit9OworCisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQ29uc29sZUFn
ZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggNjU0N2ZiNy4uNWEwNGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiQ29u
c29sZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTYwLDYgKzU4LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmgiCkBAIC0xMzEsMjUgKzEzMCwyMSBAQCBjb25zdCBjaGFyKiBjb25zdCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpDb25zb2xlUGFuZWwgPSAiY29uc29sZSI7CiBjb25zdCBjaGFyKiBj
b25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTY3JpcHRzUGFuZWwgPSAic2NyaXB0cyI7CiBjb25z
dCBjaGFyKiBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpQcm9maWxlc1BhbmVsID0gInByb2Zp
bGVzIjsKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1Db25zb2xlTWVzc2FnZXMgPSAx
MDAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAx
MDA7Ci0KIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFnZSkK
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNlKQog
ICAgICwgbV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAsIG1fZXhwaXJl
ZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKLSAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCisgICAg
LCBtX3N0YXRlKG5ldyBJbnNwZWN0b3JTdGF0ZShjbGllbnQpKQogICAgICwgbV9pbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIodGhpcykpCiAg
ICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlz
KSkKKyAgICAsIG1fY29uc29sZUFnZW50KG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQodGhpcywg
bV9zdGF0ZS5nZXQoKSkpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLCBt
X2F0dGFjaERlYnVnZ2VyV2hlblNob3duKGZhbHNlKQogICAgICwgbV9oYXNYSFJCcmVha3BvaW50
V2l0aEVtcHR5VVJMKGZhbHNlKQogICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgogewotICAgIG1fc3RhdGUgPSBuZXcgSW5z
cGVjdG9yU3RhdGUoY2xpZW50KTsKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwogICAgIEFT
U0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMzA3LDg1ICszMDIsNiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQoKQogICAgIG1fY2xpZW50LT5oaWRlSGln
aGxpZ2h0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q29uc29sZU1lc3Nh
Z2VzRW5hYmxlZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKQotewotICAgICpuZXdTdGF0
ZSA9IGVuYWJsZWQ7Ci0gICAgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChlbmFibGVkKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCkKLXsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjpj
b25zb2xlTWVzc2FnZXNFbmFibGVkLCBlbmFibGVkKTsKLSAgICBpZiAoIWVuYWJsZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KQotICAg
ICAgICBtX2Zyb250ZW5kLT51cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudChtX2V4cGly
ZWRDb25zb2xlTWVzc2FnZUNvdW50KTsKLSAgICB1bnNpZ25lZCBtZXNzYWdlQ291bnQgPSBtX2Nv
bnNvbGVNZXNzYWdlcy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1lc3Nh
Z2VDb3VudDsgKytpKQotICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVu
ZChtX2Zyb250ZW5kLmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCi17Ci0gICAgaWYgKCFlbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVz
c2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjaykp
OwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBj
b25zb2xlTWVzc2FnZSkKLXsKLSAgICBBU1NFUlQoZW5hYmxlZCgpKTsKLSAgICBBU1NFUlRfQVJH
KGNvbnNvbGVNZXNzYWdlLCBjb25zb2xlTWVzc2FnZSk7Ci0KLSAgICBpZiAobV9wcmV2aW91c01l
c3NhZ2UgJiYgbV9wcmV2aW91c01lc3NhZ2UtPmlzRXF1YWwoY29uc29sZU1lc3NhZ2UuZ2V0KCkp
KSB7Ci0gICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5pbmNyZW1lbnRDb3VudCgpOwotICAgICAg
ICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2Vz
RW5hYmxlZCkgJiYgbV9mcm9udGVuZCkKLSAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51
cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShtX2Zyb250ZW5kLmdldCgpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlLmdldCgpOwotICAg
ICAgICBtX2NvbnNvbGVNZXNzYWdlcy5hcHBlbmQoY29uc29sZU1lc3NhZ2UpOwotICAgICAgICBp
ZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5h
YmxlZCkgJiYgbV9mcm9udGVuZCkKLSAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRU
b0Zyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fZnJvbnRlbmQgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgp
ID49IG1heGltdW1Db25zb2xlTWVzc2FnZXMpIHsKLSAgICAgICAgbV9leHBpcmVkQ29uc29sZU1l
c3NhZ2VDb3VudCArPSBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwOwotICAgICAgICBtX2NvbnNv
bGVNZXNzYWdlcy5yZW1vdmUoMCwgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCk7Ci0gICAgfQot
fQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKLXsK
LSAgICBtX2NvbnNvbGVNZXNzYWdlcy5jbGVhcigpOwotICAgIG1fZXhwaXJlZENvbnNvbGVNZXNz
YWdlQ291bnQgPSAwOwotICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKLSAgICBtX2luamVjdGVk
U2NyaXB0SG9zdC0+cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCgwIC8qIHJlbGVhc2UgdGhlIGdy
b3VwIGluIGFsbCBzY3JpcHRzICovLCAiY29uc29sZSIpOwotICAgIGlmIChtX2RvbUFnZW50KQot
ICAgICAgICBtX2RvbUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwotICAgIGlmIChtX2Zy
b250ZW5kKQotICAgICAgICBtX2Zyb250ZW5kLT5jb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChQYXNzUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrLCBib29sIGNvbGxhcHNlZCkKLXsKLSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29s
ZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2Vk
TWVzc2FnZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIiIs
IGFyZ3VtZW50cywgY2FsbFN0YWNrKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xl
TWVzc2FnZShzb3VyY2UsIEVuZEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3Ry
aW5nKCksIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6Om1hcmtUaW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHRp
bWVsaW5lQWdlbnQoKSkKQEAgLTQ4OSw2ICs0MDUsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKICAgICAgICAg
bV90aW1lbGluZUFnZW50LT5yZXNldEZyb250ZW5kUHJveHlPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CiAKKyAgICBtX2NvbnNvbGVBZ2VudC0+c2V0RnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSk7
CisKICAgICAvLyBJbml0aWFsaXplIFdlYiBJbnNwZWN0b3IgdGl0bGUuCiAgICAgbV9mcm9udGVu
ZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2Fk
ZXIoKS0+dXJsKCkuc3RyaW5nKCkpOwogCkBAIC01NzIsNiArNDkwLDcgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fcHJvZmlsZXJBZ2VudC0+
c2V0RnJvbnRlbmQoMCk7CiAgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFBy
b2ZpbGluZyh0cnVlKTsKICNlbmRpZgorICAgIG1fY29uc29sZUFnZW50LT5zZXRGcm9udGVuZCgw
KTsKIAogICAgIHJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7CiAgICAgbV90aW1lbGlu
ZUFnZW50LmNsZWFyKCk7CkBAIC03MTYsMTAgKzYzNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAg
bV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChsb2FkZXItPnVybCgpLnN0cmluZygpKTsK
IAogICAgICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+ZGlzY2FyZEluamVjdGVkU2NyaXB0cygp
OwotICAgICAgICBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwotCi0gICAgICAgIG1fdGltZXMuY2xl
YXIoKTsKLSAgICAgICAgbV9jb3VudHMuY2xlYXIoKTsKKyAgICAgICAgbV9jb25zb2xlQWdlbnQt
PnJlc2V0KCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgaWYg
KG1fZGVidWdnZXJBZ2VudCkgewpAQCAtODEzLDM3ICs3MjksNiBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAg
fQogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQg
d2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRk
Q29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0
d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSwgaWRlbnRpZmllcikpOwotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSA9ICJGYWlsZWQgdG8gbG9hZCByZXNvdXJj
ZSI7Ci0gICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKLSAg
ICAgICAgbWVzc2FnZSArPSAiOiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKLSAg
ICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNl
LCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGVy
cm9yLmZhaWxpbmdVUkwoKSwgaWRlbnRpZmllcikpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKLXsKLSAg
ICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc3RhdGUtPmdl
dEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6Om1vbml0b3JpbmdYSFIpKQotICAgICAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIiwgc2VuZExpbmVO
dW1iZXIsIHNlbmRVUkwpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVNl
dHRpbmdzTG9hZGVkKCkKIHsKICAgICBpZiAobV9zZXR0aW5ncykKQEAgLTExMTAsMTcgKzk5NSw2
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnCiAgICAgbV9wcm9maWxlckFnZW50LT5hZGRQcm9m
aWxlKHBycFByb2ZpbGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIG1fcHJvZmlsZXJBZ2VudC0+YWRkUHJvZmlsZUZp
bmlzaGVkTWVzc2FnZVRvQ29uc29sZShwcnBQcm9maWxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
OwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2Fn
ZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3Byb2ZpbGVyQWdlbnQtPmFkZFN0YXJ0UHJv
ZmlsaW5nTWVzc2FnZVRvQ29uc29sZSh0aXRsZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKLX0K
LQotCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFBy
b2ZpbGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb2ZpbGVyQWdlbnQtPmlzUmVjb3JkaW5n
VXNlckluaXRpYXRlZFByb2ZpbGUoKTsKQEAgLTE2NDMsNDIgKzE1MTcsNiBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Om9wZW5Jbkluc3BlY3RlZFdpbmRvdyhjb25zdCBTdHJpbmcmIHVybCkK
ICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKG1haW5GcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbmV3RnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTCh1
cmwpLCAiIiwgZmFsc2UsIGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
b3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUlEKQotewotICAgIFN0cmluZyBpZGVudGlmaWVyID0gbWFrZVN0cmluZyh0aXRs
ZSwgJ0AnLCBzb3VyY2VJRCwgJzonLCBTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPjo6aXRlcmF0b3IgaXQgPSBtX2NvdW50cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGludCBjb3VudDsKLSAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkp
Ci0gICAgICAgIGNvdW50ID0gMTsKLSAgICBlbHNlIHsKLSAgICAgICAgY291bnQgPSBpdC0+c2Vj
b25kICsgMTsKLSAgICAgICAgbV9jb3VudHMucmVtb3ZlKGl0KTsKLSAgICB9Ci0KLSAgICBtX2Nv
dW50cy5hZGQoaWRlbnRpZmllciwgY291bnQpOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJlcihjb3VudCkpOwotICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBtX3Rp
bWVzLmFkZCh0aXRsZSwgY3VycmVudFRpbWUoKSAqIDEwMDApOwotfQotCi1ib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlJiBlbGFw
c2VkKQotewotICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+OjppdGVyYXRvciBpdCA9IG1fdGlt
ZXMuZmluZCh0aXRsZSk7Ci0gICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBpdC0+c2Vjb25kOwotICAgIG1f
dGltZXMucmVtb3ZlKGl0KTsKLQotICAgIGVsYXBzZWQgPSBjdXJyZW50VGltZSgpICogMTAwMCAt
IHN0YXJ0VGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogSW5qZWN0ZWRTY3JpcHQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBpZCkKIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggY2Nm
MzQ0ZS4uZjBkNWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwotY2xhc3MgQ29uc29sZU1l
c3NhZ2U7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CkBAIC01OCw2ICs1Nyw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIGNsYXNz
IEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFz
cyBJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JDU1NBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OwpAQCAtMTQyLDExICsxNDIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXVzZUZyb250ZW5kKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAotICAg
IHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0
YXRlKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwot
ICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKLSAgICBj
b25zdCBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+JiBjb25zb2xlTWVzc2FnZXMoKSBj
b25zdCB7IHJldHVybiBtX2NvbnNvbGVNZXNzYWdlczsgfQorICAgIEluc3BlY3RvckNvbnNvbGVB
Z2VudCogY29uc29sZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlQWdlbnQuZ2V0KCk7
IH0KKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rv
bUFnZW50LmdldCgpOyB9CiAKICAgICBib29sIHNlYXJjaGluZ0Zvck5vZGVJblBhZ2UoKSBjb25z
dDsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQm
LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKQEAgLTIwNSwyMCArMjAyLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG9wZW5Jbkluc3BlY3RlZFdpbmRvdyhjb25zdCBTdHJpbmcmIHVybCk7CiAgICAg
dm9pZCBkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGJv
dW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIG92ZXJsYXlSZWN0LCBXZWJDb3JlOjpTZXR0aW5n
cyopIGNvbnN0OwogCi0gICAgdm9pZCBjb3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKLQotICAgIHZvaWQgc3RhcnRU
aW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgYm9vbCBzdG9wVGltaW5nKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGRvdWJsZSYgZWxhcHNlZCk7Ci0KLSAgICB2b2lkIHN0YXJ0R3JvdXAoUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bEZyYW1lLCBib29sIGNvbGxhcHNlZCA9IGZhbHNlKTsKLSAgICB2b2lkIGVuZEdyb3VwKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7Ci0KICAgICB2b2lkIG1hcmtUaW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgdm9pZCBhZGRQcm9maWxlKFBh
c3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNv
bGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKICAgICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2Zp
bGUoKSBjb25zdDsKICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7CiAgICAgdm9pZCBzdGFydFBy
b2ZpbGluZygpIHsgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7IH0KQEAgLTI2OSwxNCAr
MjU2LDEwIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
IAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCByZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVS
TCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogCiAgICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xv
YWRlZCgpOwogCiAgICAgdm9pZCBnZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Piogc3RhdGUpOwotICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sKTsK
IAogICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCByZXN0b3JlRGVi
dWdnZXIoKTsKQEAgLTMwNiw4ICsyODksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmb2N1c05v
ZGUoKTsKIAotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVz
c2FnZT4pOwotCiAgICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKTsKIAogICAgIHZvaWQgZGlkRXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsK
QEAgLTM0MiwxMCArMzIzLDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVU
b0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNlQWdl
bnQ7Ci0gICAgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4gPiBtX2NvbnNvbGVNZXNzYWdl
czsKLSAgICB1bnNpZ25lZCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwotICAgIEhhc2hN
YXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBtX2NvdW50czsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICB0eXBlZGVmIEhhc2hNYXA8
aW50LCBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gPiBEYXRhYmFzZVJlc291cmNl
c01hcDsKQEAgLTM1OCw5ICszMzUsOSBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fc2hvd0Fm
dGVyVmlzaWJsZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7Ci0gICAgQ29u
c29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwogICAgIE93blB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKKyAgICBPd25QdHI8SW5z
cGVjdG9yQ29uc29sZUFnZW50PiBtX2NvbnNvbGVBZ2VudDsKIAogICAgIFZlY3RvcjxwYWlyPGxv
bmcsIFN0cmluZz4gPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA4OTA1N2Ey
Li40NzMxNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzgsMTEgKzM4LDE1IEBACiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiU2Ny
aXB0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAi
WE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ0
Miw4ICs0NDYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3BlY3RvcklucwogICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIGljID0gY29va2llLmZpcnN0OwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKICAgICAgICAgcmVz
b3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9u
c2UpOwotICAgIC8vIEZJWE1FKDUyMjgyKTogbW92ZSB0aGlzIHRvIGNvbnNvbGUgYWdlbnQuCi0g
ICAgaWMtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgaWMt
Pm1fY29uc29sZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKCk7CiB9CkBAIC00NjQsOCArNDY3LDcgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGljLCB1bnMKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2Fk
aW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICAvLyBGSVhNRSg1MjI4Mik6IG1v
dmUgdGhpcyB0byBjb25zb2xlIGFnZW50LgotICAgIGljLT5kaWRGYWlsTG9hZGluZyhpZGVudGlm
aWVyLCBlcnJvcik7CisgICAgaWMtPm1fY29uc29sZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQogICAgICAgICB0aW1lbGluZUFnZW50
LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7CiAgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNl
QWdlbnQoaWMpKQpAQCAtNDc0LDcgKzQ3Niw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnCiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKLSAgICBpYy0+
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVO
dW1iZXIpOworICAgIGljLT5tX2NvbnNvbGVBZ2VudC0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGlj
KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwg
c291cmNlU3RyaW5nLCAiWEhSIik7CiB9CkBAIC01MzgsNiArNTQwLDQ5IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnNw
ZWN0b3JDb250cm9sCiB9CiAjZW5kaWYKIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSogcGFnZSwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKQoreworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBj
YWxsU3RhY2spOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2Fn
ZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xl
QWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb3VudChQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50
KCktPmNvdW50KHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFRpbWluZyhQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQoreworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPnN0YXJ0VGltaW5nKHRpdGxlKTsK
K30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BUaW1pbmcoUGFnZSogcGFn
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VOYW1lKQoreworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPnN0b3BUaW1pbmcodGl0
bGUsIGxpbmVOdW1iZXIsIHNvdXJjZU5hbWUpOworfQorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9maWxp
bmdNZXNzYWdlVG9Db25zb2xlKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sK
KyAgICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGljLT5tX3By
b2ZpbGVyQWdlbnQuZ2V0KCkpCisgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFN0YXJ0UHJvZmls
aW5nTWVzc2FnZVRvQ29uc29sZSh0aXRsZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKyNl
bmRpZgorCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAgICByZXR1cm4gaW5zcGVj
dG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBhMDM3Nzk0Li43Zjc0NGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNjcmlw
dEFyZ3VtZW50czsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIApAQCAtMTE4LDYgKzEyMCwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2Uq
KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7
CisKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBh
c3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYpOworCisgICAgc3RhdGljIHZvaWQgY291bnQo
UGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlSUQpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0VGltaW5nKFBhZ2UqLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wVGltaW5nKFBhZ2UqLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU5hbWUpOworCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgc3RhdGljIHZv
aWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAg
c3RhdGljIHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAKaW5kZXggYWM2N2ExYS4uZGE5YjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCiAj
aW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtOTAsMTMgKzkxLDEzIEBA
IHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRv
Q29uc29sZShQYXNzUmVmUHRyPFNjcmlwCiAgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2Zp
bGUgPSBwcnBQcm9maWxlOwogICAgIFN0cmluZyB0aXRsZSA9IHByb2ZpbGUtPnRpdGxlKCk7CiAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJQcm9maWxlIFwid2Via2l0LXByb2ZpbGU6
Ly8iLCBDUFVQcm9maWxlVHlwZSwgJy8nLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHRp
dGxlKSwgJyMnLCBTdHJpbmc6Om51bWJlcihwcm9maWxlLT51aWQoKSksICJcIiBmaW5pc2hlZC4i
KTsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUFn
ZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQog
CiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRv
Q29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlBy
b2ZpbGUgXCJ3ZWJraXQtcHJvZmlsZTovLyIsIENQVVByb2ZpbGVUeXBlLCAnLycsIGVuY29kZVdp
dGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0bGUpLCAiIzBcIiBzdGFydGVkLiIpOwotICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQWdlbnQoKS0+YWRkTWVz
c2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVh
ZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmIHByb2ZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCBmMmI3Y2ExLi5hNDAwMzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanMKQEAgLTk3LDkgKzk3LDYzIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0
aW9uKGRyYXdlcikKICAgICAgICAgIm5vZGUiOiAgIHRoaXMuX2Zvcm1hdG5vZGUsCiAgICAgICAg
ICJzdHJpbmciOiB0aGlzLl9mb3JtYXRzdHJpbmcKICAgICB9OworCisgICAgdGhpcy5fcmVnaXN0
ZXJDb25zb2xlRG9tYWluRGlzcGF0Y2hlcigpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVZp
ZXcucHJvdG90eXBlID0geworICAgIF9yZWdpc3RlckNvbnNvbGVEb21haW5EaXNwYXRjaGVyOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSB0aGlzOworICAgICAgICB2YXIgZGlz
cGF0Y2hlciA9IHsKKyAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlOiBmdW5jdGlvbihwYXls
b2FkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlTWVzc2FnZSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgIHBh
eWxvYWQuc291cmNlLAorICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgIHBheWxvYWQubGV2ZWwsCisgICAgICAgICAgICAgICAgICAgIHBheWxvYWQu
bGluZSwKKyAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC51cmwsCisgICAgICAgICAgICAgICAg
ICAgIHBheWxvYWQucmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgIHBheWxvYWQubWVz
c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5wYXJhbWV0ZXJzLAorICAgICAgICAg
ICAgICAgICAgICBwYXlsb2FkLnN0YWNrVHJhY2UsCisgICAgICAgICAgICAgICAgICAgIHBheWxv
YWQucmVxdWVzdElkKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFkZE1lc3NhZ2UoY29uc29s
ZU1lc3NhZ2UpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgdXBkYXRlQ29uc29sZU1l
c3NhZ2VFeHBpcmVkQ291bnQ6IGZ1bmN0aW9uKGNvdW50KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciBtZXNzYWdlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlZCBjb25zb2xlIG1lc3NhZ2VzIGFyZSBub3Qgc2hvd24uIiksIGNvdW50KTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlTGV2ZWwuV2FybmluZykpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgdXBk
YXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudDogZnVuY3Rpb24oY291bnQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9IGNvbnNvbGUucHJldmlvdXNNZXNzYWdlOwor
ICAgICAgICAgICAgICAgIHZhciBwcmV2UmVwZWF0Q291bnQgPSBtc2cudG90YWxSZXBlYXRDb3Vu
dDsKKworICAgICAgICAgICAgICAgIGlmICghY29uc29sZS5jb21tYW5kU2luY2VQcmV2aW91c01l
c3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnLnJlcGVhdERlbHRhID0gY291bnQgLSBw
cmV2UmVwZWF0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgIG1zZy5yZXBlYXRDb3VudCA9IG1z
Zy5yZXBlYXRDb3VudCArIG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgbXNn
LnRvdGFsUmVwZWF0Q291bnQgPSBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgbXNnLl91cGRh
dGVSZXBlYXRDb3VudCgpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLl9pbmNyZW1lbnRF
cnJvcldhcm5pbmdDb3VudChtc2cpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBtc2dDb3B5ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZShtc2cuc291cmNlLCBtc2cudHlwZSwgbXNnLmxldmVsLCBtc2cubGluZSwgbXNnLnVybCwgY291
bnQgLSBwcmV2UmVwZWF0Q291bnQsIG1zZy5fbWVzc2FnZVRleHQsIG1zZy5fcGFyYW1ldGVycywg
bXNnLl9zdGFja1RyYWNlLCBtc2cuX3JlcXVlc3RJZCk7CisgICAgICAgICAgICAgICAgICAgIG1z
Z0NvcHkudG90YWxSZXBlYXRDb3VudCA9IGNvdW50OworICAgICAgICAgICAgICAgICAgICBtc2dD
b3B5Ll9mb3JtYXRNZXNzYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYWRkTWVz
c2FnZShtc2dDb3B5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICBjb25zb2xlTWVzc2FnZXNDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29uc29sZS5jbGVhck1lc3NhZ2VzKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3Bh
dGNoZXIoIkNvbnNvbGUiLCBkaXNwYXRjaGVyKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZUZpbHRl
cjogZnVuY3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBpc01hYyA9IFdlYkluc3BlY3Rvci5p
c01hYygpOwpAQCAtMjQ3LDI1ICszMDEsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVTY3JvbGxJbnRvVmlldygpOwog
ICAgIH0sCiAKLSAgICB1cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKGNvdW50KQot
ICAgIHsKLSAgICAgICAgdmFyIG1zZyA9IHRoaXMucHJldmlvdXNNZXNzYWdlOwotICAgICAgICB2
YXIgcHJldlJlcGVhdENvdW50ID0gbXNnLnRvdGFsUmVwZWF0Q291bnQ7Ci0KLSAgICAgICAgaWYg
KCF0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZSkgewotICAgICAgICAgICAgbXNnLnJl
cGVhdERlbHRhID0gY291bnQgLSBwcmV2UmVwZWF0Q291bnQ7Ci0gICAgICAgICAgICBtc2cucmVw
ZWF0Q291bnQgPSBtc2cucmVwZWF0Q291bnQgKyBtc2cucmVwZWF0RGVsdGE7Ci0gICAgICAgICAg
ICBtc2cudG90YWxSZXBlYXRDb3VudCA9IGNvdW50OwotICAgICAgICAgICAgbXNnLl91cGRhdGVS
ZXBlYXRDb3VudCgpOwotICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JXYXJuaW5nQ291
bnQobXNnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtc2dDb3B5ID0gbmV3
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShtc2cuc291cmNlLCBtc2cudHlwZSwgbXNnLmxl
dmVsLCBtc2cubGluZSwgbXNnLnVybCwgY291bnQgLSBwcmV2UmVwZWF0Q291bnQsIG1zZy5fbWVz
c2FnZVRleHQsIG1zZy5fcGFyYW1ldGVycywgbXNnLl9zdGFja1RyYWNlLCBtc2cuX3JlcXVlc3RJ
ZCk7Ci0gICAgICAgICAgICBtc2dDb3B5LnRvdGFsUmVwZWF0Q291bnQgPSBjb3VudDsKLSAgICAg
ICAgICAgIG1zZ0NvcHkuX2Zvcm1hdE1lc3NhZ2UoKTsKLSAgICAgICAgICAgIHRoaXMuYWRkTWVz
c2FnZShtc2dDb3B5KTsKLSAgICAgICAgfQotICAgIH0sCi0KICAgICBfaW5jcmVtZW50RXJyb3JX
YXJuaW5nQ291bnQ6IGZ1bmN0aW9uKG1zZykKICAgICB7CiAgICAgICAgIHN3aXRjaCAobXNnLmxl
dmVsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCmluZGV4IDMyZWMzYmYuLmNkMDc0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMTc4LDExICsxMTc4LDYgQEAgV2ViSW5z
cGVjdG9yLnNob3dQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKQogICAgIHRoaXMuY3VycmVudFBhbmVs
ID0gdGhpcy5wYW5lbHNbcGFuZWxdOwogfQogCi1XZWJJbnNwZWN0b3IuY29uc29sZU1lc3NhZ2Vz
Q2xlYXJlZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5jbGVhck1l
c3NhZ2VzKCk7Ci19Ci0KIFdlYkluc3BlY3Rvci5kb21Db250ZW50RXZlbnRGaXJlZCA9IGZ1bmN0
aW9uKHRpbWUpCiB7CiAgICAgdGhpcy5wYW5lbHMuYXVkaXRzLm1haW5SZXNvdXJjZURPTUNvbnRl
bnRUaW1lID0gdGltZTsKQEAgLTEyNDAsMzMgKzEyMzUsNiBAQCBXZWJJbnNwZWN0b3IuaW5zcGVj
dGVkVVJMQ2hhbmdlZCA9IGZ1bmN0aW9uKHVybCkKICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5u
b3RpZnlJbnNwZWN0ZWRVUkxDaGFuZ2VkKCk7CiB9CiAKLVdlYkluc3BlY3Rvci51cGRhdGVDb25z
b2xlTWVzc2FnZUV4cGlyZWRDb3VudCA9IGZ1bmN0aW9uKGNvdW50KQotewotICAgIHZhciBtZXNz
YWdlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBjb25zb2xlIG1l
c3NhZ2VzIGFyZSBub3Qgc2hvd24uIiksIGNvdW50KTsKLSAgICBXZWJJbnNwZWN0b3IuY29uc29s
ZS5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2Fn
ZShtZXNzYWdlLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5p
bmcpKTsKLX0KLQotV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5
bG9hZCkKLXsKLSAgICB2YXIgY29uc29sZU1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlKAotICAgICAgICBwYXlsb2FkLnNvdXJjZSwKLSAgICAgICAgcGF5bG9hZC50eXBl
LAotICAgICAgICBwYXlsb2FkLmxldmVsLAotICAgICAgICBwYXlsb2FkLmxpbmUsCi0gICAgICAg
IHBheWxvYWQudXJsLAotICAgICAgICBwYXlsb2FkLnJlcGVhdENvdW50LAotICAgICAgICBwYXls
b2FkLm1lc3NhZ2UsCi0gICAgICAgIHBheWxvYWQucGFyYW1ldGVycywKLSAgICAgICAgcGF5bG9h
ZC5zdGFja1RyYWNlLAotICAgICAgICBwYXlsb2FkLnJlcXVlc3RJZCk7Ci0gICAgdGhpcy5jb25z
b2xlLmFkZE1lc3NhZ2UoY29uc29sZU1lc3NhZ2UpOwotfQotCi1XZWJJbnNwZWN0b3IudXBkYXRl
Q29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCA9IGZ1bmN0aW9uKGNvdW50KQotewotICAgIHRoaXMu
Y29uc29sZS51cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQoY291bnQpOwotfQotCiBXZWJJbnNwZWN0
b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSwgbWVzc2FnZUxldmVsKQogewogICAgIC8vIHJlbWVt
YmVyICd0aGlzJyBmb3Igc2V0SW50ZXJ2YWwoKSBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAKaW5kZXggMjE5NjQ3ZC4uY2Y5MTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC0z
MSwxMSArMzEsMTEgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgotI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTQ4LDkgKzE0OCw5IEBAIHZvaWQgQ29uc29sZTo6YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxl
dmVsIGxlCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChjYWxsU3RhY2spCi0gICAg
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgMCwgY2FsbFN0YWNrKTsKICAgICBlbHNlCi0gICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKICNlbmRpZgogCiAgICAg
aWYgKCFDb25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBQYXNzUmVmUHRyPFNjcmlwdAogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZW5kaWYKIH0KIApAQCAtMjYwLDggKzI2
MCw3IEBAIHZvaWQgQ29uc29sZTo6Y291bnQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFz
IG5vIGFyZ3VtZW50CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKHRpdGxlKTsKLQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y291bnQodGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJj
ZVVSTCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvdW50KHBhZ2UsIHRpdGxl
LCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlmCkBAIC0yODMsMzMgKzI4Miw2
IEBAIHZvaWQgQ29uc29sZTo6bWFya1RpbWVsaW5lKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShXTUwp
Ci1TdHJpbmcgQ29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0Ci17Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICgh
cGFnZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgY29uc3QgVmVjdG9yPE93blB0
cjxDb25zb2xlTWVzc2FnZT4gPiYgY29uc29sZU1lc3NhZ2VzID0gcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5jb25zb2xlTWVzc2FnZXMoKTsKLSAgICBpZiAoY29uc29sZU1lc3NhZ2VzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgVmVjdG9yPE93blB0cjxD
b25zb2xlTWVzc2FnZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb25zb2xlTWVzc2FnZXMuYmVn
aW4oKTsKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBjb25zb2xlTWVzc2FnZXMuZW5kKCk7Ci0KLSAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIENvbnNvbGVNZXNzYWdlKiBtZXNzYWdlID0gaXQtPmdldCgp
OwotICAgICAgICBpZiAobWVzc2FnZS0+c291cmNlKCkgIT0gV01MTWVzc2FnZVNvdXJjZSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJldHVybiBtZXNzYWdlLT5tZXNzYWdlKCk7
Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAogdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNhbGxTdGFjaykKQEAgLTMzNyw3ICszMDksNyBAQCB2b2lkIENvbnNvbGU6OnByb2Zp
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNj
cmlwdAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUm
IGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwotICAgIGNvbnRyb2xsZXItPmFkZFN0YXJ0
UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShyZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVO
dW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29udHJvbGxlciwgcmVz
b2x2ZWRUaXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJM
KCkpOwogI2VuZGlmCiB9CiAKQEAgLTM3MCwxNiArMzQyLDcgQEAgdm9pZCBDb25zb2xlOjpwcm9m
aWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0
cjxTY3IKIHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVoYXZp
b3Igb2YgcmVxdWlyaW5nIGEgdGl0bGUgdGhhdCBpcyBub3QgbnVsbCBvcgotICAgIC8vIHVuZGVm
aW5lZCBmb3IgdGltaW5nIGZ1bmN0aW9ucwotICAgIGlmICh0aXRsZS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydFRpbWlu
Zyh0aXRsZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFRpbWluZyhwYWdl
KCksIHRpdGxlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICNlbmRpZgpAQCAt
Mzg4LDIzICszNTEsOCBAQCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRsZSkK
IHZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwot
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRm9sbG93IEZpcmVidWcn
cyBiZWhhdmlvciBvZiByZXF1aXJpbmcgYSB0aXRsZSB0aGF0IGlzIG5vdCBudWxsIG9yCi0gICAg
Ly8gdW5kZWZpbmVkIGZvciB0aW1pbmcgZnVuY3Rpb25zCi0gICAgaWYgKHRpdGxlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgZWxhcHNlZDsKLSAgICBpZiAoIXBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RvcFRpbWluZyh0aXRsZSwgZWxhcHNlZCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFN0cmluZyBtZXNzYWdlID0gdGl0bGUgKyBTdHJpbmc6OmZvcm1h
dCgiOiAlLjBmbXMiLCBlbGFwc2VkKTsKLQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFz
dENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RD
YWxsZXIuc291cmNlVVJMKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFRp
bWluZyhwYWdlKCksIHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5z
b3VyY2VVUkwoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxTdGFjayk7CkBAIC00MTQsMTEgKzM2Miw3IEBAIHZvaWQgQ29uc29sZTo6dGlt
ZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NSZWZQCiB2b2lkIENvbnNvbGU6Omdyb3VwKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlm
ICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5zdGFydEdyb3VwKGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2Us
IFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgYXJndW1l
bnRzLCBjYWxsU3RhY2spOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKQEAgLTQyOCwxMSArMzcyLDcgQEAgdm9pZCBDb25z
b2xlOjpncm91cChQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVm
UHRyPFNjcmlwdENhbGwKIHZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoUGFzc1JlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRy
dWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShw
YWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlLCBM
b2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2sp
OwpAQCAtNDQyLDExICszODIsNyBAQCB2b2lkIENvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8Uwogdm9pZCBDb25z
b2xlOjpncm91cEVuZCgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5lbmRHcm91cChKU01lc3NhZ2VTb3VyY2UsIDAs
IFN0cmluZygpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2UsIEVuZEdyb3VwTWVzc2FnZVR5cGUsIExvZ01l
c3NhZ2VMZXZlbCwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5oCmluZGV4IGRkNjkyYTIuLmNlZWZiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBA
IC0xMDEsOSArMTAxLDYgQEAgcHVibGljOgogICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wg
Y29uZGl0aW9uLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBjb3VudChQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBtYXJrVGltZWxpbmUoUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwot
I2lmIEVOQUJMRShXTUwpCi0gICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsK
LSNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGNvbnN0IFByb2Zp
bGVzQXJyYXkmIHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQogICAgIHZv
aWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAppbmRleCA1MDNiYjkxLi4xODkyODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKQEAgLTQyLDEwICs0Miw2IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBjb3VudCgpOwogICAg
ICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBtYXJrVGltZWxpbmUoKTsKIAotI2lm
IGRlZmluZWQoRU5BQkxFX1dNTCkgJiYgRU5BQkxFX1dNTAotICAgICAgICBbRG9udEVudW1dIERP
TVN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCk7Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwcm9maWxlczsK
ICAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlKGluIERPTVN0cmluZyB0aXRsZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>