<?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>51441</bug_id>
          
          <creation_ts>2010-12-21 19:33:01 -0800</creation_ts>
          <short_desc>Editor.h doesn&apos;t need to include SelectionController.h</short_desc>
          <delta_ts>2010-12-23 11:00:07 -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>HTML Editing</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325340</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-21 19:33:01 -0800</bug_when>
    <thetext>Editor.h includes SelectionController.h only because it needs to access EDirection.  We should move this enum into a separate header file so that we don&apos;t have to include SelectionController.h in Editor.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325636</commentid>
    <comment_count>1</comment_count>
      <attachid>77249</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 12:39:48 -0800</bug_when>
    <thetext>Created attachment 77249
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325639</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 12:42:17 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=77249) [details]
&gt; cleanup

I ended up renaming SelectionController::EDirection to SelectionDirection and putting it in VisibleSelection.h rather than adding a new header.  But I did add WritingDirection.h though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325647</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 12:55:16 -0800</bug_when>
    <thetext>Attachment 77249 did not build on chromium:
Build output: http://queues.webkit.org/results/7286113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325648</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-22 13:02:21 -0800</bug_when>
    <thetext>Attachment 77249 did not build on qt:
Build output: http://queues.webkit.org/results/7282090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325652</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 13:08:54 -0800</bug_when>
    <thetext>Attachment 77249 did not build on gtk:
Build output: http://queues.webkit.org/results/7202118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325654</commentid>
    <comment_count>6</comment_count>
      <attachid>77249</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-22 13:09:48 -0800</bug_when>
    <thetext>Comment on attachment 77249
cleanup

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

r- for build breaks (and a few minor things that I happened to see).

I probably won&apos;t give the final r+ on this but thought it valuable to move it past this step.

&gt; WebCore/editing/Editor.h:50
&gt; +class CSSMutableStyleDeclaration;

Out of order.

&gt; WebCore/editing/WritingDirection.h:2
&gt; + * Copyright (C) 2008 Apple Inc. All rights reserved.

Multiple things are wrong here....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325657</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:23:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; WebCore/editing/Editor.h:50
&gt; &gt; +class CSSMutableStyleDeclaration;
&gt; 
&gt; Out of order.

Oops, will fix.

&gt; &gt; WebCore/editing/WritingDirection.h:2
&gt; &gt; + * Copyright (C) 2008 Apple Inc. All rights reserved.
&gt; 
&gt; Multiple things are wrong here....

WritingDirection was added in 2008 by mitz so this copyright information is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325659</commentid>
    <comment_count>8</comment_count>
      <attachid>77254</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:28:43 -0800</bug_when>
    <thetext>Created attachment 77254
Fixed per levin&apos;s comment and build breaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325660</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:33:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/34896 is the change set that added WritingDirection.

It was subsequently moved by the following change sets:
http://trac.webkit.org/changeset/34935
http://trac.webkit.org/changeset/72573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325662</commentid>
    <comment_count>10</comment_count>
      <attachid>77254</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-22 13:35:20 -0800</bug_when>
    <thetext>Comment on attachment 77254
Fixed per levin&apos;s comment and build breaks

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325673</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:44:27 -0800</bug_when>
    <thetext>Thanks for the review, Eric!  I&apos;ll wait until the EWS finishes building because there might be some WebKit code that&apos;s using EDirection as there was in mac port.

(In reply to comment #10)
&gt; (From update of attachment 77254 [details])
&gt; LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325676</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 13:50:06 -0800</bug_when>
    <thetext>Attachment 77254 did not build on chromium:
Build output: http://queues.webkit.org/results/7295116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325681</commentid>
    <comment_count>13</comment_count>
      <attachid>77258</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:58:28 -0800</bug_when>
    <thetext>Created attachment 77258
Replaced all instances of SelectionController::Direction(\w+) by Direction in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325684</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 13:59:48 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Thanks for the review, Eric!  I&apos;ll wait until the EWS finishes building because there might be some WebKit code that&apos;s using EDirection as there was in mac port.

(In reply to comment #13)
&gt; Created an attachment (id=77258) [details]
&gt; Replaced all instances of SelectionController::Direction(\w+) by Direction in WebKit

It turned out there were lots of them.  I replaced all in this patch. Resubmitting for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325685</commentid>
    <comment_count>15</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-22 14:01:04 -0800</bug_when>
    <thetext>Attachment 77254 did not build on qt:
Build output: http://queues.webkit.org/results/7336021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325691</commentid>
    <comment_count>16</comment_count>
      <attachid>77258</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-22 14:16:48 -0800</bug_when>
    <thetext>Comment on attachment 77258
Replaced all instances of SelectionController::Direction(\w+) by Direction in WebKit

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

OK.  I figiured there were more includes you would remove.

&gt; WebCore/page/Frame.h:37
&gt; +#include &quot;SelectionController.h&quot;

Should this be SelectionController.h here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325694</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 14:18:45 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; WebCore/page/Frame.h:37
&gt; &gt; +#include &quot;SelectionController.h&quot;
&gt; 
&gt; Should this be SelectionController.h here?

Yes, Frame holds an instance of SelectionController as a member variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325697</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 14:21:31 -0800</bug_when>
    <thetext>Attachment 77258 did not build on chromium:
Build output: http://queues.webkit.org/results/7258116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325701</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-22 14:35:06 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Attachment 77258 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/7258116

Odd. It seems like my patch was missing the changes to WebFrameImpl.cpp.  Will fix before the land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325743</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 15:47:41 -0800</bug_when>
    <thetext>Attachment 77258 did not build on chromium:
Build output: http://queues.webkit.org/results/7270108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326162</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-23 11:00:07 -0800</bug_when>
    <thetext>Committed r74566: &lt;http://trac.webkit.org/changeset/74566&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77249</attachid>
            <date>2010-12-22 12:39:48 -0800</date>
            <delta_ts>2010-12-22 13:28:38 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-51441-20101222123947.patch</filename>
            <type>text/plain</type>
            <size>52473</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDQ5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMTAtMTItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWRp
dG9yLmggZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgU2VsZWN0aW9uQ29udHJvbGxlci5oCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQ0MQorCisgICAg
ICAgIFJlbW92ZWQgI2luY2x1ZGUgPFNlbGVjdGlvbi5oPiBmcm9tIEVkaXRvci5oLgorICAgICAg
ICBBbHNvIGV4dHJhY3RlZCBXcml0aW5nRGlyZWN0aW9uLmggZnJvbSBFZGl0aW5nU3R5bGUuaCBh
bmQgcmVuYW1lZCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uCisgICAgICAgIHRvIFNl
bGVjdGlvbkRpcmVjdGlvbiBhbmQgbW92ZWQgaXRzIGRlY2xhcmF0aW9uIGZyb20gU2VsZWN0aW9u
Q29udHJvbGxlci5oIHRvIFZpc2libGVTZWxlY3Rpb24uaAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46IFNpZ25hdHVyZSBjaGFuZ2VzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkZWQgV3JpdGluZ0RpcmVjdGlvbi5oCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSk6
IENoYW5nZSBkdWUgdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmg6IFJlbW92ZWQgV3JpdGluZ0RpcmVjdGlvbiBhbmQgaW5jbHVkZWQgV3JpdGlu
Z0RpcmVjdGlvbi5oCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKTogQ2hhbmdlIGR1ZSB0byBTZWxlY3Rp
b25EaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOiBSZW1vdmVkIFNlbGVjdGlvbkNvbnRyb2xsZXIuaDsgYWRkZWQgRG9jdW1lbnRNYXJrZXIu
aCwgVGltZXIuaCwgVmlzaWJsZVNlbGVjdGlvbi5oCisgICAgICAgIGFuZCBXcml0aW5nRGlyZWN0
aW9uLmg7IGZvcndhcmQgZGVjbGFyZWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVEZWxldGVCYWNrd2FyZCk6IENoYW5nZSBkdWUgdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3Vz
Q2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2Fy
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZM
aW5lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdP
ZlBhcmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvRW5k
T2ZMaW5lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9FbmRPZlBh
cmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNr
d2FyZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJk
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVSaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5
U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZE
b2N1bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9j
dW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVXb3JkQmFja3dhcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVdvcmRGb3J3YXJkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRSaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJl
TW9kaWZpZWQpOiBUYWtlcyBTZWxlY3Rpb25EaXJlY3Rpb24gaW5zdGVhZCBvZiBFRGlyZWN0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmg6IENoYW5nZSBkdWUgdG8g
U2VsZWN0aW9uRGlyZWN0aW9uLgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oOiBBZGRl
ZCBTZWxlY3Rpb25EaXJlY3Rpb24sIHJlbmFtZWQgYW5kIG1vdmVkIGZyb20gRURpcmVjdGlvbgor
ICAgICAgICBpbiBTZWxlY3Rpb25Db250cm9sbGVyLmgKKyAgICAgICAgKiBlZGl0aW5nL1dyaXRp
bmdEaXJlY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOiBDaGFuZ2UgZHVlIHRvIFNl
bGVjdGlvbkRpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZGVsZXRl
RnJvbURvY3VtZW50KTogRGl0dG8uCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZS5oOiBJbmNsdWRlcyBTZWxlY3Rp
b25Db250cm9sbGVyLmguCisKIDIwMTAtMTItMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Jla2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxl
cjE1cmV2ZWEKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjE2c2V0U2VsZWN0ZWRS
YW5nZUVQTlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlFYgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25D
b250cm9sbGVyMjBzZXRTZWxlY3Rpb25Gcm9tTm9uZUV2CiBfX1pON1dlYkNvcmUxOVNlbGVjdGlv
bkNvbnRyb2xsZXI1Y2xlYXJFdgotX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyNm1v
ZGlmeUVOUzBfMTFFQWx0ZXJhdGlvbkVOUzBfMTBFRGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51bGFy
aXR5RWIKK19fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjZtb2RpZnlFTlMwXzExRUFs
dGVyYXRpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFYgog
X19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyOXNlbGVjdEFsbEV2CiBfX1pON1dlYkNv
cmUxOVNlbGVjdGlvbkNvbnRyb2xsZXJDMUVQTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTE5VGV4
dFJlc291cmNlRGVjb2RlcjVmbHVzaEV2CkBAIC02OTQsMTEgKzY5NCwxMSBAQCBfX1pON1dlYkNv
cmU2RWRpdG9yMTdpbnNlcnRPcmRlcmVkTGlzdEV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMThjb25m
aXJtQ29tcG9zaXRpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yMThjb25m
aXJtQ29tcG9zaXRpb25FdgogX19aTjdXZWJDb3JlNkVkaXRvcjE5Y291bnRNYXRjaGVzRm9yVGV4
dEVSS04zV1RGNlN0cmluZ0VQTlNfNVJhbmdlRWpqYgotX19aTjdXZWJDb3JlNkVkaXRvcjE5ZGVs
ZXRlV2l0aERpcmVjdGlvbkVOU18xOVNlbGVjdGlvbkNvbnRyb2xsZXIxMEVEaXJlY3Rpb25FTlNf
MTVUZXh0R3JhbnVsYXJpdHlFYmIKK19fWk43V2ViQ29yZTZFZGl0b3IxOWRlbGV0ZVdpdGhEaXJl
Y3Rpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFYmIKIF9f
Wk43V2ViQ29yZTZFZGl0b3IxOWluc2VydFVub3JkZXJlZExpc3RFdgogX19aTjdXZWJDb3JlNkVk
aXRvcjIxYXBwbHlTdHlsZVRvU2VsZWN0aW9uRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FTlNf
MTBFZGl0QWN0aW9uRQogX19aTjdXZWJDb3JlNkVkaXRvcjIxaXNTZWxlY3Rpb25NaXNzcGVsbGVk
RXYKLV9fWk43V2ViQ29yZTZFZGl0b3IyM3NldEJhc2VXcml0aW5nRGlyZWN0aW9uRU5TXzE2V3Jp
dGluZ0RpcmVjdGlvbkUKK19fWk43V2ViQ29yZTZFZGl0b3IyM3NldEJhc2VXcml0aW5nRGlyZWN0
aW9uRTE2V3JpdGluZ0RpcmVjdGlvbgogX19aTjdXZWJDb3JlNkVkaXRvcjI0YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nRWIKIF9fWk43V2ViQ29yZTZFZGl0b3IyNGNvbXB1dGVBbmRTZXRUeXBpbmdT
dHlsZUVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2Vi
Q29yZTZFZGl0b3IyNGlzU2VsZWN0aW9uVW5ncmFtbWF0aWNhbEV2CkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzA0MSw2ICszMDQxLDcgQEAKIAkJOUI0MTcwNjUxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kLmNwcCAqLzsgfTsKIAkJOUJBQjZDNkMxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdT
dHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJB
QjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCQUI2QzZEMTI1NTA2MzEwMDE2MjZE
NCAvKiBFZGl0aW5nU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAg
Ki87IH07CisJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFGM0IyMzEy
QzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCRDBCRjkzMTJBNDJCRjUwMDcyRkQ0MyAv
KiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5o
ICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5
MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi87IH07CiAJCTlGMEQ2
QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJDMTIxQkZFQkEw
MDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLzsgfTsKQEAgLTkzNjcsNiAr
OTM2OCw3IEBACiAJCTlCNDE3MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbHlC
bG9ja0VsZW1lbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJB
QjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFZGl0aW5nU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0aW5nU3R5bGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGlu
Z0RpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0aW5nRGly
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDBCRjkxMTJBNDJCRjUw
MDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjb3BlZEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTUxNTAsNiArMTUxNTIsNyBAQAogCQkJCUE4ODNERjI2MEYzRDA0NUQwMEYxOUJGNiAv
KiBWaXNpYmxlU2VsZWN0aW9uLmggKi8sCiAJCQkJOTMzMDlERDQwOTlFNjQ5MTAwNTZFNTgxIC8q
IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlERDUwOTlF
NjQ5MTAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oICovLAorCQkJ
CTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGVkaXRpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjIw
OTYsNiArMjIwOTksNyBAQAogCQkJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEyMjQ3QTEwQ0ZCOEZGMDA4
MDk5RDcgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3Bh
bkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAv
KiBXcml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODIwMjA5RDE1MDhE
MDAwRTYxRDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5MjEwODI0
NUU1OTAwMUU5QUJDIC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
RDE1RTNBQzBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQzOCw3ICsyNDM4LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRl
cgogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlvbkNv
bnRyb2xsZXIgc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25S
aWdodCwgTGluZUJvdW5kYXJ5KTsKKyAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnkpOwog
ICAgIAogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9u
KCkudmlzaWJsZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwog
fQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJXcml0aW5nRGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsOCAr
NDEsNiBAQCBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiAKLWVudW0g
V3JpdGluZ0RpcmVjdGlvbiB7IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBMZWZ0VG9SaWdodFdy
aXRpbmdEaXJlY3Rpb24sIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiB9OwotCiBjbGFzcyBF
ZGl0aW5nU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxFZGl0aW5nU3R5bGU+IHsKIHB1YmxpYzoK
ICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBF
ZGl0b3I6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRQogICAgIHJldHVybiBjbGllbnQoKSAm
JiBjbGllbnQoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiB9CiAKLWJv
b2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJp
bmcsIGJvb2wgaXNUeXBpbmdBY3Rpb24pCitib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcsIGJvb2wgaXNUeXBpbmdBY3Rpb24pCiB7CiAgICAgaWYgKCFjYW5F
ZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyOSwxMiArMzI5LDEyIEBAIGJvb2wg
RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGkKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgor
ICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgogICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgY2FuU21hcnRDb3B5
T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkOgotICAg
ICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQ6CisgICAgICAgIGNh
c2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKICAgICAg
ICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+ZG9jdW1lbnQo
KSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5nKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDE4LDExICsyNDE4LDExIEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3IKICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0aW9uUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0
KTsKICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8oc2VsZWN0aW9uUmFu
Z2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNl
bGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMg
ZmFpbHMgZm9yIGFueSByZWFzb24sIHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24g
YmV5b25kIHRoZSBsYXN0IHJlcGxhY2VtZW50CiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW92ZVRvKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAgICAgICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShy
ZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksMTIgKzI5LDE1IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkQWNjZXNzUG9saWN5Lmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWxJbmZvLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCiAjaW5j
bHVkZSAiRWRpdGluZ0JlaGF2aW9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yRGVsZXRlQWN0aW9uLmgi
CiAjaW5jbHVkZSAiRWRpdG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMu
aCIKLSNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlv
bi5oIgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChfX09CSkNfXykKIGNsYXNzIE5T
RGljdGlvbmFyeTsKQEAgLTQ0LDYgKzQ3LDcgQEAgdHlwZWRlZiBpbnQgTlNXcml0aW5nRGlyZWN0
aW9uOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwor
Y2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDbGlwYm9hcmQ7CiBjbGFz
cyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CkBAIC0xNDUsNyAr
MTQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOwogCi0g
ICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rp
b24sIFRleHRHcmFudWxhcml0eSwgYm9vbCBraWxsUmluZywgYm9vbCBpc1R5cGluZ0FjdGlvbik7
CisgICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdy
YW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKTsKICAgICB2b2lk
IGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlKTsKICAgICBi
b29sIGRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDc0NDQ3KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsMzIgKzMyNywzMiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1l
KiBmcmFtZSwgCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlv
dXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3Np
bmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3
YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlRm9yd2Fy
ZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0
aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5l
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7
CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3
YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZShG
cmEKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0
ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFy
ZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtlIERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgp
LgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwg
TGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2
OCw3ICszNjgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwCiB7
CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhl
IG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQg
dGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBo
Qm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhE
aXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzg5LDEzICszODksMTMgQEAgc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSogZgogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVs
ZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJk
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNl
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShG
cmFtZSogCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTYwNiw0NyArNjA2
LDQ3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3QKIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bihGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBy
ZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBM
aW5lR3JhbnVsYXJpdHksIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBE
aXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9u
TGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg0LDIwMyArNjg0LDIwMyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
UmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExp
bmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91
bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVj
dGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERp
cmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgU2Vu
dGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBTZW50
ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFNlbnRl
bmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBTZW50
ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOworICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5k
YXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZM
aW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
LCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5l
Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdy
YXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
LCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQs
IFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFn
cmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFw
aEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFy
YWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdy
YXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBh
cmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFu
dWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3
YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3
YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25M
ZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQs
IFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBX
b3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRh
cnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVRvUmlnaHRFbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25S
aWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2Vs
ZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBA
IHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0SXNEaXJlY3Rpb24KICAgICBtX2lzRGlyZWN0
aW9uYWwgPSAhbV9mcmFtZSB8fCBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRD
b25zaWRlclNlbGVjdGlvbkFzRGlyZWN0aW9uYWwoKSB8fCBpc0RpcmVjdGlvbmFsOwogfQogCi12
b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVy
LCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJl
TW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgaWYgKGFsdGVyICE9IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgIHJldHVybjsK
QEAgLTYyNiw4ICs2MjYsOCBAQCBzdGF0aWMgYm9vbCBpc0JvdW5kYXJ5KFRleHRHcmFudWxhcml0
eSBnCiB7CiAgICAgcmV0dXJuIGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8fCBncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBEb2N1bWVudEJvdW5k
YXJ5OwogfSAgICAKLSAgICAKLWJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRl
cmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCisKK2Jvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6
bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgdXNlclRyaWdnZXJlZCkKIHsKICAgICBp
ZiAodXNlclRyaWdnZXJlZCkgewogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHRyaWFsU2Vs
ZWN0aW9uQ29udHJvbGxlcjsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIGVudW0gRGlyZWN0aW9uYWxpdHlQ
b2xpY3kgeyBNYWtlTm9uRGlyZWMKIGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMg
Tm9uY29weWFibGUgewogcHVibGljOgogICAgIGVudW0gRUFsdGVyYXRpb24geyBBbHRlcmF0aW9u
TW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OwotICAgIGVudW0gRURpcmVjdGlvbiB7IERpcmVjdGlv
bkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVm
dCB9OwogICAgIGVudW0gQ3Vyc29yQWxpZ25PblNjcm9sbCB7IEFsaWduQ3Vyc29yT25TY3JvbGxJ
Zk5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGlnbkN1cnNvck9uU2Ny
b2xsQWx3YXlzIH07CiAKQEAgLTgzLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgRUFmZmluaXR5
IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uYWZmaW5pdHkoKTsgfQogCi0g
ICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIEVEaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwg
Ym9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOworICAgIGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9u
LCBTZWxlY3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVk
ID0gZmFsc2UpOwogICAgIGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBpbnQgdmVydGljYWxEaXN0
YW5jZSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UsIEN1cnNvckFsaWduT25TY3JvbGwgPSBB
bGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQpOwogICAgIFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIApAQCAtMTEyLDggKzExMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcmV0UmVjdE5lZWRzVXBkYXRlKGJvb2wgZmxhZyA9
IHRydWUpOwogCiAgICAgdm9pZCBzZXRJc0RpcmVjdGlvbmFsKGJvb2wpOwotICAgIHZvaWQgd2ls
bEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIEVEaXJlY3Rpb24pOwotICAgIAorICAgIHZvaWQgd2ls
bEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIFNlbGVjdGlvbkRpcmVjdGlvbik7CisKICAgICBib29s
IGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uLmlzTm9uZSgpOyB9CiAgICAgYm9v
bCBpc0NhcmV0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDYXJldCgpOyB9CiAgICAg
Ym9vbCBpc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNSYW5nZSgpOyB9Cklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDkgKzQ1
OSw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKIAogICAgICAg
ICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNl
bGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2Fy
ZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKLSAgICAgICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
KTsKIAogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlv
dXModHJ1ZSkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0
IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgYXJlYSBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJy
ZWFrIG91dCBvZiB0aGUgbGlzdCBpdGVtLgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKICAgICAgICAgICAgIGlmIChpc0xhc3RQb3Np
dGlvbkJlZm9yZVRhYmxlKHZpc2libGVTdGFydCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBzZWxlY3Rpb24gYmFja3dhcmQgaW50byB0aGUgbGFz
dCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwgaGFuZGxlIHRoZSBtb3ZlLgotICAgICAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOworICAg
ICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICAvLyBJZiB0
aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24n
dCBkZWxldGUgYW55dGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0Zp
cnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKICAgICAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKFBvc2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5n
U2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkpOwpAQCAtNTU2LDkgKzU1Niw5IEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXMKICAgICAgICAgLy8gcm9vdCBl
ZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50LgogICAgICAgICBT
ZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVj
dGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIGdy
YW51bGFyaXR5KTsKICAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkg
JiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBzZWxl
Y3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAg
ICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5k
b3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kID0gZW5kaW5n
U2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXMKIAogICAgICAgICAvLyBkZWxldGluZyB0byBl
bmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0
aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNF
bmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAg
ICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9u
KCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0
aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBvc2l0aW9uOwogCiBjb25zdCBFQWZmaW5p
dHkgU0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOworZW51bSBTZWxlY3Rpb25EaXJl
Y3Rpb24geyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9uUmln
aHQsIERpcmVjdGlvbkxlZnQgfTsKIAogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvV3JpdGluZ0RpcmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2VkaXRpbmcvV3JpdGluZ0RpcmVjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBXcml0aW5nRGlyZWN0aW9uX2gKKyNkZWZpbmUgV3JpdGlu
Z0RpcmVjdGlvbl9oCisKK2VudW0gV3JpdGluZ0RpcmVjdGlvbiB7IE5hdHVyYWxXcml0aW5nRGly
ZWN0aW9uLCBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24sIFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbiB9OworCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA3
NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTgsMTUgKzI5OCwxNSBAQCB2b2lkIERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmlu
ZyYgCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKLSAgICBTZWxlY3Rpb25Db250cm9sbGVy
OjpFRGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJmb3J3YXJkIikp
Ci0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkZvcndhcmQ7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAgICAgICAg
ZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQ7CisgICAg
ICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0g
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdDsKKyAgICAgICAgZGlyZWN0aW9uID0g
RGlyZWN0aW9uTGVmdDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb25T
dHJpbmcsICJyaWdodCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uUmlnaHQ7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm47CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIERPTVNl
bGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGlzQ29sbGFwc2VkKCkpCi0gICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFu
Z2UgPSBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYg
KCFzZWxlY3RlZFJhbmdlKQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDc0NDQ3
KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
OTEsMTYgKzIzOTEsMTYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0
aQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIp
OwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91
bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25C
YWNrd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJp
dHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVs
c2UgaWYgKGtleSA9PSAiRG93biIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQg
OiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uRm9yd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBM
aW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCAo
aXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7
CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAoa2V5
ID09ICJMZWZ0IikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1No
aWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25MZWZ0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29y
ZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9u
ZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAi
UmlnaHQiKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRl
ZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJp
Z2h0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdy
YW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBE
aXJlY3Rpb25SaWdodCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVk
KSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSAgICAKIH0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZp
c2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJT
Y3JpcHRUeXBlcy5oIgogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzQ0OTMpCisrKyBXZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEyLTIyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVkaXRvci5oIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIFNl
bGVjdGlvbkNvbnRyb2xsZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NDEKKworICAgICAgICBSZW5hbWVkIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVEaXJlY3Rpb24gdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRT
ZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6ZGlyZWN0aW9uOmdyYW51bGFyaXR5Ol0pOgor
ICAgICAgICBUYWtlcyBTZWxlY3Rpb25EaXJlY3Rpb24gaW5zdGVhZCBvZiBTZWxlY3Rpb25Db250
cm9sbGVyOjpFRGlyZWN0aW9uLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5o
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIgZG9Db21wbGV0aW9uXSk6IENhbGxz
IF9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
IDIwMTAtMTItMjEgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQko
cmV2aXNpb24gNzQ0NDcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcwOCw3ICs3MDgsNyBAQCAtIChpZClfYWNjZXNzaWJpbGl0eVRyZWUKICNl
bmRpZgogfQogCi0tIChET01SYW5nZSAqKV9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9u
OihTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbilhbHRlcmF0aW9uIGRpcmVjdGlvbjoo
U2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFRl
eHRHcmFudWxhcml0eSlncmFudWxhcml0eQorLSAoRE9NUmFuZ2UgKilfcmFuZ2VCeUFsdGVyaW5n
Q3VycmVudFNlbGVjdGlvbjooU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJh
dGlvbiBkaXJlY3Rpb246KFNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6
KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQogewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZy
YW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybiBuaWw7CkluZGV4OiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgJKHJldmlzaW9uIDc0NDQ3KQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQw
LDcgKzE0MCw3IEBAIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYkludGVybmFsKQogCiAtIChpZClf
YWNjZXNzaWJpbGl0eVRyZWU7CiAKLS0gKERPTVJhbmdlICopX3JhbmdlQnlBbHRlcmluZ0N1cnJl
bnRTZWxlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uKWFs
dGVyYXRpb24gZGlyZWN0aW9uOihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0
aW9uKWRpcmVjdGlvbiBncmFudWxhcml0eTooV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5KWdyYW51
bGFyaXR5OworLSAoRE9NUmFuZ2UgKilfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjoo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJl
Y3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6
KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFudWxhcml0eTsKIC0gKE5TUmFuZ2UpX2NvbnZl
cnRUb05TUmFuZ2U6KFdlYkNvcmU6OlJhbmdlKilyYW5nZTsKIC0gKERPTVJhbmdlICopX2NvbnZl
cnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZTsKIC0gKE5TUmFuZ2UpX2NvbnZlcnRE
T01SYW5nZVRvTlNSYW5nZTooRE9NUmFuZ2UgKilyYW5nZTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gNzQ0
NDcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgLSAodm9pZClkb0NvbXBsZXRpb24K
ICAgICAgICAgV2ViRnJhbWUgKmZyYW1lID0gW19odG1sVmlldyBfZnJhbWVdOwogICAgICAgICBE
T01SYW5nZSAqc2VsZWN0aW9uID0ga2l0KGNvcmUoZnJhbWUpLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgICAgIERPTVJhbmdlICp3aG9sZVdvcmQgPSBbZnJh
bWUgX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZAotICAgICAgICAgICAgZGlyZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkJhY2t3YXJkIGdyYW51bGFyaXR5OldvcmRHcmFudWxhcml0eV07CisgICAg
ICAgICAgICBkaXJlY3Rpb246RGlyZWN0aW9uQmFja3dhcmQgZ3JhbnVsYXJpdHk6V29yZEdyYW51
bGFyaXR5XTsKICAgICAgICAgRE9NUmFuZ2UgKnByZWZpeCA9IFt3aG9sZVdvcmQgY2xvbmVSYW5n
ZV07CiAgICAgICAgIFtwcmVmaXggc2V0RW5kOltzZWxlY3Rpb24gc3RhcnRDb250YWluZXJdIG9m
ZnNldDpbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XV07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77254</attachid>
            <date>2010-12-22 13:28:43 -0800</date>
            <delta_ts>2010-12-22 13:58:24 -0800</delta_ts>
            <desc>Fixed per levin&apos;s comment and build breaks</desc>
            <filename>bug-51441-20101222132841.patch</filename>
            <type>text/plain</type>
            <size>53010</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDQ5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTUgQEAKKzIwMTAtMTItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWRp
dG9yLmggZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgU2VsZWN0aW9uQ29udHJvbGxlci5oCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQ0MQorCisgICAg
ICAgIFJlbW92ZWQgI2luY2x1ZGUgPFNlbGVjdGlvbi5oPiBmcm9tIEVkaXRvci5oLgorICAgICAg
ICBBbHNvIGV4dHJhY3RlZCBXcml0aW5nRGlyZWN0aW9uLmggZnJvbSBFZGl0aW5nU3R5bGUuaCBh
bmQgcmVuYW1lZCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uCisgICAgICAgIHRvIFNl
bGVjdGlvbkRpcmVjdGlvbiBhbmQgbW92ZWQgaXRzIGRlY2xhcmF0aW9uIGZyb20gU2VsZWN0aW9u
Q29udHJvbGxlci5oIHRvIFZpc2libGVTZWxlY3Rpb24uaAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46IFNpZ25hdHVyZSBjaGFuZ2VzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkZWQgV3JpdGluZ0RpcmVjdGlvbi5oCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSk6
IENoYW5nZSBkdWUgdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmg6IFJlbW92ZWQgV3JpdGluZ0RpcmVjdGlvbiBhbmQgaW5jbHVkZWQgV3JpdGlu
Z0RpcmVjdGlvbi5oCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKTogQ2hhbmdlIGR1ZSB0byBTZWxlY3Rp
b25EaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKTogRGl0dG8uCisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuaDogUmVtb3ZlZCBTZWxlY3Rpb25Db250cm9sbGVyLmg7IGFkZGVkIERv
Y3VtZW50TWFya2VyLmgsIFRpbWVyLmgsIFZpc2libGVTZWxlY3Rpb24uaAorICAgICAgICBhbmQg
V3JpdGluZ0RpcmVjdGlvbi5oOyBmb3J3YXJkIGRlY2xhcmVkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOiBDaGFuZ2UgZHVlIHRvIFNlbGVjdGlvbkRp
cmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21w
b3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZUZvcndhcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVU
b0JlZ2lubmluZ09mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0
ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVEZWxldGVUb0VuZE9mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVE
ZWxldGVXb3JkQmFja3dhcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxl
dGVXb3JkRm9yd2FyZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmRE
ZWxldGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUmlnaHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNl
bGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50
ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5k
TW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBh
cmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdo
dEVuZE9mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRy
b2xsZXI6OndpbGxCZU1vZGlmaWVkKTogVGFrZXMgU2VsZWN0aW9uRGlyZWN0aW9uIGluc3RlYWQg
b2YgRURpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOiBD
aGFuZ2UgZHVlIHRvIFNlbGVjdGlvbkRpcmVjdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5
UHJlc3NlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uaDogQWRkZWQgU2VsZWN0aW9uRGlyZWN0aW9uLCByZW5hbWVkIGFuZCBtb3ZlZCBmcm9t
IEVEaXJlY3Rpb24KKyAgICAgICAgaW4gU2VsZWN0aW9uQ29udHJvbGxlci5oCisgICAgICAgICog
ZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6bW9kaWZ5KTogQ2hh
bmdlIGR1ZSB0byBTZWxlY3Rpb25EaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpET01TZWxl
Y3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9h
cmRTZWxlY3Rpb25Nb3ZlbWVudCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogSW5j
bHVkZXMgU2VsZWN0aW9uQ29udHJvbGxlci5oLgorCiAyMDEwLTEyLTIyICBEaXJrIFNjaHVsemUg
IDxrcml0QHdiZWtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJt
YW5uLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBfX1pON1dlYkNvcmUxOVNlbGVj
dGlvbkNvbnRyb2xsZXIxNXJldmVhCiBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIx
NnNldFNlbGVjdGVkUmFuZ2VFUE5TXzVSYW5nZUVOU185RUFmZmluaXR5RWIKIF9fWk43V2ViQ29y
ZTE5U2VsZWN0aW9uQ29udHJvbGxlcjIwc2V0U2VsZWN0aW9uRnJvbU5vbmVFdgogX19aTjdXZWJD
b3JlMTlTZWxlY3Rpb25Db250cm9sbGVyNWNsZWFyRXYKLV9fWk43V2ViQ29yZTE5U2VsZWN0aW9u
Q29udHJvbGxlcjZtb2RpZnlFTlMwXzExRUFsdGVyYXRpb25FTlMwXzEwRURpcmVjdGlvbkVOU18x
NVRleHRHcmFudWxhcml0eUViCitfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXI2bW9k
aWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1VGV4dEdy
YW51bGFyaXR5RWIKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjlzZWxlY3RBbGxF
dgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyQzFFUE5TXzVGcmFtZUViCiBfX1pO
N1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI1Zmx1c2hFdgpAQCAtNjk0LDExICs2OTQsMTEg
QEAgX19aTjdXZWJDb3JlNkVkaXRvcjE3aW5zZXJ0T3JkZXJlZExpc3RFdgogX19aTjdXZWJDb3Jl
NkVkaXRvcjE4Y29uZmlybUNvbXBvc2l0aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
NkVkaXRvcjE4Y29uZmlybUNvbXBvc2l0aW9uRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxOWNvdW50
TWF0Y2hlc0ZvclRleHRFUktOM1dURjZTdHJpbmdFUE5TXzVSYW5nZUVqamIKLV9fWk43V2ViQ29y
ZTZFZGl0b3IxOWRlbGV0ZVdpdGhEaXJlY3Rpb25FTlNfMTlTZWxlY3Rpb25Db250cm9sbGVyMTBF
RGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51bGFyaXR5RWJiCitfX1pON1dlYkNvcmU2RWRpdG9yMTlk
ZWxldGVXaXRoRGlyZWN0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51
bGFyaXR5RWJiCiBfX1pON1dlYkNvcmU2RWRpdG9yMTlpbnNlcnRVbm9yZGVyZWRMaXN0RXYKIF9f
Wk43V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlDU1NTdHlsZURl
Y2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IyMWlzU2VsZWN0
aW9uTWlzc3BlbGxlZEV2Ci1fX1pON1dlYkNvcmU2RWRpdG9yMjNzZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbkVOU18xNldyaXRpbmdEaXJlY3Rpb25FCitfX1pON1dlYkNvcmU2RWRpdG9yMjNzZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbkUxNldyaXRpbmdEaXJlY3Rpb24KIF9fWk43V2ViQ29yZTZFZGl0b3Iy
NGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRjb21wdXRl
QW5kU2V0VHlwaW5nU3R5bGVFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18xMEVkaXRBY3Rp
b25FCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc0
NDQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwNDEsNiArMzA0MSw3IEBACiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhG
QyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5
QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi87IH07CiAJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZE
NCAvKiBFZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkFCNkM2RDEy
NTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0
aW5nU3R5bGUuY3BwICovOyB9OworCQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGlu
Z0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJBRjNCMjMxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkQwQkY5MzEyQTQy
QkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3Bl
ZEV2ZW50UXVldWUuaCAqLzsgfTsKIAkJOUJEMEJGOTQxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3Bl
ZEV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICov
OyB9OwogCQk5RjBENkIyRTEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjBE
NkIyQzEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07
CkBAIC05MzY3LDYgKzkzNjgsNyBAQAogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1N0eWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdGluZ1N0eWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJBRjNCMjMxMkMxQTM5ODAwMDE0
QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV3JpdGluZ0RpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQw
QkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjBENkIyQzEyMUJGRUJBMDA2
QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTUwLDYgKzE1MTUyLDcgQEAKIAkJCQlBODgzREYyNjBGM0Qw
NDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oICovLAogCQkJCTkzMzA5REQ0MDk5RTY0
OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwICovLAogCQkJ
CTkzMzA5REQ1MDk5RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1h
bmQuaCAqLywKKwkJCQk5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlv
bi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBlZGl0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTIyMDk2LDYgKzIyMDk5LDcgQEAKIAkJCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZG
NkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMjI0
N0ExMENGQjhGRjAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QkFGM0IyNDEyQzFB
Mzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTIxMDgyNDVFNTkwMDFFOUFCQyAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2Vy
U2NvcGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzQ0NDcpCisrKyBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0MzgsNyArMjQzOCw3IEBAIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vz
c2liaWxpdHlSZW5kZXIKICAgICAvLyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlzaWJsZVBvcy4KICAg
ICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVBvcykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25SaWdodCwgTGlu
ZUJvdW5kYXJ5KTsKICAgICAKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc2VsZWN0
aW9uLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlz
aWJsZUVuZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDc0NDQ3
KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBvc2l0aW9u
LmgiCisjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQwLDggKzQxLDYgQEAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOwogCi1lbnVtIFdyaXRpbmdEaXJlY3Rpb24geyBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbiwg
TGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uLCBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24g
fTsKLQogY2xhc3MgRWRpdGluZ1N0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8RWRpdGluZ1N0eWxl
PiB7CiBwdWJsaWM6CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzQ0NDcpCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMx
Miw3IEBAIGJvb2wgRWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUUKICAgICByZXR1
cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCgpOwogfQogCi1ib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQorYm9vbCBFZGl0b3I6OmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQogewog
ICAgIGlmICghY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjksMTIgKzMy
OSwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3RpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBj
YXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ6Ci0gICAgICAgIGNhc2Ug
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgRGlyZWN0
aW9uRm9yd2FyZDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKICAgICAgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50KCks
IGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0
OgorICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgICAgICBjYXNlIERpcmVjdGlv
bkxlZnQ6CiAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKG1fZnJh
bWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxs
UmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjEyNSw3ICsyMTI1LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogCiAgICAgICAgIC8v
IFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3RlciBmdXJ0aGVyLgogICAgICAgICBmcmFtZSgp
LT5zZWxlY3Rpb24oKS0+bW92ZVRvKGZyYW1lKCktPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAg
ICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCkBAIC0yNDE4LDExICsyNDE4LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3IKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFu
Z2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0KTsKICAgICAgICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9u
KCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFn
cmFwaEJvdW5kYXJpZXMpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSBy
ZWFzb24sIHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0
IHJlcGxhY2VtZW50CiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3NDQ0NykK
KysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5
LDE1IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWxJbmZvLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0Jl
aGF2aW9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yRGVsZXRlQWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRp
dG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKLSNpbmNsdWRlICJT
ZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaXNp
YmxlU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChfX09CSkNfXykKIGNsYXNzIE5TRGljdGlvbmFyeTsKQEAg
LTQzLDYgKzQ2LDcgQEAgdHlwZWRlZiBpbnQgTlNXcml0aW5nRGlyZWN0aW9uOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXI7CkBAIC0xNDUsNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckxhc3RFZGl0Q29tbWFuZCgpOwogCi0gICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCBraWxsUmlu
ZywgYm9vbCBpc1R5cGluZ0FjdGlvbik7CisgICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlz
VHlwaW5nQWN0aW9uKTsKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShi
b29sIHNtYXJ0RGVsZXRlKTsKICAgICBib29sIGRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMzIgKzMyNywzMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVE
ZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFj
a3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJE
ZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVt
ZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGVUb0VuZE9mTGluZShGcmEKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0
aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAg
Ly8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtl
IERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91
bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OCw3ICszNjgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlVG9FbmRPZlBhcmFncmFwCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBj
b21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEg
cGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdy
YXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzg5
LDEzICszODksMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSogZgog
CiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsK
ICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlcklu
dGVyZmFjZToKQEAgLTYwNiw0NyArNjA2LDQ3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4
dFdyaXRpbmdEaXJlY3QKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZv
cndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9y
d2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAg
IHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg0LDIw
MyArNjg0LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCB0cnVlKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25S
aWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
blJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERp
cmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3
YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIERvY3VtZW50
Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9u
Rm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQs
IFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwg
TGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBo
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExp
bmVHcmFudWxhcml0eSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVm
dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29y
ZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51
bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBE
aXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NDQ0
NykKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0SXNE
aXJlY3Rpb24KICAgICBtX2lzRGlyZWN0aW9uYWwgPSAhbV9mcmFtZSB8fCBtX2ZyYW1lLT5lZGl0
b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlvbkFzRGlyZWN0aW9uYWwoKSB8
fCBpc0RpcmVjdGlvbmFsOwogfQogCi12b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1v
ZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKGFsdGVyICE9IEFsdGVyYXRpb25F
eHRlbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTYyNiw4ICs2MjYsOCBAQCBzdGF0aWMgYm9vbCBp
c0JvdW5kYXJ5KFRleHRHcmFudWxhcml0eSBnCiB7CiAgICAgcmV0dXJuIGdyYW51bGFyaXR5ID09
IExpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFu
dWxhcml0eSA9PSBEb2N1bWVudEJvdW5kYXJ5OwogfSAgICAKLSAgICAKLWJvb2wgU2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlv
biwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCisKK2Jv
b2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rp
b25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wg
dXNlclRyaWdnZXJlZCkKIHsKICAgICBpZiAodXNlclRyaWdnZXJlZCkgewogICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyIHRyaWFsU2VsZWN0aW9uQ29udHJvbGxlcjsKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2
IEBAIGVudW0gRGlyZWN0aW9uYWxpdHlQb2xpY3kgeyBNYWtlTm9uRGlyZWMKIGNsYXNzIFNlbGVj
dGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIGVudW0g
RUFsdGVyYXRpb24geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OwotICAgIGVu
dW0gRURpcmVjdGlvbiB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJl
Y3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OwogICAgIGVudW0gQ3Vyc29yQWxpZ25PblNjcm9s
bCB7IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzIH07CiAKQEAgLTgzLDcgKzgyLDcgQEAg
cHVibGljOgogCiAgICAgRUFmZmluaXR5IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKTsgfQogCi0gICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIEVEaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOworICAg
IGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxh
cml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOwogICAgIGJvb2wgbW9kaWZ5KEVBbHRl
cmF0aW9uLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2Us
IEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQpOwogICAg
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJp
dHk7IH0KIApAQCAtMTEyLDggKzExMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcmV0UmVj
dE5lZWRzVXBkYXRlKGJvb2wgZmxhZyA9IHRydWUpOwogCiAgICAgdm9pZCBzZXRJc0RpcmVjdGlv
bmFsKGJvb2wpOwotICAgIHZvaWQgd2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIEVEaXJlY3Rp
b24pOwotICAgIAorICAgIHZvaWQgd2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIFNlbGVjdGlv
bkRpcmVjdGlvbik7CisKICAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
aW9uLmlzTm9uZSgpOyB9CiAgICAgYm9vbCBpc0NhcmV0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3Rpb24uaXNDYXJldCgpOyB9CiAgICAgYm9vbCBpc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb24uaXNSYW5nZSgpOyB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShy
ZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU5LDkgKzQ1OSw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChUZXgKIAogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsK
ICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAg
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsK
KyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICBpZiAoa2ls
bFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9u
KCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgYXJlYSBp
biBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBpdGVtLgpAQCAtNDg3
LDcgKzQ4Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKICAg
ICAgICAgICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHZpc2libGVTdGFydCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBzZWxlY3Rp
b24gYmFja3dhcmQgaW50byB0aGUgbGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwgaGFuZGxl
IHRoZSBtb3ZlLgotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNr
d2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVs
YXJpdHkpOwogICAgICAgICAvLyBJZiB0aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxlLCBz
ZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUgYW55dGhpbmcuCiAgICAgICAgIH0gZWxz
ZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFy
dCkpIHsKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKFBv
c2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkp
OwpAQCAtNTU2LDkgKzU1Niw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtl
eVByZXMKICAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBzdGFydCBv
ZiBhIGRvY3VtZW50LgogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAg
ICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgZ3JhbnVsYXJpdHkpOworICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgaWYgKGtpbGxSaW5n
ICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBl
bmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNTcz
LDcgKzU3Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXMKIAog
ICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBh
cmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9u
KCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9u
Lm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25G
b3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxl
dGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rp
b24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKSkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkocmV2
aXNpb24gNzQ0NDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBv
c2l0aW9uOwogCiBjb25zdCBFQWZmaW5pdHkgU0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RS
RUFNOworZW51bSBTZWxlY3Rpb25EaXJlY3Rpb24geyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rp
b25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKIAogY2xhc3MgVmlz
aWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvV3JpdGluZ0Rp
cmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2VkaXRpbmcvV3JpdGluZ0RpcmVjdGlvbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXcml0aW5nRGly
ZWN0aW9uX2gKKyNkZWZpbmUgV3JpdGluZ0RpcmVjdGlvbl9oCisKK2VudW0gV3JpdGluZ0RpcmVj
dGlvbiB7IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24sIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiB9OworCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsMTUgKzI5OCwxNSBAQCB2b2lkIERPTVNlbGVj
dGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAK
LSAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICBTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJl
Y3Rpb25TdHJpbmcsICJmb3J3YXJkIikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlv
bkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5n
LCAiYmFja3dhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJk
OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQi
KSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVm
dDsKKyAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uTGVmdDsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJyaWdodCIpKQotICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAgZGlyZWN0
aW9uID0gRGlyZWN0aW9uUmlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzQ29sbGFwc2VkKCkpCi0gICAgICAgIHNlbGVjdGlv
bi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLnRvTm9y
bWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQpJbmRleDogV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAJKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOTEsMTYgKzIzOTEsMTYgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+
Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIpOwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewot
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgKGlz
Q29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50
Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKLSAgICAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgKGlzQ29tbWFuZGVk
KSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCAoaXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFyeSA6
IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0gZWxzZSBpZiAoa2V5ID09ICJMZWZ0IikgewotICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5k
YXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0
ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8g
TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5
IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwgKGlzQ29tbWFuZGVkKSA/IExp
bmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgfSAgICAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
KyNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgogCkluZGV4OiBXZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
NzQ0OTMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5IEBACisyMDEwLTEyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVkaXRvci5oIGRv
ZXNuJ3QgbmVlZCB0byBpbmNsdWRlIFNlbGVjdGlvbkNvbnRyb2xsZXIuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0NDEKKworICAgICAgICBSZW5h
bWVkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gdG8gU2VsZWN0aW9uRGlyZWN0aW9u
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6ZGly
ZWN0aW9uOmdyYW51bGFyaXR5Ol0pOgorICAgICAgICBUYWtlcyBTZWxlY3Rpb25EaXJlY3Rpb24g
aW5zdGVhZCBvZiBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uLgorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIgZG9Db21wbGV0aW9uXSk6IENhbGxzIF9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9u
OlNlbGVjdGlvbkNvbnRyb2xsZXIuCisKIDIwMTAtMTItMjEgIENhbWVyb24gWndhcmljaCAgPHp3
YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwOCw3ICs3MDgsNyBAQCAtIChp
ZClfYWNjZXNzaWJpbGl0eVRyZWUKICNlbmRpZgogfQogCi0tIChET01SYW5nZSAqKV9yYW5nZUJ5
QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOihTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlv
bilhbHRlcmF0aW9uIGRpcmVjdGlvbjooU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbilk
aXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQorLSAoRE9N
UmFuZ2UgKilfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjooU2VsZWN0aW9uQ29udHJv
bGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJlY3Rpb246KFNlbGVjdGlvbkRpcmVjdGlv
bilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQogewog
ICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAg
ICAgIHJldHVybiBuaWw7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5h
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgJ
KHJldmlzaW9uIDc0NDQ3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIEBpbnRlcmZhY2UgV2ViRnJhbWUg
KFdlYkludGVybmFsKQogCiAtIChpZClfYWNjZXNzaWJpbGl0eVRyZWU7CiAKLS0gKERPTVJhbmdl
ICopX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVBbHRlcmF0aW9uKWFsdGVyYXRpb24gZGlyZWN0aW9uOihXZWJDb3JlOjpTZWxl
Y3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uKWRpcmVjdGlvbiBncmFudWxhcml0eTooV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5OworLSAoRE9NUmFuZ2UgKilfcmFuZ2VCeUFs
dGVyaW5nQ3VycmVudFNlbGVjdGlvbjooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFs
dGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlv
bilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFudWxh
cml0eTsKIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFdlYkNvcmU6OlJhbmdlKilyYW5n
ZTsKIC0gKERPTVJhbmdlICopX2NvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSlyYW5n
ZTsKIC0gKE5TUmFuZ2UpX2NvbnZlcnRET01SYW5nZVRvTlNSYW5nZTooRE9NUmFuZ2UgKilyYW5n
ZTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29u
dHJvbGxlci5tbQkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcg
QEAgLSAodm9pZClkb0NvbXBsZXRpb24KICAgICAgICAgV2ViRnJhbWUgKmZyYW1lID0gW19odG1s
VmlldyBfZnJhbWVdOwogICAgICAgICBET01SYW5nZSAqc2VsZWN0aW9uID0ga2l0KGNvcmUoZnJh
bWUpLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgICAgIERP
TVJhbmdlICp3aG9sZVdvcmQgPSBbZnJhbWUgX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rp
b246U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZAotICAgICAgICAgICAgZGly
ZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkIGdyYW51bGFyaXR5
OldvcmRHcmFudWxhcml0eV07CisgICAgICAgICAgICBkaXJlY3Rpb246RGlyZWN0aW9uQmFja3dh
cmQgZ3JhbnVsYXJpdHk6V29yZEdyYW51bGFyaXR5XTsKICAgICAgICAgRE9NUmFuZ2UgKnByZWZp
eCA9IFt3aG9sZVdvcmQgY2xvbmVSYW5nZV07CiAgICAgICAgIFtwcmVmaXggc2V0RW5kOltzZWxl
Y3Rpb24gc3RhcnRDb250YWluZXJdIG9mZnNldDpbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XV07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77258</attachid>
            <date>2010-12-22 13:58:28 -0800</date>
            <delta_ts>2010-12-22 14:16:48 -0800</delta_ts>
            <desc>Replaced all instances of SelectionController::Direction(\w+) by Direction in WebKit</desc>
            <filename>bug-51441-20101222135826.patch</filename>
            <type>text/plain</type>
            <size>63609</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDQ5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTUgQEAKKzIwMTAtMTItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWRp
dG9yLmggZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgU2VsZWN0aW9uQ29udHJvbGxlci5oCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQ0MQorCisgICAg
ICAgIFJlbW92ZWQgI2luY2x1ZGUgPFNlbGVjdGlvbi5oPiBmcm9tIEVkaXRvci5oLgorICAgICAg
ICBBbHNvIGV4dHJhY3RlZCBXcml0aW5nRGlyZWN0aW9uLmggZnJvbSBFZGl0aW5nU3R5bGUuaCBh
bmQgcmVuYW1lZCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uCisgICAgICAgIHRvIFNl
bGVjdGlvbkRpcmVjdGlvbiBhbmQgbW92ZWQgaXRzIGRlY2xhcmF0aW9uIGZyb20gU2VsZWN0aW9u
Q29udHJvbGxlci5oIHRvIFZpc2libGVTZWxlY3Rpb24uaAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46IFNpZ25hdHVyZSBjaGFuZ2VzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkZWQgV3JpdGluZ0RpcmVjdGlvbi5oCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSk6
IENoYW5nZSBkdWUgdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmg6IFJlbW92ZWQgV3JpdGluZ0RpcmVjdGlvbiBhbmQgaW5jbHVkZWQgV3JpdGlu
Z0RpcmVjdGlvbi5oCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKTogQ2hhbmdlIGR1ZSB0byBTZWxlY3Rp
b25EaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKTogRGl0dG8uCisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuaDogUmVtb3ZlZCBTZWxlY3Rpb25Db250cm9sbGVyLmg7IGFkZGVkIERv
Y3VtZW50TWFya2VyLmgsIFRpbWVyLmgsIFZpc2libGVTZWxlY3Rpb24uaAorICAgICAgICBhbmQg
V3JpdGluZ0RpcmVjdGlvbi5oOyBmb3J3YXJkIGRlY2xhcmVkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOiBDaGFuZ2UgZHVlIHRvIFNlbGVjdGlvbkRp
cmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21w
b3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZUZvcndhcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVU
b0JlZ2lubmluZ09mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0
ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVEZWxldGVUb0VuZE9mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVE
ZWxldGVXb3JkQmFja3dhcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxl
dGVXb3JkRm9yd2FyZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmRE
ZWxldGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUmlnaHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNl
bGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50
ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5k
TW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBh
cmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdo
dEVuZE9mTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRy
b2xsZXI6OndpbGxCZU1vZGlmaWVkKTogVGFrZXMgU2VsZWN0aW9uRGlyZWN0aW9uIGluc3RlYWQg
b2YgRURpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOiBD
aGFuZ2UgZHVlIHRvIFNlbGVjdGlvbkRpcmVjdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5
UHJlc3NlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uaDogQWRkZWQgU2VsZWN0aW9uRGlyZWN0aW9uLCByZW5hbWVkIGFuZCBtb3ZlZCBmcm9t
IEVEaXJlY3Rpb24KKyAgICAgICAgaW4gU2VsZWN0aW9uQ29udHJvbGxlci5oCisgICAgICAgICog
ZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6bW9kaWZ5KTogQ2hh
bmdlIGR1ZSB0byBTZWxlY3Rpb25EaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpET01TZWxl
Y3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9h
cmRTZWxlY3Rpb25Nb3ZlbWVudCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogSW5j
bHVkZXMgU2VsZWN0aW9uQ29udHJvbGxlci5oLgorCiAyMDEwLTEyLTIyICBEaXJrIFNjaHVsemUg
IDxrcml0QHdiZWtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJt
YW5uLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBfX1pON1dlYkNvcmUxOVNlbGVj
dGlvbkNvbnRyb2xsZXIxNXJldmVhCiBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIx
NnNldFNlbGVjdGVkUmFuZ2VFUE5TXzVSYW5nZUVOU185RUFmZmluaXR5RWIKIF9fWk43V2ViQ29y
ZTE5U2VsZWN0aW9uQ29udHJvbGxlcjIwc2V0U2VsZWN0aW9uRnJvbU5vbmVFdgogX19aTjdXZWJD
b3JlMTlTZWxlY3Rpb25Db250cm9sbGVyNWNsZWFyRXYKLV9fWk43V2ViQ29yZTE5U2VsZWN0aW9u
Q29udHJvbGxlcjZtb2RpZnlFTlMwXzExRUFsdGVyYXRpb25FTlMwXzEwRURpcmVjdGlvbkVOU18x
NVRleHRHcmFudWxhcml0eUViCitfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXI2bW9k
aWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1VGV4dEdy
YW51bGFyaXR5RWIKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjlzZWxlY3RBbGxF
dgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyQzFFUE5TXzVGcmFtZUViCiBfX1pO
N1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI1Zmx1c2hFdgpAQCAtNjk0LDExICs2OTQsMTEg
QEAgX19aTjdXZWJDb3JlNkVkaXRvcjE3aW5zZXJ0T3JkZXJlZExpc3RFdgogX19aTjdXZWJDb3Jl
NkVkaXRvcjE4Y29uZmlybUNvbXBvc2l0aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
NkVkaXRvcjE4Y29uZmlybUNvbXBvc2l0aW9uRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxOWNvdW50
TWF0Y2hlc0ZvclRleHRFUktOM1dURjZTdHJpbmdFUE5TXzVSYW5nZUVqamIKLV9fWk43V2ViQ29y
ZTZFZGl0b3IxOWRlbGV0ZVdpdGhEaXJlY3Rpb25FTlNfMTlTZWxlY3Rpb25Db250cm9sbGVyMTBF
RGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51bGFyaXR5RWJiCitfX1pON1dlYkNvcmU2RWRpdG9yMTlk
ZWxldGVXaXRoRGlyZWN0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51
bGFyaXR5RWJiCiBfX1pON1dlYkNvcmU2RWRpdG9yMTlpbnNlcnRVbm9yZGVyZWRMaXN0RXYKIF9f
Wk43V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlDU1NTdHlsZURl
Y2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IyMWlzU2VsZWN0
aW9uTWlzc3BlbGxlZEV2Ci1fX1pON1dlYkNvcmU2RWRpdG9yMjNzZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbkVOU18xNldyaXRpbmdEaXJlY3Rpb25FCitfX1pON1dlYkNvcmU2RWRpdG9yMjNzZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbkUxNldyaXRpbmdEaXJlY3Rpb24KIF9fWk43V2ViQ29yZTZFZGl0b3Iy
NGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRjb21wdXRl
QW5kU2V0VHlwaW5nU3R5bGVFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18xMEVkaXRBY3Rp
b25FCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc0
NDQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwNDEsNiArMzA0MSw3IEBACiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhG
QyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5
QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi87IH07CiAJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZE
NCAvKiBFZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkFCNkM2RDEy
NTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0
aW5nU3R5bGUuY3BwICovOyB9OworCQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGlu
Z0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJBRjNCMjMxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkQwQkY5MzEyQTQy
QkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3Bl
ZEV2ZW50UXVldWUuaCAqLzsgfTsKIAkJOUJEMEJGOTQxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3Bl
ZEV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICov
OyB9OwogCQk5RjBENkIyRTEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjBE
NkIyQzEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07
CkBAIC05MzY3LDYgKzkzNjgsNyBAQAogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1N0eWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdGluZ1N0eWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJBRjNCMjMxMkMxQTM5ODAwMDE0
QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV3JpdGluZ0RpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQw
QkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjBENkIyQzEyMUJGRUJBMDA2
QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTUwLDYgKzE1MTUyLDcgQEAKIAkJCQlBODgzREYyNjBGM0Qw
NDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oICovLAogCQkJCTkzMzA5REQ0MDk5RTY0
OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwICovLAogCQkJ
CTkzMzA5REQ1MDk5RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1h
bmQuaCAqLywKKwkJCQk5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlv
bi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBlZGl0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTIyMDk2LDYgKzIyMDk5LDcgQEAKIAkJCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZG
NkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMjI0
N0ExMENGQjhGRjAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QkFGM0IyNDEyQzFB
Mzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTIxMDgyNDVFNTkwMDFFOUFCQyAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2Vy
U2NvcGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzQ0NDcpCisrKyBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0MzgsNyArMjQzOCw3IEBAIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vz
c2liaWxpdHlSZW5kZXIKICAgICAvLyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlzaWJsZVBvcy4KICAg
ICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVBvcykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25SaWdodCwgTGlu
ZUJvdW5kYXJ5KTsKICAgICAKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc2VsZWN0
aW9uLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlz
aWJsZUVuZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDc0NDQ3
KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBvc2l0aW9u
LmgiCisjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQwLDggKzQxLDYgQEAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOwogCi1lbnVtIFdyaXRpbmdEaXJlY3Rpb24geyBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbiwg
TGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uLCBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24g
fTsKLQogY2xhc3MgRWRpdGluZ1N0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8RWRpdGluZ1N0eWxl
PiB7CiBwdWJsaWM6CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzQ0NDcpCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMx
Miw3IEBAIGJvb2wgRWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUUKICAgICByZXR1
cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCgpOwogfQogCi1ib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQorYm9vbCBFZGl0b3I6OmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQogewog
ICAgIGlmICghY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjksMTIgKzMy
OSwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3RpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBj
YXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ6Ci0gICAgICAgIGNhc2Ug
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgRGlyZWN0
aW9uRm9yd2FyZDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKICAgICAgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50KCks
IGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0
OgorICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgICAgICBjYXNlIERpcmVjdGlv
bkxlZnQ6CiAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKG1fZnJh
bWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxs
UmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjEyNSw3ICsyMTI1LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogCiAgICAgICAgIC8v
IFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3RlciBmdXJ0aGVyLgogICAgICAgICBmcmFtZSgp
LT5zZWxlY3Rpb24oKS0+bW92ZVRvKGZyYW1lKCktPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAg
ICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCkBAIC0yNDE4LDExICsyNDE4LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3IKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFu
Z2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0KTsKICAgICAgICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9u
KCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFn
cmFwaEJvdW5kYXJpZXMpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSBy
ZWFzb24sIHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0
IHJlcGxhY2VtZW50CiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3NDQ0NykK
KysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5
LDE1IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWxJbmZvLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0Jl
aGF2aW9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yRGVsZXRlQWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRp
dG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKLSNpbmNsdWRlICJT
ZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaXNp
YmxlU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChfX09CSkNfXykKIGNsYXNzIE5TRGljdGlvbmFyeTsKQEAg
LTQzLDYgKzQ2LDcgQEAgdHlwZWRlZiBpbnQgTlNXcml0aW5nRGlyZWN0aW9uOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXI7CkBAIC0xNDUsNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckxhc3RFZGl0Q29tbWFuZCgpOwogCi0gICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCBraWxsUmlu
ZywgYm9vbCBpc1R5cGluZ0FjdGlvbik7CisgICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlz
VHlwaW5nQWN0aW9uKTsKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShi
b29sIHNtYXJ0RGVsZXRlKTsKICAgICBib29sIGRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMzIgKzMyNywzMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVE
ZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFj
a3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJE
ZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVt
ZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGVUb0VuZE9mTGluZShGcmEKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0
aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAg
Ly8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtl
IERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91
bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OCw3ICszNjgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlVG9FbmRPZlBhcmFncmFwCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBj
b21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEg
cGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdy
YXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzg5
LDEzICszODksMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSogZgog
CiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsK
ICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlcklu
dGVyZmFjZToKQEAgLTYwNiw0NyArNjA2LDQ3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4
dFdyaXRpbmdEaXJlY3QKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZv
cndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9y
d2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAg
IHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg0LDIw
MyArNjg0LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCB0cnVlKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25S
aWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
blJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERp
cmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3
YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIERvY3VtZW50
Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9u
Rm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQs
IFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwg
TGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBo
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExp
bmVHcmFudWxhcml0eSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVm
dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29y
ZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51
bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBE
aXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NDQ0
NykKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0SXNE
aXJlY3Rpb24KICAgICBtX2lzRGlyZWN0aW9uYWwgPSAhbV9mcmFtZSB8fCBtX2ZyYW1lLT5lZGl0
b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlvbkFzRGlyZWN0aW9uYWwoKSB8
fCBpc0RpcmVjdGlvbmFsOwogfQogCi12b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1v
ZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKGFsdGVyICE9IEFsdGVyYXRpb25F
eHRlbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTYyNiw4ICs2MjYsOCBAQCBzdGF0aWMgYm9vbCBp
c0JvdW5kYXJ5KFRleHRHcmFudWxhcml0eSBnCiB7CiAgICAgcmV0dXJuIGdyYW51bGFyaXR5ID09
IExpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFu
dWxhcml0eSA9PSBEb2N1bWVudEJvdW5kYXJ5OwogfSAgICAKLSAgICAKLWJvb2wgU2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlv
biwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCisKK2Jv
b2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rp
b25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wg
dXNlclRyaWdnZXJlZCkKIHsKICAgICBpZiAodXNlclRyaWdnZXJlZCkgewogICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyIHRyaWFsU2VsZWN0aW9uQ29udHJvbGxlcjsKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2
IEBAIGVudW0gRGlyZWN0aW9uYWxpdHlQb2xpY3kgeyBNYWtlTm9uRGlyZWMKIGNsYXNzIFNlbGVj
dGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIGVudW0g
RUFsdGVyYXRpb24geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OwotICAgIGVu
dW0gRURpcmVjdGlvbiB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJl
Y3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OwogICAgIGVudW0gQ3Vyc29yQWxpZ25PblNjcm9s
bCB7IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzIH07CiAKQEAgLTgzLDcgKzgyLDcgQEAg
cHVibGljOgogCiAgICAgRUFmZmluaXR5IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKTsgfQogCi0gICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIEVEaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOworICAg
IGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxh
cml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOwogICAgIGJvb2wgbW9kaWZ5KEVBbHRl
cmF0aW9uLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2Us
IEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQpOwogICAg
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJp
dHk7IH0KIApAQCAtMTEyLDggKzExMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcmV0UmVj
dE5lZWRzVXBkYXRlKGJvb2wgZmxhZyA9IHRydWUpOwogCiAgICAgdm9pZCBzZXRJc0RpcmVjdGlv
bmFsKGJvb2wpOwotICAgIHZvaWQgd2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIEVEaXJlY3Rp
b24pOwotICAgIAorICAgIHZvaWQgd2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24sIFNlbGVjdGlv
bkRpcmVjdGlvbik7CisKICAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
aW9uLmlzTm9uZSgpOyB9CiAgICAgYm9vbCBpc0NhcmV0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3Rpb24uaXNDYXJldCgpOyB9CiAgICAgYm9vbCBpc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb24uaXNSYW5nZSgpOyB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShy
ZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU5LDkgKzQ1OSw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChUZXgKIAogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsK
ICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAg
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsK
KyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICBpZiAoa2ls
bFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9u
KCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgYXJlYSBp
biBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBpdGVtLgpAQCAtNDg3
LDcgKzQ4Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKICAg
ICAgICAgICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHZpc2libGVTdGFydCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBzZWxlY3Rp
b24gYmFja3dhcmQgaW50byB0aGUgbGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwgaGFuZGxl
IHRoZSBtb3ZlLgotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNr
d2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVs
YXJpdHkpOwogICAgICAgICAvLyBJZiB0aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxlLCBz
ZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUgYW55dGhpbmcuCiAgICAgICAgIH0gZWxz
ZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFy
dCkpIHsKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKFBv
c2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkp
OwpAQCAtNTU2LDkgKzU1Niw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtl
eVByZXMKICAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBzdGFydCBv
ZiBhIGRvY3VtZW50LgogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAg
ICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgZ3JhbnVsYXJpdHkpOworICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgaWYgKGtpbGxSaW5n
ICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBl
bmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNTcz
LDcgKzU3Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXMKIAog
ICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBh
cmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9u
KCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9u
Lm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25G
b3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxl
dGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rp
b24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKSkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkocmV2
aXNpb24gNzQ0NDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBv
c2l0aW9uOwogCiBjb25zdCBFQWZmaW5pdHkgU0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RS
RUFNOworZW51bSBTZWxlY3Rpb25EaXJlY3Rpb24geyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rp
b25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKIAogY2xhc3MgVmlz
aWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvV3JpdGluZ0Rp
cmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2VkaXRpbmcvV3JpdGluZ0RpcmVjdGlvbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXcml0aW5nRGly
ZWN0aW9uX2gKKyNkZWZpbmUgV3JpdGluZ0RpcmVjdGlvbl9oCisKK2VudW0gV3JpdGluZ0RpcmVj
dGlvbiB7IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24sIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiB9OworCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsMTUgKzI5OCwxNSBAQCB2b2lkIERPTVNlbGVj
dGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAK
LSAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICBTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJl
Y3Rpb25TdHJpbmcsICJmb3J3YXJkIikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlv
bkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5n
LCAiYmFja3dhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJk
OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQi
KSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVm
dDsKKyAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uTGVmdDsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJyaWdodCIpKQotICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAgZGlyZWN0
aW9uID0gRGlyZWN0aW9uUmlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzQ29sbGFwc2VkKCkpCi0gICAgICAgIHNlbGVjdGlv
bi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLnRvTm9y
bWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQpJbmRleDogV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAJKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOTEsMTYgKzIzOTEsMTYgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+
Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIpOwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewot
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgKGlz
Q29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50
Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKLSAgICAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgKGlzQ29tbWFuZGVk
KSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCAoaXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFyeSA6
IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0gZWxzZSBpZiAoa2V5ID09ICJMZWZ0IikgewotICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5k
YXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0
ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8g
TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5
IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwgKGlzQ29tbWFuZGVkKSA/IExp
bmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgfSAgICAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
KyNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgogCkluZGV4OiBXZWJLaXQvZWZs
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24g
NzQ1MDIpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEwLTEyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVkaXRvci5oIGRv
ZXNuJ3QgbmVlZCB0byBpbmNsdWRlIFNlbGVjdGlvbkNvbnRyb2xsZXIuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0NDEKKworICAgICAgICBSZW5h
bWVkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gdG8gU2VsZWN0aW9uRGlyZWN0aW9u
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQp
OgorCiAyMDEwLTEyLTIyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDc0NDQ3KQor
KysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDMsMjUgKzM0MywyNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxl
RWRpdGluZ0tleWJvCiAgICAgICAgIHN3aXRjaCAoa2V5RXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5
Q29kZSgpKSB7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKICAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LAotICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0
LAorICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25MZWZ0LAogICAgICAgICAgICAgICAgICAg
ICBrZXlFdmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksCiAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGNhc2UgVktfUklHSFQ6CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKLSAg
ICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsCisg
ICAgICAgICAgICAgICAgICAgIERpcmVjdGlvblJpZ2h0LAogICAgICAgICAgICAgICAgICAgICBr
ZXlFdmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJp
dHksCiAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGNhc2UgVktfVVA6CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKLSAgICAgICAg
ICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCisgICAg
ICAgICAgICAgICAgICAgIERpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAgICBr
ZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJp
dHksCiAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGNhc2UgVktfRE9XTjoKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAotICAgICAg
ICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAorICAg
ICAgICAgICAgICAgICAgICBEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICBr
ZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJp
dHksCiAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlr
dS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0NTAyKQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEyLTIyICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVkaXRvci5oIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIFNlbGVjdGlvbkNv
bnRyb2xsZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTE0NDEKKworICAgICAgICBSZW5hbWVkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rp
b24gdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6
OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDEwLTEwLTI4ICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4
OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5j
cHAJKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDM2ICsyNTMsMzYgQEAgdm9p
ZCBFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdgogICAgIGlmIChzdGFydC0+aXND
b250ZW50RWRpdGFibGUoKSkgewogICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1
YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkJhY2t3YXJkLAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDog
Q2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVktfREVMRVRFOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCisgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZl
bnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0xFRlQ6CiAgICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hh
cmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgogICAg
ICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8g
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25SaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5
IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX1VQOgog
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gUGFyYWdy
YXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFZLX0RPV046CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQt
PnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uRm9yd2FyZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgp
ID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0NTAyKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMi0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFZGl0b3IuaCBkb2Vzbid0IG5lZWQgdG8gaW5jbHVkZSBTZWxlY3Rpb25Db250cm9sbGVyLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDQxCisK
KyAgICAgICAgUmVuYW1lZCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIHRvIFNlbGVj
dGlvbkRpcmVjdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOlNlbGVjdGlvbkNv
bnRyb2xsZXI6OmRpcmVjdGlvbjpncmFudWxhcml0eTpdKToKKyAgICAgICAgVGFrZXMgU2VsZWN0
aW9uRGlyZWN0aW9uIGluc3RlYWQgb2YgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbi4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyIGRvQ29tcGxldGlvbl0pOiBDYWxscyBfcmFuZ2VCeUFsdGVyaW5nQ3Vy
cmVudFNlbGVjdGlvbjpTZWxlY3Rpb25Db250cm9sbGVyLgorCiAyMDEwLTEyLTIxICBDYW1lcm9u
IFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDc0NDQ3KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MDgsNyAr
NzA4LDcgQEAgLSAoaWQpX2FjY2Vzc2liaWxpdHlUcmVlCiAjZW5kaWYKIH0KIAotLSAoRE9NUmFu
Z2UgKilfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjooU2VsZWN0aW9uQ29udHJvbGxl
cjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJlY3Rpb246KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVEaXJlY3Rpb24pZGlyZWN0aW9uIGdyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVs
YXJpdHkKKy0gKERPTVJhbmdlICopX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uKWFsdGVyYXRpb24gZGlyZWN0aW9uOihTZWxl
Y3Rpb25EaXJlY3Rpb24pZGlyZWN0aW9uIGdyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJpdHkpZ3Jh
bnVsYXJpdHkKIHsKICAgICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKQogICAgICAgICByZXR1cm4gbmlsOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVJbnRlcm5hbC5oCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBAaW50ZXJm
YWNlIFdlYkZyYW1lIChXZWJJbnRlcm5hbCkKIAogLSAoaWQpX2FjY2Vzc2liaWxpdHlUcmVlOwog
Ci0tIChET01SYW5nZSAqKV9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOihXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbilhbHRlcmF0aW9uIGRpcmVjdGlvbjoo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbilkaXJlY3Rpb24gZ3JhbnVs
YXJpdHk6KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFudWxhcml0eTsKKy0gKERPTVJhbmdl
ICopX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVBbHRlcmF0aW9uKWFsdGVyYXRpb24gZGlyZWN0aW9uOihXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24pZGlyZWN0aW9uIGdyYW51bGFyaXR5OihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkpZ3JhbnVsYXJpdHk7CiAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihXZWJDb3Jl
OjpSYW5nZSopcmFuZ2U7CiAtIChET01SYW5nZSAqKV9jb252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2U7CiAtIChOU1JhbmdlKV9jb252ZXJ0RE9NUmFuZ2VUb05TUmFuZ2U6KERP
TVJhbmdlICopcmFuZ2U7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRp
b25Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJUZXh0
Q29tcGxldGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDc0NDQ3KQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTczLDcgKzE3Myw3IEBAIC0gKHZvaWQpZG9Db21wbGV0aW9uCiAgICAgICAgIFdlYkZyYW1lICpm
cmFtZSA9IFtfaHRtbFZpZXcgX2ZyYW1lXTsKICAgICAgICAgRE9NUmFuZ2UgKnNlbGVjdGlvbiA9
IGtpdChjb3JlKGZyYW1lKS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkp
OwogICAgICAgICBET01SYW5nZSAqd2hvbGVXb3JkID0gW2ZyYW1lIF9yYW5nZUJ5QWx0ZXJpbmdD
dXJyZW50U2VsZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQKLSAg
ICAgICAgICAgIGRpcmVjdGlvbjpTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2Fy
ZCBncmFudWxhcml0eTpXb3JkR3JhbnVsYXJpdHldOworICAgICAgICAgICAgZGlyZWN0aW9uOkRp
cmVjdGlvbkJhY2t3YXJkIGdyYW51bGFyaXR5OldvcmRHcmFudWxhcml0eV07CiAgICAgICAgIERP
TVJhbmdlICpwcmVmaXggPSBbd2hvbGVXb3JkIGNsb25lUmFuZ2VdOwogICAgICAgICBbcHJlZml4
IHNldEVuZDpbc2VsZWN0aW9uIHN0YXJ0Q29udGFpbmVyXSBvZmZzZXQ6W3NlbGVjdGlvbiBzdGFy
dE9mZnNldF1dOwogCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0NTAyKQorKysgV2ViS2l0L3F0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEyLTIyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVkaXRvci5oIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIFNlbGVjdGlv
bkNvbnRyb2xsZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTE0NDEKKworICAgICAgICBSZW5hbWVkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJl
Y3Rpb24gdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDEwLTEyLTIwICBCZW5qYW1pbiBQb3VsYWluICA8YmVu
amFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cAkocmV2aXNpb24gNzQ0NDcpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsMTEgKzM5MSwxMSBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQK
ICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAg
ICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKKyAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNr
d2FyZCwKICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAg
IENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBWS19MRUZUOgpJbmRleDogV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDUwMikKKysrIFdl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0xMi0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFZGl0b3IuaCBkb2Vzbid0IG5lZWQg
dG8gaW5jbHVkZSBTZWxlY3Rpb25Db250cm9sbGVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDQxCisKKyAgICAgICAgUmVuYW1lZCBTZWxlY3Rp
b25Db250cm9sbGVyOjpFRGlyZWN0aW9uIHRvIFNlbGVjdGlvbkRpcmVjdGlvbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAx
MC0xMC0yOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiA3NDQ0NykKKysrIFdlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1MywyNSArMzUzLDI1IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVk
aXRpbmdLZXkKICAgICAgICAgc3dpdGNoIChrZXlFdmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpIHsKICAgICAgICAgY2FzZSBWS19MRUZUOgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCi0g
ICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsCisg
ICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbkxlZnQsCiAgICAgICAgICAgICAgICAgICAgIGtl
eUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0
eSwKICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgY2FzZSBWS19SSUdIVDoKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAotICAgICAg
ICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgRGlyZWN0aW9uUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2
ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwK
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBWS19VUDoKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAotICAgICAgICAgICAg
ICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKKyAgICAgICAg
ICAgICAgICAgICAgRGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2
ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwK
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBWS19ET1dOOgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
Znkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCi0gICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCisgICAgICAg
ICAgICAgICAgICAgIERpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2
ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwK
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
</data>
<flag name="review"
          id="68326"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>